2021-2022年河北省张家口市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021-2022年河北省张家口市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021-2022年河北省张家口市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021-2022年河北省张家口市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021-2022年河北省张家口市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年河北省张家口市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

2.if语句基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。

A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值

3.

4.在inta=3,int*p=&a;中,*p的值是()

A.变量a的地址值B.无意义C.变量p的地址值D.3

5.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

6.设有定义:“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

7.

8.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数是()

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

9.在一个C语言源文件中定义的全局变量,其作用域为()。

A.由具体定义位置和extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围

10.以下可以正确且安全地用作用户标识符的一组选项是()。

A._32int,long64B.Switch,unsignedC.Abc,getchD.3break,enter

11.将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是()。

A.nB.2n-1C.2nD.n-1

12.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

13.下列程序的输出结果是______。main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}

A.69825B.63825C.6385D.693825

14.以下能正确定义一维数组的选项是()。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

15.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的出度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

16.甲乙两个聪明人上街,捡到一张10块钱的购物卡,两人就想出一个办法来分配这张卡。两个分别将自己出的价格写在纸上,然后看谁出的价高就给谁,并且那个出价高的人要把出的钱给对方。现在甲有6块钱,乙有8块钱,甲乙双方都知道对方当前有多少钱并且都希望自己收益高于对方。问最后谁获得的钱多()

A.甲多B.乙多C.一样多D.有可能出现有人赔钱的情况

17.下面哪个不是用来解决哈希表冲突的开放地址法()

A.线性探测法B.线性补偿探测法C.拉链探测法D.随机探测法

18.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

19.以下叙述错误的是()。

A.算术运算符中不包含“=”运算符

B.模运算符“%”是c语言基本的算术运算符

C.算术运算符中只有“*”、“/”优先级高于关系运算符

D.自加和自减运算符只能用于变量,而不能用于常量或表达式

20.有以下程序:

#include<stdio.h>

voidfunc(intn)

{staticintnum=1);

num=num+n;printf("%d",num);

}

main()

{funo(3);func(4);printf("n");}

程序运行后的输出结果是()。

A.48B.34C.35D.45

二、2.填空题(20题)21.设有以下定义

stnctss

{intinfo;sEruc5ss*link;}x.y,z;

且已建立如下图所示链表结构:

请写出删除结点y的赋值语句______。

22.数据模型是数据库系统中用于提供信息表示和操作手段的结构形式。实际数据库系统中所支持的数据模型主要有层次模型、网状模型和【】3种。

23.x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。

24.对下列二叉树进行中序遍历的结果为【】。

25.函数fun的功能是使一个字符串按逆序存放。请填空。

voidfun(charstr[])

{charm;inti,j;

for(i=0,j=strlen(str);i<【】;i++,j--)

{m=str[i];

str[i]=【】;

str[j-1]=m;

}

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

}

26.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。

charch='B';

printf("%c%d\n",ch,ch);

27.常用的黑箱测试有等价分类法、【】、因果图法和错误推测法4种。

28.语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。

29.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出结果是【】。

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

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

31.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

32.下面程序的运行结果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

printf("%d\n",sizeof(A));

}

33.以下函数的功能是计算s=1+1/21+1/3!+…+1/n!,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

for(i=1;i<=n;i++)

{【】;

fac=fac/k;

s=s+fac;

}

}

34.该程序运行的结果是【】。

#include<stdio.h>

main()

{unionEXANPLE

{struct

{

intx;

inty;

}in;

inta;

intb;

}e;

e.a=1;

e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf("\n%d,%d",e.in.x,e.in.y);

printf("%d,%d\n",e.a,e.b);

}

35.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"ThisisYES."与"ThisisNO."。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

36.若a=10,b=20,则表达式!(a<b)的值是【】。

37.下面程序是计算100以内能被4整除且个位数为4的所有整数,请填空。

main()

{intm,n;

for(m=0;【】;m++)

{n=m*10+4;

If(【】)continue;

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

38.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0);

fot(i=0;i<10;i++)art[i]=i;

for(i=1:i<4;i++)k+=arr[i]+i;

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

}

39.软件工程研究的内容主要包括:软件开发技术和【】。

40.数据结构分为线性结构和非线性结构,带链的队列属于[]。

三、1.选择题(20题)41.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A.63B.64C.6D.7

42.以下程序输出的结果是_______。main(){inta=65535;printf("%d%u",a,A);}

A.-1-1B.6553565535C.-165535D.65535-1

43.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使I、j、k的值分别为2、3、4,

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scanf("%d,%d,%d",&i,&j,&k);

C.scanf("%d%d%d",&i,&j,&k);

D.seanf("i=%dj=%d,k=%d",&i,&j,&k);

44.程序段如下intk=-20;while(k=0)k=k+1;则以下说法中正确的是()

A.while循环执行20次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

45.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.选择排序C.快速排序D.归并排序

46.以下叙述中正确的是_______。

A.预处理是指完成宏替换和文件包含中指定文件的调用

B.预处理也是C语句

C.C源程序中,凡是行首以#标识的控制行都是预处理指令

D.预处理就是完成C编译程序对C源程序的第一遍扫描,为编译的词法分析和语法分析做准备

47.若已定义:inta=25,b=14,c=19;执行以下三目运算符(?:)所构成的语句:a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);输出结果是()。

A.***a=25,b=13,c=19

B.***a=26,b=14,c=19

C.###a=25,b=13,c=19

D.###a=26,b=14,c=19

48.为了避免嵌套的if-else的二义性,C语言规定:else与______配对。

A.缩排位置相同的ifB.其之前最近的ifC.其之后最近的ifD.同一行上的if

49.有以下程序#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>=n;i--)a[i+1]=a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是——。

A.10234B.12344C.12334D.12234

50.以下4个选项中,不能看成一条语句的是

A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;

51.有以下程序:#include<stdio.h>main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf("%d\n",s);}程序执行后的输出结果是()。

A.正整数1~9的累加和B.正整数1~10的累加和C.正整数1~9中奇数之和D.正整数1~10中偶数之和

52.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法需要的内存空间

53.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后输出结果是()。

A.x=4B.x=8C.x=6D.x=12

54.在数据库管理系统提供的数据语言中,负责数据的查询及增、删、改等操作的是

A.数据定义语言B.数据转换语言C.数据操纵语言D.数据控制语言

55.下列数据结构中的______是线性结构。

A.队列B.有向图C.树D.哈夫曼树

56.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

57.有以下程序intf(intn){if(n==l)return1;elsereturnf(n-1)+1;}main(){inti,j=0;for(i=i;i<3;i++)j+=f(i);printf{"%d\n",j);}程序运行后的输出结果是

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

58.已定义ch为字符型变量,以下赋值语句中错误的是

A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';

59.对建立良好的程序设计风格,下列描述正确的是()。

A.程序应该简单、清晰、可读性好B.符号名的命名只需要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无

60.请读程序:#include<stdio.h>main(){floax,y;scanf("%f",&x);if(x<0.0)y=0.0;elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);}若运行时从键盘上输入2.0<CR>(<CR>表示回车),则该程序的输出结果是()

A.0B.0.25C.0.5D.1

四、选择题(20题)61.

62.以下选项中,合法的一组c语言数值常量是()。

A.12.0Xa234.5e0

B.028.5e…30xf

C.1774el.50abe

D.0x8A10,0003.e5

63.

64.有下列程序

main()

{

inta[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

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

}

运行该程序,其输出结果是

A.4B.22

C.24D.46

65.

66.以下程序运行后的输出结果是()。

A.EFGHIJABCD

B.bcdefghij

C.abdefCghij

D.不确定的值

67.以下程序段完全正确的是()。

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

A.一个C语言程序只能实现一种算法

B.c程序可以由多个程序文件组成

C.C程序可以由一个或多个函数组成

D.一个c函数可以单独作为一个C程序文件存在

69.

70.

71.若有定义语句:doublex,y,*px,*PY;执行了laX=&x;lay=&y;之后,正确的输入语句是()。A.scanf(”%If%le”,px,lay);

B.seanf(”%f%f¨&x,y);

C.seanf(”%f%f",x,y);

D.Scanf(”%If%If"·,x,y):

72.设有如图所示二叉树,对此二叉树后序遍历的结果为()。

A.ZBTYCPXAB.ATBZXCYPC.TZBACYXPD.ATBZXCPY

73.

74.一棵二叉树共有25个结点,其中5个是叶子结点,则度为l的结点数为()。

A.16B.10C.6D.4

75.下列C语言用户标识符中,不属于合法标识符的是

A.ad_intB.bb_7C._dd7D.int

76.

77.

下列程序的输出结果是()。

voidfun(int*X,inty)

{printf("%d%d",*x,*y);*x=3;*y=1;}

main

{intx=1,y=2;

fun(&y,&x);

printf("%d%d",x,y);

}

A.2143B.1212C.1234D.2112

78.下列各数据类型不属于构造类型的是()。

A.枚举型B.共用型C.结构型D.数组型

79.

80.标准库函数fgets(s,n,file)的功能是()。

A.从文件file中读取长度为n的字符串存入字符数s由

B.从文件file中读取长度不超过n-1个字符的字符放到字符数组S中

C.从文件file中读到n个字符串存入字符数组s中

D.从文件file中读取长度为n-1个字符的字符串存字符数组S中

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:从字符串str中,删除所有大写字母F。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>voidproc(char*str){inti,j;//****found****for(i=j=0;str[i]一0;i++)if(str[i]!=F)//****found****str[i]=str[i];str[j]=\0;}voidmain{charstr[80];printf("\nEnterastring:");gets(str);printf("Theoriginalstring:");puts(str);proc(str);printf("Thestringafterdeleted:");puts(str);printf("\n\n");}

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main()函数中输出。

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

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

试题程序:

参考答案

1.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。

2.D考查if循环语句。if(表达式),其中表达式是一个条件,条件中可以是任意的合法的数值。

3.B

4.D

5.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型一个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故迭项D不正确.所以,4个选项中选项C符合题意。

6.A选项B是从键盘上输入字符串,选项C是接收字符,选项D不正确。

7.C

8.B

9.A全局变量的作用域是从声明处到文件的结束。故本题答案为A选项。

10.AC语言中,合法的标识符由字母、数字和下划线组成,并且第1个字符必须是字母或下划线。选项D中的“3break”错误;用户标识符不能是C语言中的关键字或函数,选项B中的“unsigned”是关键字,不是合法的用户标识符,“Switch”是合法的用户标识符;选项C中的“getch”是库函数名,不是合法的用户标识符,而C语言区分字母大小写,“Abc”是合法的用户标识符;选项A中的两个标识符都是合法的用户标识符。故本题答案为A选项。

11.B

12.B解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式,即(*p).i和p->i。

13.C

14.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

15.A

16.C

17.C

18.AB选项中运算符“%”的运算对象为整数。C选项中不能将变量赋给表达式“x+n”。D选项中不能将表达式“4+1”赋给常量5。故本题答案为A选项。

19.C

20.A\n第一调用func函数时输出4,第二次调用func函数时num的值并不会释放,仍然是上次修改后的值4,第二次调用结果为8,所以输出结果是48。

\n

21.x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;x.link=&z;或x.link=y.link;或x.1ink=x.1ink->link;或x.1ink=*(x.link).link;解析:本题考核的知识点是链表中结点的删除。要删除结点y,只需要让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此只需把结点2的地址赋给x的指针域就可以了即让结点x的指针域指向结点2。而结点z得地址保存在节点y的指针域中,因此只需把节点y的指针城赋值给节点x的指针域即可。

22.关系模型关系模型

23.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和x这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。

24.ACBDFEHGPACBDFEHGP解析:中序遍历方法的递归定义;当二叉树的根不为空时,依次执行如下3个操作:①按中序遍历左子树。②访问根结点。③技中序遍历右子树。根据遍历规则来遍历本题中的二叉树。首先遍历F的左子树,同样按中序遍历。先遍历C的左子树,即结点A,然后访问C,接着访问C的右子树,同样按中序遍历C的右子树,先访问结点B,然后访问结点D,因为结点D没有右子树,因此遍历完C的右子树,以上就遍历完根结点F的左子树。然后访问根结点F,接下来遍历F的右子树,同样按中序遍历。首先访问E的左子树,E的左子树为空,则访问结点E,然后访问结点E的右子树,同样按中序遍历。首先访问G的左子树,即H,然后访问结点G,最后访问G的右子树P。以上就把整个二叉树遍历一遍,中序遍历的结果为ACBDFEHGP。因此,划线处应填入“ACBDFEHGP”。

25.strlen(str)/2str[j-1]

26.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出B,按%d形式输出66,输出结果为:B66。

27.边值分析法边值分析法解析:本题考查了黑箱测试的方法。黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。

28.x+=1;

29.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。

30.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

31.1010解析:该for语句以i为0,j为10作为初始值,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k,这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,第六次循环,将i与j的和10赋给k后,i为6、j为4,循环结束,k值为10。

32.8080解析:本题考查的知识点是共用体数组变量所占内存的长度。数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

33.k=k*ik=k*i解析:本题中遗过for循环求s表达式中每一项的和,表达式“fac=fac/k;”求的是每—项的值,所以k的值应为n!,在求n!的时候,可以用上次循环阶乘的值乘i,就可以直接得此次n!,故本题填k=k*i。

34.4844

35.getchargetchar解析:考查了字符可以作为整型变量来对待,参与操作。题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符\ue008'y',\ue009'Y'、,'n','N'是否相等来实现的。

36.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

37.m<10n%4!=0

38.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

39.软件工程管理软件工程管理解析:软件工程足指,采用工程的概念、原理、技术和方法指导软件的开发与维护:软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。即软件工程研究的内容主要包括:软件开发技术和软件工程管理。

40.线性结构线性结构解析:与栈类似,队列也是线性表,也町以采用链式存储结构。

41.B解析:在长度为64的有序线性表中,其中的64个数据元素是按照从大到小或从小到大的顺序排列有序的。在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不性表中或位于线性表的最后。按照线性表的顺序查找算法,首先用被查找的数据和线性表的第一个数据元素进行比较,若相等,则查找成功,否则,继续进行比较,即和线性表的第二个数据元素进行比较。同样,若相等,则查找成功,否则,继续进行比较。依次类推,直到性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。因此,在长度为64的有序线性表十进行顺序查找,最坏的情况下需要比较64次。因此,本题的正确答案为选项B。

42.C解析:printf函数中不同类型的数据用不同的格式字符,其中%d是按整型数据的实际长度输出十进制整数。变量a=65535以%d格式输出时溢出输出值为该数的补码值,即-1:%u用来输出unsigned型数据,无符号整型变量的数值范围为0~65535,所以变量a=65535以%u格式输出的值为65535。

43.B解析:scanf函数的调用形式是:scanf(格式字符串;输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

44.C

45.A解析:以下几种算法的时间复杂度分别为:冒泡排序(n2);选择排序(n2);快速排序(nlog2n);归并排序(nlog2n)。当排序元素序列基本有序的情况下,冒泡排序的交换次数为0,只是顺序扫描数据而已,所以其效率是最高的。

46.C解析:预处理功能主要有以下三种:宏定义、文件包含和条件编译,所以A不正确。预处理不是C语句,所以B不正确。预处理命令是由ANSIC统—规定的,编译程序不能识别它们,D也不正确。

47.C解析:此题综合考查多种运算符的使用:首先计算表达式a<=25&&b--<=2&&c的值,很容易看出b--<=2的值为假,因此表达式为假;根据三目运算的特点,由于表达式为假,所以应该执行printf('###a=%d,b=%d,c=%d\\n',a,b,c);这时a的值依然为25,b的值经过b--运算后变为13,而c的值仍为19。

48.B解析:在if语句中又包含—个或多个if语句称为if语句的嵌套。应当注意if与else的配对关系,在C语言中,从最内层开始,else总是与它上面最近的(未曾配对的)if配对。

49.C解析:由于用了宏定义a[10]~a[19]均为0。函数fun的功能是把从a[n]到a[m]中的元素依次赋给后面的一个元素。调用了fun(a,2,9)以后,a[N]={1,2,3,3,4,5,6,7,8,9,10}。

50.D解析:选项D)为两条语句。

51.D解析:通过for(i=1;i<10;i+=2)可知,i取值为1~10的奇数,即1,3,5,7,9,i+1即为2,4,6,8,10。因此,程序的功能是计算并输出1~10中的偶数之和,s+=i+1就是累加这些偶数。

52.D解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。

53.B解析:外循环的循环变量i从0递增到1会循环2次,内循环的循环变量j从0递增到3会循环4次。但是内循环中有一条if语句,每当j%2为真,即j为奇数时会跳过下面的x++;语句,所以4次内循环只有2次执行到x++;语句,再加上外循环中包含的2条x++语句,所以每次外循环会使x自增4次,2次外循环下来x的值为8。故应该选择B。

54.C【解析】在数据库管理系统提供的数据语言中,数据操纵语言负责数据的查询及增、删、改等操作。故答案为C。

55.A

56.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,

57.B解析:本题考查的知识点是递归函数.通过分析不难写出,f()函数的数学表达式为:

f(n)=1n=1;

f(n)=f(n-1)+1n不等于1;

在主函数中for循环执行了两次函数调用f(i)。第一次:i为1,调用f(1)得到返回值1,并把它加到i中,i的值为1。第二次i为2,调用f(n),根据递归公式可知“f(2)=f(1)+1”,得到返回值2并把它加到i中,j的值为3。所以最后输出的j的值为3,所以4个选项中B正确。

58.A解析:字符型变量用来存放字符常量,且只能存放一个字符。赋值反斜杠线“\\”,必须用转义字符实现,即ch='\\\\',所以选项A)错误;字符型变量可以赋0~255之间的ASCII码值,整型数据和字符型数据有时可以通用,所以选项B)正确;可以将NULL赋给一个字符型变量,NULL代表一个空字符,相当于0,选项C)正确;'\\xaa'表示的是1~2位16进制数所代表的字符,所以选项D)正确。

59.A解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。

60.C

61.C

62.AC语言中八进制整型常量的开头是数字0,十六进制整型常量的数字开头是Ox。C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以“e”或“E",后跟一个整数来表示以l0为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B选项中028错误,八透割中没有数字8。c选项中4el.5中e后面的指数不是整数:D选项中3.e5小数点后面缺少数字。

63.C

64.C在本题中,程序首先定义了一个一维数组a,赋其初值,并定义一个同类型的指针变量p和一个指向指针的指针变量k,然后让指针变量p指向数组的首地址,接着将指针变量p的地址值赋给指向指针的指针变量k。

在第一条输出语句中,首先我们需要弄清楚*(p++)的作用,它是先调用指针变量p的值,然后使其自加,输出效果等价于*p,因此,最后输出的结果是数组中的第一个元素。

在第二条输出语句中,我们需要弄明白**k的作用,指向指针的指针变量类似于指针变量,如果用**k表示一个数值,可以确定这条输出语句的输出结果是一个数值,而非地址,从表达式k=&p可以看出,k的值是指针变量p的地址值,p的值改变后,k能实时得到改变,那么在第一条输出语句对p的改变,在第二条输出语句中得

温馨提示

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

评论

0/150

提交评论