国家二级(C语言)机试模拟试卷476
选择题
1.以下叙述中正确的是( )。(A)
A. 在C语言中,预处理命令行都以“#”开头
B. 预处理命令行必须位于C源程序的起始位置
C. #include<stdio.h>必须放在C程序的开头
D. C语言的预处理不能实现宏定义和条件编译的功能
解析:预处理命令是以“#”号开头的命令,它们不是C语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写。所以B、c错误。C语言的预处理能够实现宏定义和条件编译等功能,所以D错误。
2.下面关于算法的叙述中,正确的是( )。(B)
A. 算法的执行效率与数据的存储结构无关
B. 算法的有穷性是指算法必须能在执行有限个步骤之后终止
C. 算法的空间复杂度是指算法程序中指令(或语句)的条数
D. 以上三种描述都正确
解析:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。
3.对下列二叉树进行前序遍历的结果为( )。
(B)
A. ABCDEFGH
B. ABDGEHCF
C. GDBEHACF
D. GDHEBFCA
解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:①前序,访问根一按前序遍历左予树一按前序遍历右子树;②中序,按中序遍历左子树一访问根一按中序遍历右子树;③后序,按后序遍历左子树一按后序遍历右子树一访问根。所以对该二叉树的中序遍历结果为ABDGEHCF。
4.某二叉树中度为2的结点有10个,则该二叉树中有( )个叶子结点。(C )
A. 9
B. 10
C. 11
D. 12
解析:根据二叉树的性质3:对任何一棵二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个。
5.运行下列程序时,若输入数据为“321”,则输出结果是( )。
main()
{ int num,i,j,k,s;
scanf(’’%d’’,& num);
if(num>99)
s=3:
else if(num>9) s=2;
else s=1;
i=num/100;
j=(num-i*100)/10;
k=(num-i*100-j*10);
switch(s)
{ case 3:printf(’’%d%d%d\n’’,k,j,i);
break;
case 2:printf(’’%d%d\n’’,k,j);
case 1:printf(’’%d\n’’,k);
}
}(A)
A. 123
B. 1,2,3
C. 321
D. 3,2,1
解析:本题考查if…else语句和switch语句。scanf函数通过键盘读入。num的值。因为“num=321>99”,所以“s=3,i=3,i=2,k=1”。因为s=3,所以执行case 3,输出k,i,i的值,然后通过break结束程序。
6.下面叙述中错误的是( )。(A)
A. 软件测试的目的是发现错误并改正错误
B. 对被调试的程序进行“错误定位”是程序调试的必要步骤
C. 程序调试通常也称为Debug
D. 软件测试应严格执行测试计划,排除测试的随意性
解析:软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。
7.有以下程序:
# include <stdio.h>
main()
{ unsigned char a=2, b=4, c=5, d;
d = a | b; d &= c; printf(\\(B)
A. 3
B. 4
C. 5
D. 6
解析:& 按位与,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。| 按位或,两个相应的二进制位中只要有一个为1,该位的结果值为1。2的二进制为00000010,4的二进制为00000100,所以做或运算结果为00000110,该数与5即00000101做与操作结果为00000100,即4
8.有以下程序:
#include<stdio.h>
struet S
{int a,b;}data[2]={10,1013,20,200};
main()
{stmct S p=data[1];
printf(\\(D)
A. 10
B. 11
C. 20
D. 21
解析:声明data是结构S数组。初始化data[0].a=10;data[0].b=100;data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[1].b;执行语句printf(\\
9.下列叙述中正确的是( )。(B)
A. 调用printf()函数时,必须要有输出项
B. 使用putchar()函数时,必须在之前包含头文件stdio.h
C. 在C语言中,整数可以以二进制、八进制或十六进制的形式输出
D. 调节getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码
解析:选项A),若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C),在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D),getchar函数是从标准输入设备读取一个字符。
10.有下列程序:
main()
{int m,n,p;
scanf(\\(A)
A. m=123n=456p=789
B. m=123 n=456 p=789
C. m=123,n=456,p=789
D. 123 456 789
解析:scanf()函数中格式控制字符串是为了输入数据用的,无论其中有什么字符,在输入数据时,按照一一对应的位置原样输入这些字符。
11.下列语句组中,正确的是( )。
A
解析:字符型指针变量可以用选项A的赋值方法:chars*;s=\\
12.下述语句中,在字符串s1和s2相等时显示“they are Equal”的是(
本文档预览:3600字符,共14143字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载