1、二级 C语言笔试-163 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.有以下程序:#includestdio.hmain()int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“,a=2+b);程序运行后的输出结果是( )。(分数:1.00)A.0,0B.1,0C.3,2D.1,22.软件详细设计产生的图如右图所示:(分数:1.00)A.B.C.D.3.有以下程序:#includestdio.hmain()int n=2,k=0;while(k+&n+2);printf(“%d%d/n“,k,n);程
2、序运行后的输出结果是( )。(分数:1.00)A.02B.13C.57D.124.下面结构体的定义语句中,错误的是( )。(分数:1.00)A.struct ordint x;int y;int z;struct ord a;B.struct ordint x;int y;int z;struct ord a;C.struct ordint x;int y;int z;a;D.structint x;int y;int z;a;5.下列函数的功能是fun(char*a,char*b)while(*b=*a)!=/0)a+;b+;)(分数:1.00)A.将 a所指字符串赋给 b所指空间B.使指针
3、 b指向 a所指字符串C.将 a所指字符串和 b所指字符串进行比较D.检查 a和 b所指字符串中是否有/06.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(分数:1.00)A.循环队列B.栈C.队列D.二叉树7.以下函数 findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#define MIN-2147483647int findmax(int x,int n)int i,max;for(i=0;in;i+)max=MIN;if(maxxi)max=xi;return max;造成错误的原因是( )。(分数:1.00)A.定义语句“int
4、 i,max;”中,max 未赋初值B.赋值语句“max=MIN”;中,不应给 max赋 MIN值C.语句“if(maxximax=xi)”中,判断条件设置错误D.赋值语句“max=MIN;”放错了位置8.有以下程序:#includestdio.hvoid fun(int D)int d=2;p=d+;printf(“%d“,p);main()int a=1;fun(a);printf(“%d/n“,a);程序运行后的输出结果是( )。(分数:1.00)A.32B.12C.21D.229.算法的空间复杂度是指( )。(分数:1.00)A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数
5、据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时丁作单元数10.设有定义“int a=1,b=2,c=3;”,以下浯句中执行效果与其他三个不同的是( )。(分数:1.00)A.if(ab)c=a,a=b,b=c;B.if(ab)c=a,a=b,b=c;C.if(ab)c=a;a=b;b=c;D.if(ab)c=a;a=b;b=c;11.若有定义语句:int x=10;,则表达式 x-=x+x的值为( )。(分数:1.00)A.-20B.-10C.0D.1012.有以下程序:#includestdio.h#define f(x)x*x*xmain()int a=3,s,t;s=
6、f(a+1);t=f(a+1);printf(“%d,%d/n“,s,t);程序运行后的输出结果是( )。(分数:1.00)A.10,64B.10,10C.64,10D.64,6413.有三个关系 R,S 和 T如下:(分数:1.00)A.B.C.D.14.软件没计中划分模块的一个准则是( )。(分数:1.00)A.低内聚、低耦合B.高内聚、低耦合C.低内聚、高耦合D.高内聚、高耦合15.下列选项中不属于结构化程序设计原则的是( )。(分数:1.00)A.可封装B.自顶向下C.模块化D.逐步求精16.数据库管理系统是( )。(分数:1.00)A.操作系统的一部分B.在操作系统支持下的系统软件C
7、.一种编译系统D.一种操作系统17.有以下程序:#includestdio.hmain()int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d/n“,m,n,*p,*q);程序运行后的输出结果是( )。(分数:1.00)A.1,2,1,2B.1,2,2,1C.2,1,2,1D.2,1,1,218.下面是有关 C语言字符数组的描述,其中错误的是( )。(分数:1.00)A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串19.设有以下函数:v
8、oid fun(int n,char*s)则下面对函数指针的定义和赋值均正确的是( )。(分数:1.00)A.void(*pf)( );pf=fun;B.void*pf( );pf=funC.void*pf( );*pf=fun;D.void(*pf)(int,char);pf=&fun;20.有以下程序:#includestdio.hint f(int n):main()int a=3,s;s=f(a);s=s+f(a);printf(“%d/n“,s);mt f(int n)static int a=1;n+=a+;return n;程序运行后的输出结果是( )。(分数:1.00)A.7B
9、.8C.9D.1021.在 E-R图中,用来表示实体联系的图形是( )。(分数:1.00)A.椭圆形B.矩形C.菱形D.三角形22.以下选项中,能用做用户标识符的是( )。(分数:1.00)A.voidB.8 8C._0_D.unsigned23.有以下程序:#includestdio.h#includestring.hstruct Aint a;char b10;double c;Struct A f(struct A t):main()struct A a=1001,“ZhangDa“,1098.0;a=f(a);printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c);st
10、ruct A f(struct A t)t.a=1002;strcpy(t.b,“ChangRong“);t.c=1202.0;return t;程序运行后的输出结果是( )。(分数:1.00)_24.若有定义语句:int a410,*p,*q4;且 0i4,则错误的赋值是( )。(分数:1.00)A.p=aB.qi=aiC.p=aiD.p=&a2125.对于循环队列,下列叙述中正确的是( )。(分数:1.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针26.下列数据结构中,属于非线性结构的是( )。(分数:
11、1.00)A.循环队列B.带链队列C.二叉树D.带链栈27.以下定义语句中,编译时会出现编译错误的是( )。(分数:1.00)A.char a=a;B.char a=/nC.char a=aa;D.char a=/xgd;28.以下程序段中,与语句“k=ab?(bc?1:0):0;”功能相同的是( )。(分数:1.00)A.if(ab)&(bc)k=1;else k=0;B.if(ab)|(bc)k=1;else k=0;C.if(a=b)k=0;else if(b=c)k=1;else k=0;D.if(ab)k=1;else if(bc)k=1;29.有以下程序:#includestdio
12、.h#includestring.hmain()char a10=“abed“;printf(“%d,%d/n“,strlen(a),sizeof(a);程序运行后的输出结果是( )。(分数:1.00)A.7,4B.4,10C.8,8D.10,1030.有以下程序:#includestdio.hmain()int c=0,k;for(k=1;k3;k+)switch(k)default:c+=k;case2:c+;break;case4:c+=2;break;printf(“%d/n“,c);程序运行后的输出结果是( )。(分数:1.00)A.3B.5C.7D.931.下列关于 C语言文件的叙
13、述中正确的是( )。(分数:1.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成其类型只能是文本文件32.表达式:(int)(double)9/2)-(9)%2 的值是( )。(分数:1.00)A.0B.3C.4D.533.有以下程序:#includestdio.hmain()char c1,c2;c1=A+8-4;c2=A+8-5;printf(“%c,%d/n“,c1,c2);已知字母 A的 ASCII码为 65,程序运行后的输出结果是( )。(分数:1.
14、00)A.E,68B.D,69C.E,DD.输出无定值34.有以下程序:#includestdio.hmain()char s-“012xy“;int i,n=0;for(i=0;si!=0;i+)if(si=a&si=z)n+;printf(“%d/n“,n);程序运行后的输出结果是( )。(分数:1.00)A.0B.2C.3D.535.有以下程序:#includestdio.h#includestring.hmain()char str20(“One*world“,“One*Dream!“,*p=str1;prinft(“%d,“,strlen(p);printf(“%s/n“,p);程序
15、运行后的输出结果是( )。(分数:1.00)A.9,One*WorldB.9,One*Dream!C.10,One*Dream!D.10,One*World36.阅读以下程序:#includestdio.hmain()int case;float printF;printf(“请输入 2个数:“);scanf(“%d%f“,&case,&printF);printf(“%d%f/n“,case,printF);该程序在编译时产生错误,其出错原因是( )。(分数:1.00)A.定义语句出错,case 是关键字,不能用做用户自定义标识符B.定义语句出错,printF 不能用作用户自定义标识符C.定
16、义语句无错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 case的值37.以下叙述中正确的是( )。(分数:1.00)A.程序设计的任务就是编写程序代码并上机调试B.程序设计的任务就是确定所用数据结构C.程序设计的任务就是确定所用算法D.以上三种说法都不完整38.有以下程序:#includestdio.hmain()int a=2,3,5,4,i;for(i=0;i4;i+)switch(i%2)case0:switch(ai%2)case0:ai+;break;case1:ai-;break;case1:ai=0;for(i=0;i4;i+)printf(“%d
17、“,ai);printf(“/n“);程序运行后的输出结果是( )。(分数:1.00)A.3344B.2050C.3040D.030439.设有定义“char*c;”,以下选项中能够使字符型指针 c正确指向一个字符串的是( )。(分数:1.00)A.char str=“string“;c=str;B.scanf(%s,c);C.c=getchar();D.*c=“string“;40.若有以下程序段:int r=8:print(“%d/n“,r1);输出结果是( )。(分数:1.00)A.16B.8C.4D.2二、填空题(总题数:15,分数:60.00)41.某二叉树有 5个度为 2的结点以及
18、 3个度为 1的结点,则该二叉树中共有 1 个结点。(分数:4.00)填空项 1:_42.程序流程图中的菱形框表示的是 1。(分数:4.00)填空项 1:_43.软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中 1 阶段产生“软件需求规格说明书”。(分数:4.00)填空项 1:_44.在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为 1。(分数:4.00)填空项 1:_45.人员基本信息一般包括:身份证号、姓名、性别、年龄等。其中可以作为主关键字的是 1。(分数:4.00)填空项 1:_46.若有定义语句“int a=5;”则表达式
19、 a+的值是 1。(分数:4.00)填空项 1:_47.若有语句“doube x=17;int y;”,当执行“y=(int)(x/5)%2;”之后 y的值为 1。(分数:4.00)填空项 1:_48.以下程序运行后的输出结果是_。#includestdio.hmain()int x=20;printf(“%d“,0x20);printf(“%d/n“,0x&x20);(分数:4.00)填空项 1:_49.以下程序运行后的输出结果是_。#includestdio.hmain()int a=1,b=7;do b=b/2;a+=b;while(b1);printf(“%d/n“,a);(分数:4.
20、00)填空项 1:_50.有以下程序:#includestdio.hmain()int f,f1,f2,i;f1=0;f2=1printf(“%d%d“,f1,f2);for(i=3;i=5;i+)f=f1+f2;printf(“%d“,f);f1=f9;f2=f;printf(“/n“);程序运行后的输出结果是_。(分数:4.00)填空项 1:_51.有以下程序:#includestdio.hint a=5;void fun(int b)int a=10;a+=b;printf(“%d“,a);main()int c-20;fun(c);a+=c;printf(“%d/n“,a);程序运行后
21、的输出结果是_。(分数:4.00)填空项 1:_52.设有定义:struet personint ID;char name12;p;请将“scanf(“%d“,_);”语句补充完整,使其能够为结构体变量 p的成员 ID正确读入数据。(分数:4.00)填空项 1:_53.有以下程序:#includestdio.hmain()char a20=“How are you?“,b20;scanf(“%s“,b);printf(“%s%s/n“,a,b);程序运行时从键盘输入:How are you?回车则输出结果为_。(分数:4.00)填空项 1:_54.有以下程序:#includestdio.hty
22、pedef structint num;double s;)REC;void funl(REC x)x.num=23;x.s=88.5;main()REC a=16,90.0);fun1(a);printf(“%d/n“,a.num);程序运行后的输出结果是_。(分数:4.00)填空项 1:_55.有以下程序:#includestdio.hfun(int x)if(x/20)fun(x/B);printf(“%d“,x);main()fun(6);printf(“/n“);程序运行后的输出结果是_。(分数:4.00)填空项 1:_二级 C语言笔试-163 答案解析(总分:100.00,做题时间
23、:90 分钟)一、选择题(总题数:40,分数:40.00)1.有以下程序:#includestdio.hmain()int a=1,b=0;printf(“%d,“,b=a+b);printf(“%d/n“,a=2+b);程序运行后的输出结果是( )。(分数:1.00)A.0,0B.1,0C.3,2D.1,2 解析:解析 本题输出两个值,第一个 printf语句输出 b的值,b=a+b=1。第二个 printf语句输出 a的值,a=2*b,此时 b的值为 1,所以 a的值为 2。2.软件详细设计产生的图如右图所示:(分数:1.00)A.B.C. D.解析:解析 N-S 图(也被称为盒图或 CH
24、APIN图)和 PAD(问题分析图)及 PFD(程序流程图)是详细设计阶段的常用工具,E-R 图也即实体一联系图是数据库设计的常用工具。从题中图可以看出该图属于程序流程图。3.有以下程序:#includestdio.hmain()int n=2,k=0;while(k+&n+2);printf(“%d%d/n“,k,n);程序运行后的输出结果是( )。(分数:1.00)A.02B.13C.57D.12 解析:解析 本题判断 while语句中的逻辑关系的真假。“&”两端都为真时结果为真,而题中 k的值为 0,k+是先使用 k的值,再将 k加 1,而 k此时的值为 0,结果为假,所以不再执行后面的
25、语句,输出结果时,k 的值自加 1为 1,n 的值仍为 2。4.下面结构体的定义语句中,错误的是( )。(分数:1.00)A.struct ordint x;int y;int z;struct ord a;B.struct ordint x;int y;int z;struct ord a; C.struct ordint x;int y;int z;a;D.structint x;int y;int z;a;解析:解析 结构体定义的类型说明的一般形式为:struct 结构体标识名(类型名 1结构成员名表 1;类型名 2结构成员名表 2;);注意:结构体说明同样要以分号结尾;紧跟在结构体类型
26、说明之后进行定义;在说明一个无名结构体类型的同时,直接进行定义;先说明结构体类型,再单独进行变量定义等。所以选择 B选项。5.下列函数的功能是fun(char*a,char*b)while(*b=*a)!=/0)a+;b+;)(分数:1.00)A.将 a所指字符串赋给 b所指空间 B.使指针 b指向 a所指字符串C.将 a所指字符串和 b所指字符串进行比较D.检查 a和 b所指字符串中是否有/0解析:解析 本题函数的功能是将 a所指向的字符串赋给 b所指向的空间。6.下列数据结构中,能够按照“先进后出”原则存取数据的是( )。(分数:1.00)A.循环队列B.栈 C.队列D.二叉树解析:解析
27、栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。可以进行插入和删除运算的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,而栈底元素是最后被删除的。因此,栈是按照先进后出的原则组织数据的。7.以下函数 findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#define MIN-2147483647int findmax(int x,int n)int i,max;for(i=0;in;i+)max=MIN;if(maxxi)max=xi;return max;造成错误的原因是( )。(分数:1.00)A.定义语句
28、“int i,max;”中,max 未赋初值B.赋值语句“max=MIN”;中,不应给 max赋 MIN值C.语句“if(maxximax=xi)”中,判断条件设置错误D.赋值语句“max=MIN;”放错了位置 解析:解析 “max=MIN;”语句应放在 for循环之前,否则每次循环时都重新赋值,值没有变化。8.有以下程序:#includestdio.hvoid fun(int D)int d=2;p=d+;printf(“%d“,p);main()int a=1;fun(a);printf(“%d/n“,a);程序运行后的输出结果是( )。(分数:1.00)A.32B.12C.21 D.22
29、解析:解析 本题考查函数调用。主函数中调用 funmain()函数,p=d+,d=2,选取 d的值,再加 1,所以输出 p的值为 2,再回到主函数中,直接输出 a的值为 1。9.算法的空间复杂度是指( )。(分数:1.00)A.算法在执行过程中所需要的计算机存储空间 B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时丁作单元数解析:解析 一个算法的空间复杂度一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间,输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。10.设有定义“int a=1,b=2,c=3;”,以下
30、浯句中执行效果与其他三个不同的是( )。(分数:1.00)A.if(ab)c=a,a=b,b=c;B.if(ab)c=a,a=b,b=c;C.if(ab)c=a;a=b;b=c; D.if(ab)c=a;a=b;b=c;解析:解析 本题判断结果。选项 A中,如果(ab)则执行“c=a,a=bb=c”这个语句(注意分号的位置,如果条件成立,将会执行第一个分号前的语句)显然 if不成立,则 a,b,c 原样输出。选项 B和选项 D是同样的道理,而选项 C因为条件不成立,则不执行第一条语句“c=a”,接着执行“a=b”,将 b的值赋给 a,a 的值为 2;“b=c”,b 的值为 3,c 的值原样输出
31、,结果为 2,3,3。11.若有定义语句:int x=10;,则表达式 x-=x+x的值为( )。(分数:1.00)A.-20B.-10 C.0D.10解析:解析 表达式 x-=x+x可以写成 x=x-(x+x),所以 x的值为-10。12.有以下程序:#includestdio.h#define f(x)x*x*xmain()int a=3,s,t;s=f(a+1);t=f(a+1);printf(“%d,%d/n“,s,t);程序运行后的输出结果是( )。(分数:1.00)A.10,64 B.10,10C.64,10D.64,64解析:解析 本题考查参数的宏定义。第一次函数调用求 s的值,
32、x=a+1,所以 x*x*x应写成a+1*a+1*a+1,没有括号优先级,结果为 10,第二次函数调用 x*x*x可写成(a+1)*(a+1)*(a+1),所以结果为 64。13.有三个关系 R,S 和 T如下:(分数:1.00)A.B.C.D. 解析:解析 关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元素。由题可以看出,T 是 R和 S的并运算得到的。14.软件没计中划分模块的一个准则是( )。(分数:1.00)A.低内聚、低耦合B.高内聚、低耦合 C.低内聚、高耦合D.高内聚、高耦合解析:解析 耦合性和内聚性是模块独立性的两个定性标准,是互相关联的。
33、在软件设计中,各模块间的内聚性越强,则耦合性越弱。一般优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。15.下列选项中不属于结构化程序设计原则的是( )。(分数:1.00)A.可封装 B.自顶向下C.模块化D.逐步求精解析:解析 结构化程序设计的主要原则概括为自顶向下,逐步求精,限制使用 GOTO语句。16.数据库管理系统是( )。(分数:1.00)A.操作系统的一部分B.在操作系统支持下的系统软件 C.一种编译系统D.一种操作系统解析:解析 数据库系统属于系统软件的范畴。17.有以下程序:#includestdio.hmain()int m=1,n=2,*p=&m,*q=&
34、n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d/n“,m,n,*p,*q);程序运行后的输出结果是( )。(分数:1.00)A.1,2,1,2B.1,2,2,1 C.2,1,2,1D.2,1,1,2解析:解析 本题进行了交换,输出的 4个值,前两个为 m和 n的值,*p 取 m的值,*q 取 n的值,分别为 1和 2;而“r=p;p=q;q=r;”语句是进行 p和 q的交换。所以本题输出结果为 1,2,2,1。18.下面是有关 C语言字符数组的描述,其中错误的是( )。(分数:1.00)A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数
35、组C.字符数组中的内容不一定是字符串D.字符数组只能存放字符串 解析:解析 用来存放字符量的数组称为字符数组。字符数组也可以是二维或多维数组,对一个字符数组,如果不作初始化赋值,则必须说明数组长度,还可用 printf函数和 scanf函数一次性输出输入一个字符数组中的字符串,而不必使用循环语句逐个地输入输出每个字符。通常用一个字符数组来存放一个字符串。所以 D选项不正确。19.设有以下函数:void fun(int n,char*s)则下面对函数指针的定义和赋值均正确的是( )。(分数:1.00)A.void(*pf)( );pf=fun; B.void*pf( );pf=funC.void
36、*pf( );*pf=fun;D.void(*pf)(int,char);pf=&fun;解析:解析 函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项 A正确。20.有以下程序:#includestdio.hint f(int n):main()int a=3,s;s=f(a);s=s+f(a);printf(“%d/n“,s);mt f(int n)static int a=1;n+=a+;return n;程序运行后的输出结果是( )。(分数:1.00)A.7B.8C.9 D.10解析
37、:解析 本题考查函数的调用。当执行 s=f(a)时,进入 fun函数,n=n+(a+),n 的值为 3,a 的值为 1,a+的意思是先用 a的值,再将 a加 1为 2,所以 n的结果为 4,也就是主函数中 f(a)的结果为 4;返回主函数,执行 s=s+f(a),s 为 4,再次函数调用,此时 n仍为 3,a 的值刚才已经自加为 2,所以计算后 n的值为 5,a 自加 1为 3。返回主函数,f(a)的结果为 5,所以 s=4+5=9。21.在 E-R图中,用来表示实体联系的图形是( )。(分数:1.00)A.椭圆形B.矩形C.菱形 D.三角形解析:解析 E-R 图也即实体一联系图(Entity
38、 Relationship Diagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型,构成 E-R图的基本要素是实体型、属性和联系,其表示方法为:实体型(Entity):用矩形表示,矩形框内写明实体名;属性(Attribute):用椭圆形表示,并用无向边将其与相应的实体连接起来;联系(Relationship):用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:n 或 m:n)。22.以下选项中,能用做用户标识符的是( )。(分数:1.00)A.voidB.8 8C._0_ D.unsigned解析:解析 标识符
39、由字母、数字和下画线组成。开头必须是字母或下画线且区分大小写,在 C语言中,预先定义了一些标识符,以作专门用途,称为关键字,标识符不能与关键字相同。选项 A和 D是关键字,选项 B是数字开头的,所以都不正确。23.有以下程序:#includestdio.h#includestring.hstruct Aint a;char b10;double c;Struct A f(struct A t):main()struct A a=1001,“ZhangDa“,1098.0;a=f(a);printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c);struct A f(struct A
40、 t)t.a=1002;strcpy(t.b,“ChangRong“);t.c=1202.0;return t;程序运行后的输出结果是( )。(分数:1.00)_解析:解析 本题考查了结构体函数的调用。定义了结构体 A,A 含有三个参数,分别是整型、字符型和双精度型。主函数中调用了 fun(),转到 struct A f(struct A t)函数中,内容分别变成了1002,ChangRong,12022,函数调用后,格式仍为“struct A a=1001,“ZhangDa“,1098.024.若有定义语句:int a410,*p,*q4;且 0i4,则错误的赋值是( )。(分数:1.00)
41、A.p=a B.qi=aiC.p=aiD.p=&a21解析:解析 数据名是一个存放数组首地址的值,是一个地址常量。而 p=a不是合法的,因为 p和 a的基本类型不同。25.对于循环队列,下列叙述中正确的是( )。(分数:1.00)A.队头指针是固定不变的B.队头指针一定大于队尾指针C.队头指针一定小于队尾指针D.队头指针可以大于队尾指针,也可以小于队尾指针 解析:解析 循环队列是把队列的头和尾在逻辑上连接起来,构成一个环。循环队列中首尾相连,分不清头和尾,此时需要两个指示器分别指向头部和尾部。插入就在尾部指示器的指示位置处插入,删除就在头部指示器的指示位置处删除。26.下列数据结构中,属于非线
42、性结构的是( )。(分数:1.00)A.循环队列B.带链队列C.二叉树 D.带链栈解析:解析 线性结构是指数据元素只有一个直接前驱和直接后驱,线性表是线性结构,循环队列、带链队列和栈是指对插入和删除有特殊要求的线性表,是线性结构。而二叉树是非线性结构。27.以下定义语句中,编译时会出现编译错误的是( )。(分数:1.00)A.char a=a;B.char a=/nC.char a=aa; D.char a=/xgd;解析:解析 char 类型用于存储单个字符的简单变量类型,它可以被指定为一个字符常量或一个整数。28.以下程序段中,与语句“k=ab?(bc?1:0):0;”功能相同的是( )。
43、(分数:1.00)A.if(ab)&(bc)k=1;else k=0; B.if(ab)|(bc)k=1;else k=0;C.if(a=b)k=0;else if(b=c)k=1;else k=0;D.if(ab)k=1;else if(bc)k=1;解析:解析 本题考查了双重三目运算符的用法。例如:表达式 ab?c:d 可以看成,当 ab 时取 c的值,否则取 d的值。在本题中 k=ab?(bc?1:0):0 可以看做:当 bc 时为真,则 k=ab?1:0。当bc 时则 k=ab?0:0。也就是说,当 ab 并且 bc 时,k=1,否则 k=0。所以 A选项符合题意。29.有以下程序:#
44、includestdio.h#includestring.hmain()char a10=“abed“;printf(“%d,%d/n“,strlen(a),sizeof(a);程序运行后的输出结果是( )。(分数:1.00)A.7,4B.4,10 C.8,8D.10,10解析:解析 strlen 是求字符串的长度,结果为 4,sizeof 是求数组的长度,而数据在定义时已给出长度为 10。30.有以下程序:#includestdio.hmain()int c=0,k;for(k=1;k3;k+)switch(k)default:c+=k;case2:c+;break;case4:c+=2;b
45、reak;printf(“%d/n“,c);程序运行后的输出结果是( )。(分数:1.00)A.3 B.5C.7D.9解析:解析 本题考查了 switch开关语句,当表达式与某一个 caset后面的常量表达式相等时,就执行case后面的语句,若没有匹配,则执行 default后面的语句,各个 case和 default的出现次序不影响结果,执行完一个 case语句,流程就转移到下一个 case并继续执行。因此在 case的分支后,加 break语句来跳出 switch语句。当 k=1时,switch 语句中没有相对应的 case,所以执行 default语句,此时 c为 1,没有遇到 brea
46、k语句,则执行 case2,c+,此时 c的值在下次使用前加 1,等于 2,break 跳出。继续 for循环,当 k=2时,执行 case2,c 再次自加值为 3,遇到 break跳出。当 k=3时,不符合循环,则输出 c的结果,答案为 3。31.下列关于 C语言文件的叙述中正确的是( )。(分数:1.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件 D.文件由字符序列组成其类型只能是文本文件解析:解析 本题考查文件的知识点,文件是由数据序列组成的,可以构成二进制文件或文本文件。32.表达式:(int)(double)9/2)-(9)%2 的值是( )。(分数:1.00)A.0B.3 C.4D.5解析:解析 本题考查了强制类型转换。9/2 为 double型,所以结果为 4.5,又强制转换为整型,所以结果为 4。9%2 为取余运算,结果为 1。最终结果为 4-1=3。33.有以下程序:#includestdio.hmain()char c1,c2;c1=A+8-4;c2=A+8-5;printf(“%c,%d/n“,c1,c2);已知字母 A的 ASCII码为 65,程序运行后的输出结果是( )。(分数:1