二级C语言选择题专项强化真题试卷39
选择题
1.下面叙述中错误的是( )。(A)
A. 软件测试的目的是发现错误并改正错误
B. 对被调试的程序进行“错误定位”是程序调试的必要步骤
C. 程序调试通常也称为Debug
D. 软件测试应严格执行测试计划,排除测试的随意性
解析:软件测试是为了发现软件中的错误,但最终目的不是改正错误,而是开发出高质量的完全符合用户需要的软件。
2.设有定义:double x=2.12;,以下选项中不能完整输出变量x值的语句是( )。(A)
A. printf(\\
B. printf(\\
C. printf(\\
D. printf(\\
解析:本题考查printf函数的格式输出,“格式控制字符串”部分为“%f”表示按照浮点型输出,选项B正确;加入长度格式符1即“%1”表示按照双精度浮点型输出,选项C正确;若要控制输出精度,则需以“.”开头,后跟十进制整数,如“%.2f”或“%0.2f”,选项D正确;控制输出宽度则是用整数表示,如“%5f”。选项A中“%5.0f”表示输出宽度为5,右对齐,小数点后保留位数为0,所以结果输出为2,不能完整输出x,答案选A。
3.下列叙述中正确的是( )。(D)
A. 如果函数带有参数,就不能调用自己
B. 所有函数均不能接受函数名作为实参传入
C. 函数体中的语句不能出现对自己的调用
D. 函数名代表该函数的入口地址
解析:本题考查函数调用的相关知识。B选项中函数可以接受函数名作为实参传入,引用函数名也是指针;A、C选项是错误的,因为递归函数就能调用自己。
4.有以下程序:
#include<stdio.h>
main()
{
int a=1,b=1;
while(a——)
b——;
printf(\\(C)
A. —1 —1
B. 0 0
C. —1 0
D. 1 1
解析:while循环的判定条件为“a——”,即a先作为循环条件判定,然后再自减1。第一次循环判定条件为真,执行完毕后a=0,b=0,第二次循环判定条件为假,循环不成立,所以只执行判定表达式“a——”,所以最终a=—1,b=0,答案选C。
5.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:线性结构的特点:
①有且只有一-个根结点;
②每一个结点最多有一个前驱,也最多有一个后继。
不满足线性结构条件的称为非线性结构,二叉树的非叶子结点最多可以用两个后继,属于非线性结构。
6.下面不能作为结构化方法软件需求分析工具的是( )。(A)
A. 系统结构图
B. 数据字典(DD)
C. 数据流程图(DFD图)
D. 判定表
解析:结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。
7.某二叉树共有845个结点,其中叶子结点有45个,则度为1的结点数为( )。(C)
A. 400
B. 754
C. 756
D. 不确定
解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多1个。二叉树共有845个结点,度为0的结点有45个,度为1的结点数为n1,度为2的结点数为n2,则845=45+n1+n2,且45=n2+1则n1=756,故C选项正确。
8.有以下程序:
#include<stdio.h>
main( )
{int k=5:
while(–k)pfintf(\\(A)
A. 1
B. 2
C. 4
D. 死循环
解析:–k先自减再使用,所以第一次判断条件即为while(4),条件为真,执行打印k的值k=4-3,结果为1;第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。
9.关于C语言函数说明的位置,以下叙述正确的是( )。(A)
A. 在函数说明之后对该函数进行调用,编译时不会出现错误信息
B. 函数说明可以出现在源程序的任意位置,在程序的所有位置对该函数的调用,编译时都不会出现错误信息
C. 函数说明只能出现在源程序的开头位置,否则编译时会出现错误信息
D. 函数说明只是为了美观和编译时检查参数类型是否一致,可以写也可以不写
解析:对被调用函数的说明有两种方式:外部说明和内部说明。在调用函数内对被调函数所作的声明称为内部说明,也称为局部说明;在函数外进行的函数说明称为外部说明,如果说明在程序最前端,外部声明又称为全局说明,因此B、C选项错误;函数“说明”是指利用它在程序的编译阶段对调用函数的合法性进行全面检查,因此D选项错误,故答案为A选项。
10.有以下程序:
#include
int a=2;
int f(int k)
{ static int n;
int m;
m=n=0;
n++;a++;m++;k++;
return n+m+a+k;
}
main()
{ int k;
for(k=0;k<2;k++)printf(\\(A)
A. 6,8,
B. 6,9,
C. 6,6,
D. 6,7,
解析:static定义一个静态分布变量,变量只会初始化一次,在for循环体内调用f()函数输出,f()函数首先是将当前n,m,a,k加1后进行累加返回主函数输出,第二次累加时,重新给m,n定义初始值为0,因此,两次输出分别为6,8,故答案为A选项。
11.有以下程序:
#include<stdio.h>
main( )
{int y=10;
while(y–);
printt(\\(A)
A. y=–1
B. y=0
C. y=1
D. while构成无限循环
解析:y–表示y使用后再自减1。所以最后-次y的值为0,条件不成立但仍要执行自减操作,y的值为-1,跳出循环。打印y的值-1。
12.有以下程序:
#include
int mul(int val)
{ static int init=1;
return init *=val;
}
main()
{ int i;
for(i=1;i<=5;i++)
printf(\\(A)
A. 1,2,6,24,120,
B. 1,2,3,4,5,
C. 1,1,1,1,1,
D. 1,2,4,6,8,
解析:static静态变量只
本文档预览:3600字符,共8105字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载