点击查看:2018年3月全国计算机二级C语言考试强化模拟题汇总
1、结构化程序的三种基本结构是( )。
A.递归、迭代和回溯
B.过程、函数和子程序
C.顺序、选择和循环
D.调用、返回和选择
参考答案:C
参考解析: 仅使用顺序、选择、循环三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。故本题答案为C选项。
2、若有以下定义和语句:
则输出结果是( )。
A.10 7
B.10 5
C.5 5
D.5 8
参考答案:C
参考解析: strlen函数返回字符串的长度,求字符串1长度时,遇到结束标志‘\0’为止,但是长度不包括结束标识。1字符数组sl的后5个元素没有赋值,都为‘\0’,即“abcd!”后1为‘\0’。所以strlen(s1)的值为5。字符指针s2所指向的字1符串中,\n为转义字符换行符,表示1个字符,\\也为转义字1符,代表\,也是l个字符,其后为字符串结束标识‘0’;所以strlen(s2)的值也为5。因此C选项正确。
3、以下叙述中正确的是( )。
A.C语句必须在一行内写完
B.C程序中的每一行只能写一条语句
C.C语言程序中的注释必须与语句写在同一行
D.简单C语句必须以分号结束
参考答案:D
参考解析: C语句可以跨行来写,但是必须以分号结束,所以A选项错误。C程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行也可以不放在一行,所以C选项错误。
4、以下不合法的数值常量是( )。
A.8.0E0.5
B.1e1
C.011
D.0xabed
参考答案:A
参考解析: A选项中E后面的指数必须为整型数据,所以A错误。C选项中011表示的是八进制常量.Oxabcd表示的是十六进制常量。
5、有以下程序:
程序运行后的输出结果是( )。
A.3
B.4
C.1
D.9
参考答案:B
参考解析: 分析程序可以发现,内层for循环每次只执行一次:即当j=i时。所以可以使用i替换j,去掉for循环,对应外层for循环的i,执行t+=b[i][b[i][i]],所以当i取值0、1、2时,t的值累加b[0][b[0][0]]、b[1][b[I][I]]、b[2][b[2][2]],即b[0][0]、b[1][1]、b[2][2],对应的值为:O、1、2,t取值为4(t初始值为1)。故答案选B。
6、若有定义:
int a,b;
通过语句:
seanf("%d;%d",&a,&b);
能把整数3赋给变量a,5赋给变量b的输入数据是( )。
A.3 5
B.3,5
C.3;5
D.35
参考答案:C
参考解析: 输人数据的格式必须与scanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。
7、有以下程序:
程序运行后的输出结果是( )。
A.0
B.1
C.2
D.3
参考答案:B
参考解析: 第一次执行外循环i的值为1,满足条件,判断第一次内循环,j的值为3,不满足条件,跳出内循环。第二次执行外循环i的值为2,同理也不满足内循环条件,跳出内循环。第三次执行外循环i的值为3,此时进入内循环判断条件时,条件成立,执行m=m%j,m的值为1,跳出内循环,跳出外循环打印m的值。
8、在软件设计中不使用的丁具是( )。
A.系统结构图
B.PAD图
C.数据流图(DFD图)
D.程序流程图
参考答案:C
参考解析: 系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。
9、在满足实体完整性约束的条件下( )。
A.一个关系中应该有一个或多个候选关键字
B.一个关系中只能有一个候选关键字
C.一个关系中必须有多个候选关键字
D.一个关系中可以没有候选关键字
参考答案:A
参考解析: 实体完整性约束要求关系的主键中属性值不能为空值,所以选择A。
10、某系统总体结构图如下图所示:
该系统总体结构图的深度是( )。
A.7
B.6
C.3
D.2
参考答案:C
参考解析: 根据总体结构图可以看出该树的深度为3,比如:XY系统—功能2—功能2.1,就是最深的度数的一个表现。
1、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。
A.大写字母
B.下划线
C.数字字符
D.连接符
参考答案:D
参考解析: c语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。所以D选项中的连接符不合法。
2、以下不能将s所指字符串正确复制到t所指存储空间的是( )。
A.do{*t++=*s++;}while(*s);
B.for(i=0;t[i]=s[i];i++);
C.while(*t=*s){t++;s++;}
D.for(i=0,j=0;t [i++]=s[j++];);
参考解析:
不能因为当*s='\0'时,while(* s)跳出循环,这样字符串结束标志'\0'没有复制给*t,造成*t不完整。注意,*t++=*s++是先执行t=*s,然后才进行t=t+1,s=s+1。B、C、D都能将'\0复制过去。
3、在面向对象方法中,不属于“对象”基本特点的是( )。
A.一致性
B.分类性
C.多态性
D.标识唯一性
参考答案:A
参考解析: 对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A。
4、以下程序段中的变量已正确定义:
程序段的输出结果是( )。
A.**
B.****
C.*
D.********
参考答案:C
参考解析: 由于内层循环for(k=1;k<3;k++)后面直接跟了空语句“;”所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“*”,选择C。
5、以下程序:
则以下函数调用语句错误的是( )。
A.k=f(a,b);
B.k=add(a,b);
C.k=(*f)(a,b);
D.k=*f(a,b);
参考答案:D
参考解析:D选项中*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。
6、有以下程序:
程序运行后的输出结果是( )。
A.a=2,b=2
B.a=2,b=1
C.a=1 ,b=1
D.a=-1,b=0
参考答案:B
参考解析: case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case 2语句的a++;b++;a为2,b为1。所以结果为B。
7、以下语句中存在语法错误的是( )。
A.char ss[6][20];ss[1]= "right? ";
B.char ss()[20]={"right?"};
C.char*ss[6];88[1]= "right? ";
D.char*ss()={"right? "};
参考答案:A
参考解析: 数组定义后,不可以对数组整体赋值,s是二维数组,因ss[1]是一维字符数组,即字符串,字符串赋值可以使用strcpy(ss[1],”right”);这样的形式,而选项A中对二维数组中的第“l”维(相当于一个一维数组)赋值,是不可以的。选项B和D是定义时对数组初始化,这是可以的。选项C中,将字符串在内存中的首地址赋给指针数组的一个元素,这是可以的。
微信搜索"考试吧"了解更多考试资讯、下载备考资料
相关推荐: