【计算机类职业资格】全国计算机等级考试二级C语言真题2014年9月及答案解析.doc

上传人:孙刚 文档编号:1329730 上传时间:2019-10-17 格式:DOC 页数:15 大小:92.50KB
下载 相关 举报
【计算机类职业资格】全国计算机等级考试二级C语言真题2014年9月及答案解析.doc_第1页
第1页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2014年9月及答案解析.doc_第2页
第2页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2014年9月及答案解析.doc_第3页
第3页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2014年9月及答案解析.doc_第4页
第4页 / 共15页
【计算机类职业资格】全国计算机等级考试二级C语言真题2014年9月及答案解析.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、全国计算机等级考试二级 C 语言真题 2014 年 9 月及答案解析(总分:43.00,做题时间:120 分钟)一、选择题(总题数:40,分数:40.00)1.下列关于算法复杂度叙述正确的是( )。(分数:1.00)A.最坏情况下的时间复杂度一定高于平均情况的时间复杂度B.时间复杂度与所用的计算工具无关C.对同一个问题,采用不同的算法,则它们的时间复杂度是相同的D.时间复杂度与采用的算法描述语言有关2.设有栈 S 和队列 Q,初始状态均为空。首先依次将 A,B,C,D,E,F 入栈,然后从栈中退出三个元素依次入队,再将 X,Y,Z 入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出

2、,则退队元素的顺序为( )。(分数:1.00)A.DEFXYZABCB.FEDZYXCBAC.FEDXYZCBAD.DEFZYXABC3.下列叙述中正确的是( )。(分数:1.00)A.有两个指针域的链表称为二叉链表B.循环链表是循环队列的链式存储结构C.带链的栈有栈顶指针和栈底指针,因此又称为双重链表D.结点中具有多个指针域的链表称为多重链表4.某二叉树共有 845 个结点,其中叶子结点有 45 个,则度为 1 的结点数为( )。(分数:1.00)A.400B.754C.756D.不确定5.软件需求分析阶段的主要任务是( )。(分数:1.00)A.确定软件开发方法B.确定软件开发工具C.确定

3、软件开发计划D.确定软件系统的功能6.下面对软件测试描述错误的是( )。(分数:1.00)A.严格执行测试计划,排除测试的随意性B.随机地选取测试数据C.软件测试的目的是发现错误D.软件测试是保证软件质量的重要手段7.结构化程序的三种基本控制结构是( )。(分数:1.00)A.顺序、选择和重复(循环)B.过程、子程序和分程序C.顺序、选择和调用D.调用、返回和转移8.数据库中对概念模式内容进行说明的语言是( )。(分数:1.00)A.数据定义语言B.数据操纵语言C.数据控制语言D.数据宿主型语言9.某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓库中,则实体仓库和零件间

4、的联系是( )。(分数:1.00)A.多对多B.一对多C.多对一D.一对一10.有三个关系 R、S 和 T 如下: (分数:1.00)A.交B.差C.并D.选择11.以下叙述正确的是( )。(分数:1.00)A.计算机只接收由 0 和 1 代码组成的二进制指令或数据B.计算机只接收由 0 和 1 代码组成的十进制指令或数据C.计算机可直接接收并运行 C 源程序D.计算机可直接接收并运行任意高级语言编写的源程序12.若有 C 语言表达式 2+3*4+73,以下选项中叙述正确的执行顺序是( )。(分数:1.00)A.先执行 3*4 得 12,再执行 73 得 25,最后执行 2+12+25 得 1

5、65B.先执行 3*4 得 12,再执行 2+12 得 14,再执行 73 得 2,最后执行 14+2 得 16C.先执行 73 得 2,再执行 3*4 得 12,再执行 12+2 得 14,最后执行 2+14 得 16D.先执行 2+3 得 5,再执行 5*4 得 20再执行 20+7 得 27,最后执行 273 得 913.若有定义:char c;int d;,程序运行时输入:c=1,d=2,能把字符 1 输入给变量 c、整数 2 输入给变量 d 的输入语句是( )。(分数:1.00)A.scanf(“c=d d=d“,&c,&d);B.scanf(“c=c d=d“,&c,&d);C.s

6、canf(“c=d,d=d“,&c,&d);D.scanf(“c=c,d=d“,&c,&d);14.以下选项中,与 n=i+完全等价的表达式是( )。(分数:1.00)A.n=i,i=i+1B.n+=i+1C.i=i+1,n=iD.n=+i15.设有定义: int n=1234;double x=31415: 则语句 printf(“3d,13fn“,n,x); 的输出结果是( )。(分数:1.00)A.1234,3142B.123,3142C.1234,3141D.123,314116.有以下程序: #include main() int a,b; for(a=0;a3;a+) scanf(

7、“d“,&b); switch(B)default:printf(“d,“,+b); case 1:printf(“d,“,+b); case 2:printf(“d,“,+b); 执行时输入:1 2 3,则输出结果是( )。(分数:1.00)A.2,2,3,4,4,4,B.2,3,4,C.2,3,3,4,5,6,D.2,3,4,3,4,4,17.设变量 m 为 float 类型,变量 n 为 int 类型,则以下能实现将 m 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。(分数:1.00)A.m=(m*100+05)1000B.n=m*100+05,m=n1000C.n=

8、m100+05,m=n*1000D.m=m*100+05100018.有以下程序: #include main() int a=1,b=1; for(;a-;) b-; printf(“d,dn“,a,b); 程序运行后的输出结果是( )。(分数:1.00)A.-10B.0,0C.-1,-1D.1,119.若有定义: char s30=0; 运行时输入: This is a string 则以下不能正确读入整个字符串:This is a string 到字符数组 s 中的语句组是( )。(分数:1.00)A.i=0;while(c=getchar()!=n)si+=c;B.gets(s);C.

9、for(i=0;(c=getchar()!=n;i+)si=c;D.scanf(“s“,s);20.有如下程序: #include main() int a=0,b=1; if(a+&b+) printf(“TRUE“); else printf(“FALSE“); printf(“-OUT:a=d,b=dn“,a,b); 程序运行后的输出结果是( )。(分数:1.00)A.FALSE _OUT:a=1,b=1B.FALSE_OUT:a=0,b=2C.TRUE_OUT:a=1,b=2D.TRUE_OUT:a=0,b=121.有如下程序: #include main() int i,data;

10、scanf(“d“,&data); for(i=0;i5;i+) if(idata)continue; printf(“d-“,i); 程序运行时,从键盘输入:3 后,程序的输出结果为( )。(分数:1.00)A.3-4-B.1-2-3-C.0-1-2-D.0-1-2-3-22.有以下程序: #include main() int a=0,b=1; if(+a=b+) printf(“1“); else printf(“0“);printf(“a=d,b=dn“,a,b); 程序运行后的输出结果是( )。(分数:1.00)A.1a=0,b=1B.0a=1,b=2C.1a=1,b=2D.0a=0

11、,b=223.有如下程序段: for(i=0;i10;i+) if(i=5)break; 则循环结束后 i 的值为( )。(分数:1.00)A.1B.0C.5D.1024.设有定义:int a=0,b=1;,以下表达式中,会产生“短路”现象,致使变量 b 的值不变的是( )。(分数:1.00)A.a+&b+B.a+bC.+a&b+D.+a +b25.有如下程序段: for(i=0;i10;i+) if(i5)break; 则循环结束后 i 的值为( )。(分数:1.00)A.10B.5C.9D.626.有以下程序段: int x,i; for(i=l;i=100;i+) scanf(“d“,&

12、x); if(x0)continue; printf(“4dn“,x); 下面针对上述程序段的描述正确的是( )。(分数:1.00)A.最多可以输出 100 个非负整数B.当 x0 时结束整个循环C.当 x=0 时没有任何输出D.pfintf 函数调用语句总是被跳过27.关于地址和指针,以下说法正确的是( )。(分数:1.00)A.通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量B.可以取一个常数的地址赋值给同类型的指针变量C.可以取一个表达式的地址赋值给同类型的指针变量D.可以取一个指针变量的地址赋值给基类型相同的指针变量28.有以下程序: #include #define

13、 N 4 void fun(int aN) int i; for(i=0;iN;i+) a0i+=aN-1N-1-i; main() int xNN=1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16,i; fun(x); for(i=0;iN;i+)printf(“d,“,xii); pfintf(“n“); 程序运行后的输出结果是( )。(分数:1.00)A.4,7,10,13,B.1,6,11,16,C.17,6,11,16,D.5,13,21,29,29.关于 C 语言函数说明的位置,以下叙述正确的是( )。(分数:1.00)A.在函数说明之后对该函数进

14、行调用,编译时不会出现错误信息B.函数说明可以出现在源程序的任意位置,在程序的所有位置对该函数的调用,编译时都不会出现错误信息C.函数说明只能出现在源程序的开头位置,否则编译时会出现错误信息D.函数说明只是为了美观和编译时检查参数类型是否一致,可以写也可以不写30.以下叙述正确的是( )。(分数:1.00)A.不能在数组说明符的一对方括号中使用表达式B.char cl,*c2,*c3,c42;是 C 语言的合法语句C.数组下标的最小值可以是负值D.若有数组定义 int array5;,则语句 printf(“d“,array123);是合法的31.有以下程序: #include main()

15、int a=2,*ptr; ptr=&a; *ptr=8; a=(*ptr)+; printf(“d,dn“,a,*ptr); 程序运行后的输出结果是( )。(分数:1.00)A.9,9B.8,9C.2,4D.0,432.有以下程序: #include main() int i,*ptr; int array4= 0,1; for(ptr=array,i=0;i3;i+,ptr+) if(*ptr=0) putchar(#); else putchar(M+*ptr); printf(“n“); 程序运行后的输出结果是( )。(分数:1.00)A.MO#B.#F#C.MMMD.#N#33.有以

16、下程序段: int m23,(*p)3; p=m; 则以下对 m 数组元素的引用正确的是( )。(分数:1.00)A.(P+1)0B.*(*(p+2)+1)C.*(P1+1)D.P1+234.有以下程序: #inelude char*a=“you“; char*b=“Welcome you to Beijing!“; main() char*p; p=b; while(*P!=*a)P+; printf(“sn“,P); 程序运行后的输出结果是( )。(分数:1.00)A.you to Beijing!B.to Beijing!C.Welcome you to Beijing!D.Beijin

17、g!35.有以下程序: #include void f(int x,int n) if(n1) printf(“d,“,xn-1); f(x,n-1); printf(“d,“,xn-1); else printf(“d,“,x0); main() int z3=1,2,3; f(z,3); printf(“n“); 程序运行后的输出结果是( )。(分数:1.00)A.3,1,3,B.3,2,1,2,3,C.1,2,3,1,2,3,D.1,2,3,2,1,36.有以下程序: #include int a=2; int f(int k) static int n; int m; m=n=0; n

18、+;a+;m+;k+; return n+m+a+k; main() int k; for(k=0;k2;k+)printf(“d,“,f(k); printf(“n“); 程序运行后的输出结果是( )。(分数:1.00)A.6,8,B.6,9,C.6,6,D.6,7,37.有以下程序: #include int sum(int*array,int len) if(len=1) return array1; else return array1+sum(array+1,len-1); main() int arrayE 5=0,9,1,2,res; res=sum array,3); prin

19、tf(“dn“,res); 程序运行后的输出结果是( )。(分数:1.00)A.27B.11C.8D.1238.有以下程序: #include main() char s10=“verygood“,*ps=s; ps=“too“; s4=0; puts(ps); 程序的运行结果是( )。(分数:1.00)A.tooB.verygoodC.veryD.good39.以下叙述中错误的是( )。(分数:1.00)A.函数中的形参属于局部变量B.在函数内部定义的变量只能在本函数范围内使用C.在函数外部定义的变量在所有函数中都有效D.在不同的函数中可以使用相同名字的变量40.有以下程序: #includ

20、e main() FILE*fp; int i,a6=1,2,3,4,5,6,k; fp=fopen(“dat (A)dat“,“w+“); fprintf(fp,“dn“,a0); for(i=1;i6;i+) rewind(fp); fprintf(fp,“dn“,ai); rewind(fp); fscanf(fp,“d“,&k); fclose(fp); printf(“dn“,k); 程序运行后的输出结果是( )。(分数:1.00)A.6B.21C.123456D.654321二、程序填空题(总题数:1,分数:1.00)41.给定程序中,函数 fun 的功能是:调用随机函数产生 20

21、 个互不相同的整数放在形参 a 所指数组中(此数组在主函数中已置 0)。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANKlC 中。不得增行或删行,也不得更改程序的结构! 试题程序: #include #include #define N 20 void fun(int*a) int i,x,n=0; x=rand()20; *found* while(n【1】) for(i=0;in;i+) *found* if(X=ai) 【2】; *found* if(i=【3】) an=x;n+; x=rand()20; main() int x

22、N=0,i; fun(x); printf(“The result:n“); for(i=0;iN;i+) printf(“4d“,xi); if(i+1)5=0)printf(“n“); printf(“nn“); (分数:1.00)_三、程序修改题(总题数:1,分数:1.00)42.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数 fun 的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。 请改正函数 fun 中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1C 中,不要改动 main 函数,不得增行或删行,也不得

23、更改程序的结构! 试题程序: #include #include #include typedef struct 且 aa int data; struct aa*next; NODE; int fun(NODE*h) int sum=0; NODE*p; p=h-next; *found* while(P-next) if(P-data2=0) sum+=P-data; *found* P=h-next; return sum; NODE*creatlink(int n) NODE*h,*p,*s; int i; h=P=(NODE*)malloc(sizeof(NODE); for(i=1

24、;in;i+) s=(NODE*)malloc(sizeof(NODE); 8-data=rand()16; S-next=P-next: P-next=s: p=p-next: p-next=NULL; retum h; outlink(NODE*h) NODE*p; P=h-next; printf(“nn The LIST:nn HEAD“); while(P) printf(“-d“,P-data); P=P-next; printf(“n“); void main() NODE*head;int sum; system(“CLS“); head=creatlink(10); outl

25、ink(head); sum=fun(head); printf(“nSUM=d“,sunl); (分数:1.00)_四、程序设计(总题数:1,分数:1.00)43.请编写一个函数 fun,它的功能是:将 SS 所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入“abc4Efg“,则应输出“aBc4EFg“。 注意:部分源程序在文件 PROG1C 中。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。 试题程序: #include #include #include #include void fun

26、(char*ss) void main() FILE*wf; char tt81,s81=“abe4Efg“; system(“CLS“); printf(“nPlease enter an string within 80 characters:n“); gets(tt); printf(“nnAfter changing,the stringn8“,tt);fun(tt); printf(“nbecomesnsn“,tt); * wf=fopen(“outdat“,“w“); fun(s); printf(wf,“s“,s); fclose(wf); * (分数:1.00)_全国计算机等级

27、考试二级 C 语言真题 2014 年 9 月答案解析(总分:43.00,做题时间:120 分钟)一、选择题(总题数:40,分数:40.00)1.下列关于算法复杂度叙述正确的是( )。(分数:1.00)A.最坏情况下的时间复杂度一定高于平均情况的时间复杂度B.时间复杂度与所用的计算工具无关 C.对同一个问题,采用不同的算法,则它们的时间复杂度是相同的D.时间复杂度与采用的算法描述语言有关解析:解析:算法的时间复杂度是指执行算法所需要的计算工作量,它与使用的计算机、程序设计语言以及算法实现过程中的许多细节无关,故 B 选项正确,D 选项错误。最坏情况下的时间复杂度可以与平均情况的时间复杂度相同,故

28、 A 选项错误。不同的算法时间复杂度一般不相同,故 C 选项错误。2.设有栈 S 和队列 Q,初始状态均为空。首先依次将 A,B,C,D,E,F 入栈,然后从栈中退出三个元素依次入队,再将 X,Y,Z 入栈后,将栈中所有元素退出并依次入队,最后将队列中所有元素退出,则退队元素的顺序为( )。(分数:1.00)A.DEFXYZABCB.FEDZYXCBA C.FEDXYZCBAD.DEFZYXABC解析:解析:栈是一种特殊的线性表,它所有的插入与删除都限定在表的同一端进行。队列是指允许在一端进行插入,而在另一端进行删除的线性表。将 A,B,C,D,E,F 入栈后,栈中元素为 ABCDEF,退出三

29、个元素入队,队列元素为 FED;将 X,Y,Z 人栈后,栈中元素为 ABCXYZ,全部入队后,队列元素为FEDZYXCBA,故 B 选项正确。3.下列叙述中正确的是( )。(分数:1.00)A.有两个指针域的链表称为二叉链表B.循环链表是循环队列的链式存储结构C.带链的栈有栈顶指针和栈底指针,因此又称为双重链表D.结点中具有多个指针域的链表称为多重链表 解析:解析:双向链表与二叉链表均是有两个指针域的链表,故 A 选项错误。在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由 NULL 改为指向表头结点,这样的链表称为循环链表。循环队列是队列的一种顺序存储结

30、构。循环链表与循环队列是两种存储结构,故 B选项错误。双向链表结点有两个指针域,指向前一个结点的指针和指向后一个结点的指针,而带链的栈是单链表形式,C 选项中应为双向链表,而不是双重链表,故 C 选项错误。由排除法可知,正确答案为 D 选项。4.某二叉树共有 845 个结点,其中叶子结点有 45 个,则度为 1 的结点数为( )。(分数:1.00)A.400B.754C.756 D.不确定解析:解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为 0 的结点(即叶子结点)总是比度为 2 的结点多 1 个。二叉树共有 845 个结点,度为

31、 0 的结点有 45 个,度为 1 的结点数为 n1,度为 2 的结点数为 n2,则 845=45+n1+n2,且 45=n2+1 则n1=756,故 C 选项正确。5.软件需求分析阶段的主要任务是( )。(分数:1.00)A.确定软件开发方法B.确定软件开发工具C.确定软件开发计划D.确定软件系统的功能 解析:解析:需求分析阶段的工作可以分为 4 个方面:需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系统的功能需求,性能需求,环境需求,可靠性需求,用户界面需求,资源使用需求等,故 D 选项正确。A、B、C 选项均为开发阶段的工作。6.下面对软件测试描述错误的是( )。(分数:

32、1.00)A.严格执行测试计划,排除测试的随意性B.随机地选取测试数据 C.软件测试的目的是发现错误D.软件测试是保证软件质量的重要手段解析:解析:在测试之前制定测试计划,并严格执行,测试用例的选择不可随意,应选择有代表性的,尽可能发现迄今为止尚未发现的错误,故 A 选项叙述正确,B 选项叙述错误。测试根本目的是尽可能多地发现并排除软件中隐藏的错误,故 C 选项叙述正确。软件测试是保证软件质量、可靠性的关键步骤,故 D 选项叙述正确。因此,本题正确答案为 B 选项。7.结构化程序的三种基本控制结构是( )。(分数:1.00)A.顺序、选择和重复(循环) B.过程、子程序和分程序C.顺序、选择和

33、调用D.调用、返回和转移解析:解析:结构化程序的 3 种基本控制结构为:顺序、选择和重复,故 A 选项正确。8.数据库中对概念模式内容进行说明的语言是( )。(分数:1.00)A.数据定义语言 B.数据操纵语言C.数据控制语言D.数据宿主型语言解析:解析:数据库管理系统为完成主要功能提供了相应的数据语言,它们是:数据定义语言,该语言负责数据的模式定义与数据的物理存取构建;数据操纵语言,该语言负责数据的操纵,包括查询与增、删、改等操作;数据控制语言,该语言负责数据完整性、安全性的定义与检查,以及并发控制、故障恢复等功能;数据宿主语言,它要嵌入其他程序设计语言,如汇编语言(被嵌入的语言称为宿主语言

34、,嵌入的语言称为子语言),故 A 选项正确。9.某个工厂有若干个仓库,每个仓库存放有不同的零件,相同零件可能放在不同的仓库中,则实体仓库和零件间的联系是( )。(分数:1.00)A.多对多 B.一对多C.多对一D.一对一解析:解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。每个仓库存放有不同的零件,相同零件可能放在不同的仓库中,故实体仓库和零件间的联系是多对多,故 A 选项正确。10.有三个关系 R、S 和 T 如下: (分数:1.00)A.交 B.差C.并D.选择解析:解析:从传统集合运算和关系数据库专门集合运

35、算考虑,关系代数运算可分为:传统的集合运算包括并、差、交和笛卡尔积;专门的关系运算包括投影、选择、连接和除法等。选择:从关系中找出满足给定条件的元组的操作称为选择,题目中无给定条件,故 D 选项错误。差:R-S 结果是属于 R 但不属于 S 的记录组成的集合,T 中元组“c 3 2”同时属于 R 和 S,故 B 选项错误。 并:RS 是将 S 中的记录追加到R 后面,T 中元组少于 R,故 C 选项错误。 交:Rs 结果是既属于 R 又属于 s 的记录组成的集合,与题目中结果相符,故 A 选项正确。11.以下叙述正确的是( )。(分数:1.00)A.计算机只接收由 0 和 1 代码组成的二进制

36、指令或数据 B.计算机只接收由 0 和 1 代码组成的十进制指令或数据C.计算机可直接接收并运行 C 源程序D.计算机可直接接收并运行任意高级语言编写的源程序解析:解析:计算机只认识自己的母语机器语言,即 0 和 1 代码组成的二进制指令和数据,故 A 选项正确,B 选项错误。C 语言是一种高级语言,计算机不能直接运行 C 源程序和高级语言编写的源程序,故C 和 D 选项错误。12.若有 C 语言表达式 2+3*4+73,以下选项中叙述正确的执行顺序是( )。(分数:1.00)A.先执行 3*4 得 12,再执行 73 得 25,最后执行 2+12+25 得 165B.先执行 3*4 得 12

37、,再执行 2+12 得 14,再执行 73 得 2,最后执行 14+2 得 16 C.先执行 73 得 2,再执行 3*4 得 12,再执行 12+2 得 14,最后执行 2+14 得 16D.先执行 2+3 得 5,再执行 5*4 得 20再执行 20+7 得 27,最后执行 273 得 9解析:解析:首先,在 C 语言中,乘除法优先级要高于加减法;其次,除法运算符“”两边参加运算的对象都是整数,运算结果要取整,故排除 A、D 选项;C 语言中,因为运算符“*”和“”都满足从左到右的运算规则,故应先计算 3*4=12,因此 C 选项排除,由排除法可知答案为 B 选项。13.若有定义:char

38、 c;int d;,程序运行时输入:c=1,d=2,能把字符 1 输入给变量 c、整数 2 输入给变量 d 的输入语句是( )。(分数:1.00)A.scanf(“c=d d=d“,&c,&d);B.scanf(“c=c d=d“,&c,&d);C.scanf(“c=d,d=d“,&c,&d);D.scanf(“c=c,d=d“,&c,&d); 解析:解析:scanf()函数中,d 对应的参数为整数型地址,c 对应的参数为 chat 型地址,故 A、C 选项错误;如果输入地址有多个,应该用逗号隔开,故 B 选项错误,因此答案为 D 选项。14.以下选项中,与 n=i+完全等价的表达式是( )。

39、(分数:1.00)A.n=i,i=i+1 B.n+=i+1C.i=i+1,n=iD.n=+i解析:解析:运算符“+”放在变量后面时,表示变量先参与其他操作,再完成加 1 操作,故表达式n=i+的运算顺序是先将 i 赋值给 n,再将 i+1 赋值给 i,因此答案为 A 选项。15.设有定义: int n=1234;double x=31415: 则语句 printf(“3d,13fn“,n,x); 的输出结果是( )。(分数:1.00)A.1234,3142 B.123,3142C.1234,3141D.123,3141解析:解析:函数 printf()中,md 指输出带符号的十进制整数,给定最

40、小宽度为 m 位,不足 m 位左端补空格,超过 m 位按实际位数输出;nf 表示以小数形式输出实数,小数占 n 位,对应题目,答案为A 选项。16.有以下程序: #include main() int a,b; for(a=0;a3;a+) scanf(“d“,&b); switch(B)default:printf(“d,“,+b); case 1:printf(“d,“,+b); case 2:printf(“d,“,+b); 执行时输入:1 2 3,则输出结果是( )。(分数:1.00)A.2,2,3,4,4,4,B.2,3,4,C.2,3,3,4,5,6, D.2,3,4,3,4,4,

41、解析:解析:程序在执行 switch 语句时,根据 switch 后面表达式的值找到匹配的人口标号,执行对应的case 语句,之后不再进行判断,继续执行此 case 后面的语句,并且各个 case 和 default 的出现次序不影响执行结果,即题目中的 default 放在开始位置与放在最后是一样的结果;运算符“+”放在变量前面时,表示将变量加 1,再参与其他操作。 本题第一次循环:输入 b=1,执行 case 1,输出 2;再执行case 2,输出 3。 第二次循环:输入 b=2,执行 case2,输出 3。 第三次循环:输入 b=3,没有 case 与其对应,故执行 default,输出

42、 b=4;接着执行 case 1,输出 5;再执行 case 2,输出 b=6,至此退出for 语句。 因此,最后输出为 2,3,3,4,5,6,故答案为 C 选项。17.设变量 m 为 float 类型,变量 n 为 int 类型,则以下能实现将 m 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。(分数:1.00)A.m=(m*100+05)1000B.n=m*100+05,m=n1000 C.n=m100+05,m=n*1000D.m=m*100+051000解析:解析:n 是整型数,将浮点数赋值给整型变量需要丢弃小数位,所以若要保留 m 的小数点后两位,需要将 m 乘

43、以 100。若要将 m 小数点后第三位四舍五人,则需要加上 05,然后赋给整型变量,所以n=m*100+05,接下来需要将 m 还原成有两位小数的浮点数。若除号两边操作数有一个是浮点数时,则结果为浮点数,因此将 n1000 赋值给 m 时,得到的 m 值含两位小数,故答案为 B 选项。18.有以下程序: #include main() int a=1,b=1; for(;a-;) b-; printf(“d,dn“,a,b); 程序运行后的输出结果是( )。(分数:1.00)A.-10 B.0,0C.-1,-1D.1,1解析:解析:题干中语句 for(;a-;)的执行过程是:先判断表达式 a-

44、是否为 0,因为运算符“-”在变量的后面,表示先进行其他操作,再让变量 a 减 1,即判断 a!=0 成立,则进入循环,然后 a 减 1。起始a=1 不等于 0。满足条件进人 for 循环,然后 a 自减 1 为 0,b 自减 1 为 0,继续循环;再跳回 for 语句时,a!=0 不成立,不会进入循环,但是 a 也要自减 1 为-1,循环结束。因此,最后输出 a=-1,b=0。故答案为A 选项。19.若有定义: char s30=0; 运行时输入: This is a string 则以下不能正确读入整个字符串:This is a string 到字符数组 s 中的语句组是( )。(分数:1

45、.00)A.i=0;while(c=getchar()!=n)si+=c;B.gets(s);C.for(i=0;(c=getchar()!=n;i+)si=c;D.scanf(“s“,s); 解析:解析:在使用格式符“s”进行字符串的输入时,空格和回车(Enter)会被读入,并且函数scanf()以它们作为分隔符停止一个字符串的输入,因此答案为 D 选项。20.有如下程序: #include main() int a=0,b=1; if(a+&b+) printf(“TRUE“); else printf(“FALSE“); printf(“-OUT:a=d,b=dn“,a,b); 程序运行

46、后的输出结果是( )。(分数:1.00)A.FALSE _OUT:a=1,b=1 B.FALSE_OUT:a=0,b=2C.TRUE_OUT:a=1,b=2D.TRUE_OUT:a=0,b=1解析:解析:逻辑与运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数。表达式(a+&b+)中,左操作数 a+的值为 0,已经可以确定整个逻辑表达式的结果为 0,因此右操作数 b+不再求解,进入 else 分支执行,a 的值加 1,b 值不变,因此答案为 A选项。21.有如下程序: #include main() int i,data; scanf(“d“,&data); for(i=0;i5;i+) if(idata)continue; printf(“d-“,i); 程序运行时,从键盘输入:3 后,程序的输出结果为( )。(分数:1.00)A.3-4- B.1-2-3-C.0-1-2-D

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1