2021年安徽省滁州市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2021年安徽省滁州市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2021年安徽省滁州市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2021年安徽省滁州市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2021年安徽省滁州市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021年安徽省滁州市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下程序输出的结果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

2.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量().

A.为全局变量,在本程序文件范围内有效

B.为局部变量,只在该函数内有效

C.为局部变量,只在该复合语句中有效

D.定义无效,为非法变量

3.

4.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

A.0B.1C.11D.3

5.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A.A.必须是逻辑值

B.必须是整数值

C.必须是正数

D.可以是任意合法的数值

6.若有以下定义和语句:#include<stdio.h>charsl[10]=“abcd!”,*s2=“\nl23\\”;printf(“%d%d\n”,strlen(s1),strlen(s2));程序的运行结果是()。

A.107B.105C.55D.58

7.对于静态表的顺序查找法,若在表头设置监视哨,则正确的查找方式为()A.从第0个元素往后查找该数据元素

B.从第1个元素往后查找该数据元素

C.从第n个元素往开始前查找该数据元素

D.与查找顺序无关

8.以下程序的输出结果是______。

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

9.设有一组关键字序列{5,8,14,20,31,55,78,81,93,97,111},使用二分(折半)法查找关键字93最少需要进行多少次比较()A.2B.3C.4D.5

10.下列定义中,不正确的有______。

A.#definePI3.141592

B.#defineS345;

C.intmax(x,y);

D.staticcharc;intx,y;{...}

11.以下程序的输出结果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

12.字符串"alibaba"的二进制哈夫曼编码有多少位()

A.11B.12C.13D.14

13.以下程序的输出结果是()。unionmyun{struct{intx,y,z;)u;intk:}a;main{a.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%d\n",a.u.x);}A.4B.5C.6D.0

14.在深度为5的满二叉树叶中,叶子结点的个数为()。

A.32B.31C.16D.15

15.

16.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序运行后的输出结果是()。

A.y=0B.y=-1C.y=1D.while构成无限循环

17.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

18.

19.设有如下类型说明语句:typedefstruct{intnum;struct{inty,m,d;}date;}PER;则以下定义结构体数组并赋初值的语句中错误的是()。

A.PERst[2]={{1001},2008,8,1,{1002},2006,5,20};

B.PERst[2]={1001,{2008,8,1},1002,{2006,5,20}};

C.PERst[2]={{1001,2008,8,1},{1002,2006,5,20}};

D.PERst[2]={1001,2008,8,1,1002,2006,5,20};

20.有以下程序:#include<stdio.h>main(){chara==‘0’,b=‘A’;inti;for(i=1;i<6;i++)if(i%2==0)putchar(a+i);elseputchar(b+i);}程序运行后的输出结果是()。

A.A2A3BB.2B4DFC.B4CD7D.B2D4F

二、2.填空题(20题)21.有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

请填空,使下面程序段的功能与之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s=%f\n\n",s);

22.以下程序的输出结果是【】。

main()

{charc=′z′;

printf("%c",c-25);}

23.某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结点。

24.以下程序运行后的输出结果是【】。

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

printf("%d\n",x);

}

25.数据流图的类型有【】和事务型。

26.函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

27.软件测试的方法有动态测试、静态测试和【】13种。

28.不改变关系表中的属性个数但能减少元组个数的是()。

29.下面程序的功能是求整数m、n的最大公约数,请填空。

main()

{intm,n,r;

scanf("%d,%d",&m,&n);

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

30.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

charsi10],ti10];

gets(t);

for(i=0;i<2;i++)

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

printf("%s\n",t);

}

程序运行后,从键盘上输入(<CR>代表回车符):CDEF<CR>BADEF<CR>QTHRG<CR>,则程序的输出结果是______。

31.下列程序的输出结果是______。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

}

32.无论对于顺序存储,还是链接存储的栈和队列来说,进行插入或删除运算的时间复杂性均相同,则为【】。

33.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

34.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句()。

35.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

36.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

37.以下程序运行后输出结果是【】。

#include<stdio,h>

voidswap(y)

{intt;

t=x;x=y;y=t:printf("%d%d",x,y);

}

main()

{ihta=3,b=4:

swap(a,b);prinff("%d%d",a,b);

}

38.算法的基本特征是可行性、确定性、【】和拥有足够的情报。

39.数据库系统的主要特点为数据集成性、数据的高______和低冗余性、数据独立性和数据统一管理和控制。

40.一个算法的空间复杂度是指该算法所耗费的【】。

三、1.选择题(20题)41.将E-R图转换到关系模式时,实体与实体间的联系可以表示成()。

A.属性B.关系C.键D.域

42.有以下程序voldsoru(inta[],intn){inti,i,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[i];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10),i;sore(aa+2,5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是

A.1,2,3,4,5,6,7,8,9,10,

B.1,2,7,6,3,4,5,8,9,10,

C.1,2,7,6,5,4,3,8,9,10,

D.1,2,9,8,7,6,5,4,3,10,

43.以下能正确定义二维数组的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

44.在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送()。

A.调用语句B.命令C.口令D.消息

45.软件调试的目的是______。

A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能

46.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"}*p=str;printf("%\n",strlen(p+20));}程序运行后的输出结果是

A.0B.5C.7D.20

47.结构化程序设计方法的3种基本控制结构中不包括

A.循环结构B.递归结构C.顺序结构D.选择结构

48.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:printf("*\n");casec:printf("**\n");}

49.下列描述中正确的是()。

A.在C语言程序中预处理是指完成宏替换和文件包含指定的文件的调用

B.预处理指令只能位于C源程序文件的首部

C.预处理命令可以放在程序中的任何位置

D.预处理命令结尾需要加分号

50.有以下程序:inta=2;intf(int*a){return(*a)++;)main(){ints=0;{inta=5;s+=f(&a);}s+=f(&a);printf("%d\n',s);}执行后输出结果是()。

A.10B.9C.7D.8

51.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

52.若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是

A.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3

53.下列选项中合法的赋值语句是()。

A.a-b=34B.a=34,b=34C.i-1;D.m=(int)(x+y);

54.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行的结果是()。

A.234B.432C.23D.4534554334344523

55.数据库系统的核心是()。

A.数据模型B.数据库管理系统C.数据库D.数据库管理员

56.第

13

设有程序段

intk=10;

while(k=0)k=k-1;

则下面描述中正确的是A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

57.下列程序的输出结果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}

A.123B.234C.223D.233

58.不能把字符串“Hello!”赋给数组b的语句是________。

A.charb[10]={'H','e','1','l','o','!'};

B.chsrb[10]={'h','e','1','1','o','!'};

C.charb[10];strcpy(b,"Hello!");

D.chgrb[10]="Hello!";

59.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

60.若执行下列的程序时,从键盘上输入1和2,则输出结果是()。#include<stdio.h>main(){inta,b,s;scanf("%d%d",&a,&b);s=a;if(a<b)s=b;S=S*S,printf("%d\n",s);}

A.1B.4C.2D.9

四、选择题(20题)61.

62.有以下程序:

执行后输出结果是()。

A.58B.56C.45D.24

63.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||164.在长度为n的有序线性表中进行二分法查找,最坏情况下需要比较的次数是()。A.O(n)B.0(n2)C.O(log2n)D.O(nlog2n)

65.在数据管理技术发展的三个阶段中,数据共享最好的是()。

A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同

66.

67.下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是()。

A.选择B.连接C.投影D.并

68.若有以下的说明和语句,则在执行for语句后,’(*(pt+1)+2)表示的数组元素是()。

intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A.A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]69.若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main

{inti,j=50,a[]=(7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}A.i=1;i<4;++i

B.i=l;i<3;++ic.i="4;i">2;i--

D.i=2;i<4;++i

70.

71.设有下列二叉树:

对此二叉树中序遍历的结果为()。

A.ACBDEFB.DEBFCAC.ABDECFD.DBEAFC

72.以下程序段中,与语句“k—a>b?(b>c?1:O):0;”功能相同的是()。

A.if(a>b)(b>c)k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b>c)k=1;

D.if(a>b)k=1;elseif(b<=c)k=1;elsek=0:

73.

74.在一个C程序中

A.main函数必须出现在所有的函数之前B.main函数可以在任何地方出现

C.main函数必须出现在所有的函数之后D.main函数必须出现在固定位置

75.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

76.下列程序的输出结果是

intb=2;

intfunc(int*a)

{b+=*a;return(b);}

main()

{inta=2,res=2;

res+=func(&a);

printf("%d\n",res);

}A.2

B.4C.6

D.8

77.下列数据模型中,具有坚实理论基础的是()。

A.层次模型B.网状模型C.关系模型D.以上3个都是

78.

79.

80.以下程序的运行结果是

#defineMIN(x,y)(x)<(y)?(x):(y)

main()

{

inti=10,j=15,k;

k=10*MIN(i,j);

printf("%d\n",k);

}

A.10B.15

C.100D.150

五、程序改错题(1题)81.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数proc()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。

例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串中的内容应当是“ABCDEFG”。

注意:部分源程序给出如下。

请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

voidfun(chara)

{

voidmain

{

chars[81];

print{("Enterastring:\n");

gets(s):

fun(S);

printf("Thestringafterdeleted:\n");

puts(s);

}

参考答案

1.D当k=1时,引用的是二维数组元素w[1][1],值为字符串“FGH”;当k=2时,引用的是数组元素w[2][2],即字符串“KL”;当k=3时,结束程序的执行。注意:字符串数组的定义。

2.C

3.B

4.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。

5.D

6.Cstrlen函数返回字符串的长度。求字符串长度时,遇到结束标识‘\\0’为止,但是长度不包括结束标识。字符数组s1的后5个元素没有赋值,都为‘\\0’,即“abcd!”后为‘\\0’,所以“strlen(s1)”的值为5。字符指针s2所指向的字符串中,“\\n”为转义字符,代表换行符,是1个字符,“\\\\”也为转义字符,代表“\\”,也是1个字符,其后为字符串结束标识‘\\0’,所以“strlen(s2)”的值也为5。故本题答案为C选项。

7.C

8.B

9.A

10.C

11.C解析:本题考查按位与“&”。因为1&1=1,0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。

12.C

13.D因为a是结构体变量,最后一次输入的值为结构体中的值,即a中的任何一个值都为0。

14.C根据二叉树的性质及定义,一棵深度为k且有2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点。因此深度为5的满二叉树的叶子结点数为25-1=16个。

15.B

16.B执行“y--”直到值为0。退出循环。由于“y--”是后缀自减运算,先使用再自减,因此退出循环时,y的值为-1。故本题答案为B选项。

17.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

18.C

19.A结构体PER类型定义了两个成员:num为整型,date为嵌套的结构体类型。初始化时,成员值的顺序必须与成员定义的顺序相同,num必须是整数,date必须是用花括号标注的嵌套的3个整数。选项A中,{1001}和{1002}都不是整数,所以选项A错误。故本题答案为A选项。

20.D程序首先定义字符变量a并赋初值‘0’,定义字符变量b并赋初值‘A’。然后执行for循环,当i为偶数时,输出字符“a+i”;当i为奇数时,输出字符“b+i”。因为数字和字母的ASCII值都是按顺序递增的,所以本题输出为B2D4F。故本题答案为D选项。

21.k<=nk++k<=n\r\nk++解析:本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环则没有,故需在循环体中增加改变k数值的语句“k++;”。

22.aa解析:'z'的ASCII码值为122,经过c-25运算后,得97,以字符形式输出是a。

23.n+1n+1解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为0的结点多一个。

24.11解析:因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。

25.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

26.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表达式1+1/(2*2)+1/(3*3)+...+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)

n

即:∑1÷(i×i)

i=1

对应的C语言的表达式s=s+1.0/(i*i)。注:必须要写成1.0的形式,否则1/(i,i)返回值为其值截尾取整,即恒为0。

27.正确性测试正确性测试

28.选择选择解析:关系数据库的专门关系运算包括选择、投影和连接3种,其中选择不改变关系表中的属性个数但能减少元组个数。

29.m<n或n>mr或r!=0m<n或n>m\r\nr或r!=0解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

30.QTHRGQTHRG解析:strcmp(t,s)函数用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0;若t<s,则函数值小于0。strcpy(t,s)函数的功能是把字符数组,所指字符串的内容复制到字符数组t所指的存储空间中。

本题中,t[10]='CDEF'.第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG”,if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指的存储空间中,然后输出字符数组t。

31.44解析:本题考查函数的递归调用.在主函数中第1次调用于函数是调用的fun(11),返回11-fun(9);第2次调用于函数是调用的fun(9),返回9-fun(7);第3次调用于函数是调用的fun(7),返回7-fun(5):第4次调用子函数是调用的fun(5),返回5-fun(3):第5次调用于函数是调用的fun(3),返回3-fun(1):第6次调用于函数是调用的fun(1),返回3。总的返回值是:11-(9-(7-(5-(3-3))))=4.

32.O(2)

33.00解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

34.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函数的一般格式为:“printf(格式控制,输出表列)”。

35.黑箱或黑盒黑箱或黑盒解析:黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测以及因果图等。

36.c>='a'&&c<='z'c>='a'&&c<='z'解析:小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c>='a'&&c<='z'判断是不是小写字母;c!='\\n'判断是用换行符结束循环。

37.43344334解析:程序将变量a,b的值传给函数swap的形参x,y,并在函数中对x,y的值进行交换,所以在函数swap中输出x,y的值4,3,由于c程序的函数是僧传递,实参a,b的值不会随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4。

38.有穷性有穷性解析:算法有四个基本特征:可行性、确定性、有穷性和拥有足够的情报。

39.共享性共享性解析:数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。

40.存储空间存储空间解析:空间复杂度是指算法在执行过程中临时占用的存储空间大小,包括:①算法本身所占用的存储空间;②算法的输入输出数据所占用的存储空间;③算法在运行过程中临时占用的存储空间。

41.B解析:将E-R图转换成指定RDBMS中的关系模式是数据库逻辑设计的主要工作。从E-R图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。

42.C解析:先看sort()函数,它没有返回值,有两个参数,一个int型数组和一个int型变量。在函数中是一个;重循环,外循环变量i从0递增到n-2,内循环变量j从i+l递增到n-1。内循环体是一条if语句“如果a[i]

43.B解析:(1)二维数组的定义

二维数组的定义方式为:类型说明符数组名[常量表达式][常量表达式]。

二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。

(2)二维数组元素的引用

二维数组元素的表示形式为:数组名[下标][下标],下标可以是整型常量或整型表达式其范围为:0~(常量表达式-1)。

(3)二维数组的初始化

可以用以下方法对二维数组元素初始化:

①分行给二维数组赋初值

例如:inta[2][2]={{1,2},{3,4}};

这种赋值方式比较直观,把第1个大括号内的数据赋给第1行的元素,第2个大括号内的数据赋给第2行的元素,即按行赋值。

②可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初值。

③可以对部分元素赋初值,没有初始化的元素值为0。

④如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。

44.D解析:在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。

45.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。

46.C解析:本题考核的知识点是二维数组的初始化及库函数strlen()的应用。主函数中定义了一个二维字符数组并初始化,初始化后的结果为str[0]='Hello',str[1]='Beijing',然后定义一个字符指针变量p并让它指向数组的首地址,即指向str[0],而在C语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故p+20后指针指向str[1],所以strlen(P+20);返回的是str[1]中的字符串的长度,即Beijing的长度为7,所以最后输出的值为7,所以,4个选项中选项C符合题意。

47.B解析:本题考查了程序的基本结构。程序由一些基本结构组成。任何一个大型的程序都由3种基本结构组成,由这些基本结构顺序的构成了一个结构化的程序。这3种基本结构为:顺序结构、选择结构和循环结构。

48.C解析:switch后的括号中只能是整型或字符型表达式,选项A中使用的是浮点型变量x,故不正确。选项B在switch的括号后面多了一个分号,故也不正确。switch的case标号后只能是常量或常量表达式,而不能是变量,所以选项D也不正确。故应该选择C。

49.C解析:本题考查预处理命令的特点,编译预处理命令的特点:①为了区别一般的语句,预处理命令行都必须以“#”号开始,结尾不加分号;②预处理命令可以放在程序中的任何位置;③在程序中凡是以“#”号开始的语句行都是预处理命令行。

50.C解析:本题中定义了一个全局变量a和局部变量a。在主函数中定义一个整型变量s并赋初值为0,接着定义了一个局部变量a并赋值为5,由于该局部变量的和全局变量a同名,全局变量在复合语句中将不起作用,然后调用函数f(&a)(该函数的作用是返回存储变量a中的值,并让该值加1,分析程序可知返回值为5,并让a值加1变为6),并将返回值加到s中。此时s的值为5,再执行该复合语句外的其他语句,同样调用函数f(&a),传递的参数是全局变量a,故其返回值为2,加到s中后s的值变为7,最后输出的s值为7,所以,4个选项中选项C符合题意。

51.BB。【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。

52.C解析:本题首先定义了一个4行5列的数组s,又定义了一个指向由5个元素组成的一维数组的指针变量ps,通过赋值让ps指向了数组s的首地址。此时数组元素s[i][j]的地址为“*(ps+1)+j”,数组元素s[i][j]可表示为*(*(ps+1)+j)。选项B表示的是数组元素a[3][0]的地址;选项D表示的是数组元素s[1][3]的地址;选项A中“ps+1”为指向下一行(第二行)的地址;选项c中ps[0][2]无条件等价于“*(ps[0]+2)”又无条件等价于”(*(ps+0)+2)”,即是数组元素s[0][2]。所以,4个选项中C为所选。

53.D解析:选项A是一个合法的赋值表达式,但结尾没加分号,所以它不是一个赋值语句:选项B是一个逗号表达式,也因为结尾没有加分号而不是合法的赋值语句;选项C是一个算术表达式,虽然有分号,但这个表达式没有赋值操作,因此,也不是一条赋值语句。

54.D解析:本题主要考查for循环语句的嵌套。外层主循环执行了3次,嵌套的循环语句每轮执行2次,每次输出i+j的值,推出嵌套循环语句后换行。

55.B解析:数据库管理系统是数据库系统的核心,是负责数据库的建立、使用和维护的软件。数据库管理系统建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过数据库管理系统。另外,数据库管理系统还承担着数据库的安全保护工作,按照数据库管理员所规定的要求,保证数据库的完整性和安全性。

56.C本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握while语句。

57.D解析:本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“‖”。自增运算符“++”,出现在变量之前(如题中的中++n),表示先使变量的值加1,再使用变量的值进行运算:出现在变量之后(如题中的n++),表示先使用变量的值进行运算,再使变量的值加1。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“‖”左边的运算对象为真时,其值就为真,不用计算其右边的运算对象的值.所以根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;由于1与任何数都为进行或(‖)运算,结果都为1,因此k=3;最后计算“&&”之前的表达式,i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

58.B解析:在C语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。

59.AC语言规定case后面跟的必须是整型常量表达式。进入case后,如果没有遇到break语句就会一直往下执行,后面其他case或default分支的语句也会被执行到,直到遇到break,或者执行到整个switch语句块的末尾。题目中给出了三个case语句:case0、case1、case2。当x为1时,从case1语句开始执行,因为没有break语句,将一直执行到函数末尾结束,即执行case1、case2两条语句。执行完case1时,a=1,b=0;执行完case2时,a=2,b=1。

60.B解析:本题考查if语句。scanf函数通过键盘读入a、b的值,a=1,b=2。第一个if语句,先判断条件,发现a<b条件成立,则s=b=2,s=s*s=4。

61.C

62.Da[2]%2即14%2=0,此时跳出while循环,因此j=11+13=24。

63.D本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||”的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。

64.C当有序线性表为顺序存储时才能用二分法查找。可以证明的是,对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次,因此本题答案为C)。

65.C数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。

66.B

67.B选择,连接,投影是专门的关系运算,选择是选择满足条件的元组,而投影是选择满足条件的属性或者说列。并是传统的关系运算,是将两个关系中的元组合并在一起再去掉重复的部分。选择,投影,并三个运算得到的结果属性数并没有改变或者说还有减少,而连接时将两个关系进行笛卡尔积运算,在挑选满足条件的项。其属性个数一般会多于原来关系中的属性数。

68.C从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

69.D要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用的数组元素累加65-50=15即可,D选项中,i下标从0开始,i=2指向第3个数50+a[2]=50+10=60,继续循环60+a[3]=60+5=65,此时i=4跳出,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论