国家二级(C语言)笔试模拟试卷128 (题后含答案及解析)
题型有:1. 选择题 2. 填空题
选择题(1-10、21-40每题2分,11-20每题1分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。
1. 对长度为n的线性表进行顺序查,在最坏的情况下所需要的比较次数为 ______。
A.log2n
B.n/2
C.n
D.n+l
正确答案:C
解析:顺序查的最坏情况是所的元素在线性表的最后,因此查的比较次数是线性表的长
度,即n。
2. 下列描述中正确的是 ______。
A.程序就是软件
B.软件开发不受计算机系统的限制
C.软件既是逻辑实体,又是物理实体
D.软件是程序、数据与相关文档的集合
正确答案:D
解析:程序是软件的一部分,软件是一种逻辑实体,它的开发、运行都依赖计算机系统,因此出现了软件的移植问题。
3. 在软件设计中,不属于过程设计工具的是 ______。
A.PDL(过程设计语言)
B.PAD图
C.N-S图
D.DFD图
正确答案:C
解析:DFD(Data Flow Diagram)是数据流图结构化分析的常用工具。软件设计中,常见的过程设计工具如下。 (1)图形工具:程序流程图,N-S,PAD,HIPO (2)表格工具:判定表 (3)语言工具:PDL(过程设计语言)
4. 下列叙述中正确的是 ______。
A.程序设计就是编制程序
B.程序测试必须由程序员自己去做
C.程序经调试改错后还应进行再测试
D.程序经调度改错后不必进行再测试
正确答案:C
解析:软件测试包括需求分析、结构功能模块设计、编制程序等阶段。程序的测试可以由专门的测试人员来完成。程序经调试改错后还应进行再测试。
5. 以下叙述中正确的是 ______。
A.用C语言实现的算法必须要有输入和输出操作
B.用C语言实现的算法可以没有输出但必须要有输入
C.用C程序实现的算法可以没有输入但必须要有输出
D.用C程序实现的算法可以既没有输入也没有输出
正确答案:C
解析:根据算法的特性,算法必须有。个或多个输入,和1个或多个输出。
6. 以下4个选项中,不能被看作是一条语句的是 ______。
A.{;}
B.a=0,b=0,c=0;
C.if(a>O);
D.if(b==0)m=1;n=2;
正确答案:D
解析:选项D中有两条语句。
7. 下列选项中,合法的C语言关键字是 ______。
A.VAR
B.cher
C.integer
D.default
正确答案:D
解析:本题考查C语言基本知识。本题中default是C语言的关键字。
8. 在16位C编译系统上,若定义long a;,则能给变量a赋值40000的正确语句是 ______。
A.a=20000+20000;
B.a=4000*10;
C.a=30000+10000;
D.a=4000L*1OL;
正确答案:D
解析:本题中a是长整型变量,故应将一个长整型常量赋值给a,选项A、B、C中的数值的末尾都没有加L或1,所以不正确。
9. 以下程序运行后的输出结果是 ______。 main( ) { char m; m=‘B’+32;printf(“%c\n”,m); }
A.a
B.b
C.c
D.d
正确答案:B
解析:字符参与运算的值是其对应的ASCII码,小写英文字符的ASCII值比大写英文字符的ASCII值大32,执行语句m=‘B’+32;得出结果m=66+32=98,以“%c”的格式输出结果为b。
10. 设有定义: int k=1,m=2; float f=7; 则以下选项中错误的表达式是 ______。
A.k=k>=k
B.-k++
C.k% int(f)
D.k>=f>=m
正确答案:C
解析:A、D选项是关系运算表达式,在C语言中,只要关系运算符两边是合法的表达式就可以了。C选项中,%只能对整型进行运算,其中对f进行了强制类型转换,但是转换的表达式错了,应为:(int)(f)。
11. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是 ______。
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10||!(y-x)>10
D.(x-y)*(x-y)<100
正确答案:C
解析:选择项C中逻辑运算!的优先级高于关系运算>、<,因此该表达式不能正确表示数学关系|x-y|<10。
12. 以下程序段的输出结果是 ______。 int a=1234; printf(“% 2d\n”,a);
A.12
B.34
C.1234
D.提示出错、无结果
正确答案:C
解析:本题考查printf函数中附加格式字符的用法。本题中的“2”是附加格式字符,其作用是
指定变量a的输出宽度为两列,而本题中a的值为1234,已经超过两列,所以按实际值输出,正确答案为选项C。
13. 设有定义:long x=123456L;,则以下能够正确输出变量x值的语句是 ______。
A.printf(“x=%d\n”,x);
B.printf(“x=%1d\n”,x)
C.printf(“x=%8dL\n”,x);
D.printf(“x=%LD\n”,x);
正确答案:B
解析:x是长整型变量,因此其输出格式字符应为“%1d”,所以正确答案为选项B。
14. 有以下程序: main( ) { int a=5,b=4,c=3,d=2; if(a>b>c) printf(“%d\n”,d); else if((c-1>=d)==1) printf(“%d\n”,d+1); else printf(“%d\n”,d+2); } 执行后输出结果是 ______。
A.2
B.3
C.4
D.编译时有错,无结果
正确答案:B
解析:执行if(a>b>c)时,首先判断a>b的值,5>4结果为真(C语言中规定真用1表示),然后比较1>c,结果为假,执行第一个else后的语句,判断条件(c-1>=d)==1是否成立,即判断(3-1>=2)==1,结果为真,所以执行 printf(“%d\n”,d+1),输出结果3。
15. 下列条件语句中,功能与其他语句不同的是 ______。
A.if (a) printf(“printf函数属于%d\n”,x);else printf(“%d\n”,y);
B.if(a==0) printf(“%d\n”,y);else printf(“%d\n”,x);
C.if(a!=0)printf(“%d\n”,x);else printf(“%d\n”,y);
D.if(a= =0)printf(“%d\n”,x);else printf(“%d\n”,y);
正确答案:D
解析:本题中选项A、选项B和选项C中的if条件语句都是在a==0时输出y,a!=0时输出x。
16. 有以下程序: main( ) { int I; For (i=0;i<3;i++)switch(i) { case 0:printf(“%d”,i); case 2:printf(“%d”,i); default:printf(“%d”,i); } } 程序运行后的输出结果是 ______。
A.22111
B.21021
C.122
D.12
正确答案:C
解析:本题考查switch语句的执行过程。如果case语句中没有break语句,则顺序执行。因此第一次循环i=0被输出了3次,i=1被输出一次,i=2被输出两次。
17. 有以下程序: main( ) { int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf(“%d\n”,j); } 程序运行后的输出结果是 ______。
A.42
B.45
C.56
D.60
正确答案:B
解析:此程序实现了将p[1)~p[7]中的奇数求和的功能,因此,最后的输出结果是j=13+15+17=45。
18. 执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是 ______。 main( ) { char s[100];int c,i; scanf(“%c”,&c); scanf(“%d”,&i); scanf(“%s”,s); printf(“%c,%d,%s\n”,c,i,s); }
A.123,456,789
B.1,456,789
C.1,23,456,789
D.1,23,456
正确答案:D
解析:根据给定的数据输入格式:123<空格>456<空格>789<回车>,第一个scanf语句中,格式字符为“%c”,只能得到一个字符’1’,第二个scanf语句中格式字符为“%d”,变量i得到的数值为23,第三个scanf语句中格式字符为“%s”,遇到空格就自动结束,因此字符数组s得到的是”456\0”。因而正确答案为选项D。
19. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 ______。
A.INPUT x、y、z;
B.scanf(“%d%d%d”,&x,&y,&z);
C.scanf(“%d%d%d”,x,y,z);
D.read(“%d %d %d”,&x,&y,&z);
正确答案:B
解析:选项A和选项D都不是C语言中的输入方法,选项C中的变量名前面缺少取地址符“&”。
20. 若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是 ______。
A.scanf(“%d %d %d”,&a,&b,d);
B.scanf(“%d %d %d”,&a,&b,&d);
C.scanf(“%d %d %d”,a,b,d);
D.scanf(“% d% d%d”,a,b,*d);
正确答案:A
解析:scanf函数中格式控制后面应为变量地址列表,因此选项C和选项D都错误,选项B中“&d”是指针变量d的地址,与题目不符。由题目可知指针变量d中存放的是变量c的地址,所以正确答案为选项A。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论