二级C语言选择题专项强化真题试卷51
选择题
1.下面叙述中错误的是( )。(A)
A. 软件测试的目的是发现错误并改正错误
B. 对被调试的程序进行“错误定位”是程序调试的必要步骤
C. 程序调试通常也称为Debug
D. 软件测试应严格执行测试计划,排除测试的随意性
解析:软件测试是为了发现软件中的错误,但最终目的不是改正错误,而是开发出高质量的完全符合用户需要的软件。
2.以下叙述中正确的是( )。(A)
A. 在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B. 在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C. 在printf函数中,各个输出项只能是变量
D. 使用printf函数无法输出百分号%
解析:scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A选项正确。scanf()的格式控制串可以使用其他非空自字符,如逗号,但在输入时必须输入这些字符以保证匹配,所以B选项错误。printf函数可以输出常量,也可以输出变量,所以C选项错误。printf函数可以通过printf(“%%”)来输出百分号%,所以D选项错误。
3.以下对一维数组a的正确说明是( )。
D
解析:一维数组的定义、初始化为:类型符数组名{常量表达式)。类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;常量表达式是指数组的长度(数组中包含元素的个数),其值只能是整数,不可以是变量,而且从1开始计数。A选项,常量表达式只能放在中括号中;B选项,只有在对数组初始化(即赋值)的时候才可以省略数组的长度,B中并未对a进行初始化;C选项,常量表达式不能为变量。故D选项正确。
4.以下叙述中正确的是( )。(C)
A. 字符串常量strl的类型是字符串数据类型
B. 有定义语句:char strl[]=\\
C. 下面的语句用赋初值的方式来定义字符串,其中,’\0’不可缺少char strl[]={’s’,’t’,’r’,’1’,’\0’};
D. 字符数组的每个元素可存放一个字符,并且最后一个元素必须是’\0’字符
解析:本题考查字符数组的相关操作。A选项中strl的类型不是字符串类型;B选项中数组strl包含了5个元素,其中有结尾符;D选项中字符数组的最后一个元素可以不是’\0’字符。故C选项正确。
5.下列处理中与队列有关的是( )。(A)
A. 操作系统中的作业调度
B. 执行程序中的过程调用
C. 执行程序中的循环控制
D. 二叉树的遍历
解析:队列是指允许在一端进行插入,而在另一端进行删除的线性表。由于最先进入队列的元素将最先出队,所以队列具有“先进先出”的特性,体现了“先来先服务”的原则。作业调度是指根据一定信息,按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配资源再将新创建的进程插入就绪队列的过程。执行程序中的过程调用一般指函数调用,需要调用的时候转入被调用函数地址执行程序,与队列无关。执行程序中的循环控制是指算法的基本控制结构,包括对循环条件的判定与执行循环体,与队列无关。二叉树是一个有限的节点集合,二叉树的遍历是指不重复地访问二叉树中的所有节点,与队列无关。故本题选择A选项。
6.有以下程序:
#include
main()
{
int a=0,b=1;
if(++a==b++)
printf(\\(C)
A. 1a=0,b=1
B. 0a=1,b=2
C. 1a=1,b=2
D. 0a=0,b=2
解析:运算符“++”放在变量后面时,表示先执行其他操作,再将变量加1;运算符“++”放在变量前面时,表示将变量加1后再参与其他操作。因此if(++a==b++)为真,输出1,再输出a,b,故程序运行后的结果是:1a=1,b=2。因此答案为C选项。
7.软件生命周期中的活动不包括( )。(A)
A. 市场调研
B. 需求分析
C. 软件测试
D. 软件维护
解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段、需求分析、软件设计、软件实现、软件测试、运行和维护,所以选择A。
8.有以下程序:
#include
#include
void fun(char *8,int ml,int m2)
{ char t,*p;
p=s+ml;s=s+m2;
while(8<P)
{t=*s; *s=*p; *p=t;
s++;P——;
}
}
main()
{ char ss[10]=\\(A)
A. 012345
B. 876543210
C. 876543
D. 012345678
解析:fun(*ss,m1,m2)的作用是,如果m1>m2交换数组元素ss[m1],ss[m2]。因此,fun(ss,0,5)后ss的0,1,2,3,4,5,6,7,8,\0。fun(ss,9,6)后ss的0,1,2,3,4,,5,\0,8,7,6。fun(s8,0,9)后ss的0,1,2,3,4,5,\0,8,7,6。因此打印结果012345。故答案为A选项。
9.有如下程序段:
int x=12:
double y=3.141593;
printf(\\(A)
A. 123.141593
B. 12 3.141593
C. 12,3.141593
D. 123.1415930
解析:printf。函数中格式字符“%8.6”的含义是:变量y的输出宽度为8(包括小数点),小数点后面保留6位小数,且右对齐。所以选择A。
10.某系统总体结构如下图所示
(A)
A. 5
B. 7
C. 4
D. 8
解析:模块的扇出是指本模块的直属下层模块的个数。或者说是由一个模块直接调用的其他模块数。模块的扇入是指有多少个上级模块调用它。题干中某系统为一个模块,其扇出数目为3,功能2模块扇出数为3,功能3模块扇出数为2,功能2.2扇出数目为2,故最大扇出数为3。功能2.2.2有2个上级模块调用,为最大扇入数。3+2=5。故本题答案为A选项。
11.若有定义,int a=3,*p=&a,**q=&p;,则以下叙述中错误的是( )。(A)
A. q是指针变量,*q就是变量a
B. p是指针变量,p指向变量a
C. q指向变量p,所以*q指向变量a
D. *p与**q都代表变量a
解析:由题意可知:指针变量p指向变量a,p的值是a的地址;指针变量q指向变量p,q的值是p的地址,所以q是指针变量,q指向p,*q是变量p,选项A错误;p也是指针变量,p指向a,选项B正确;由于q指向p,所以*q指向a,选项C正确;*p和**q都是代表变量a,选项D
本文档预览:3600字符,共8676字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载