国家二级C语言机试(选择题)模拟试卷596
选择题
1.深度为5的完全二叉树的结点数不可能是( )。(A)
A. 15
B. 16
C. 17
D. 18
解析:设完全二叉树的结点数为n,根据深度为m的二叉树最多有2<sup>m</sup>﹣1个结点,再根据完全二叉树的定义可知2<sup>m-1</sup>﹣1<n≤2<sup>m</sup>﹣1。本题中完全二叉树的深度为5,则2<sup>5-1</sup>﹣1<n≤2<sup>5</sup>﹣1.15<n≤31。因此,结点数不能为15。
2.以下叙述中错误的是( )。(B)
A. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
B. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
C. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
解析:C语言程序编译时将每条可执行语句转换为二进制的机器指令,但非执行语句(如注释语句)不被编译,故B选项错误。
3.关于“while(条件表达式)循环体”,以下叙述中正确的是( )。(B)
A. 循环体的执行次数总是比条件表达式的执行次数多一次
B. 条件表达式的执行次数总是比循环体的执行次数多一次
C. 条件表达式的执行次数与循环体的执行次数一样
D. 条件表达式的执行次数与循环体的执行次数无关
解析:先计算括号内条件表达式的值,若不为0则执行循环体语句,若为0则跳出while循环,所以条件表达式的执行次数总是比循环体的执行次数多一次。
4.以下叙述中正确的是( )。(A)
A. 当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
B. 打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C. 在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D. C语言中的文件是流式文件,因此只能顺序存取数据
解析:A选项正确,C语言通过文件缓冲区对文件进行操作,如果操作完成后不进行关闭文件,可能导致文件缓冲区中的数据丢失。B选项错误,打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等;C选项错误,在一个程序中当对文件进行了写操作后,用fseek()函数进行重新定位就能够读到第1个数据;D选项错误,C语言中的文件可以进行随机读写。
5.有以下程序:
#include <stdio.h>
void fun(int n)
{
static int x[3]={1,2,3};
int k;
for(k=0;k<3;k++)
x[k]+=x[k]﹣n;
for(k=0;k<3;k++)
printf(”%d,”,x[k]);
}
main()
{
fun(0);fun(1);
}
程序运行后的输出结果是( )。(B)
A. 1,2,3,0,2,4,
B. 2,4,6,3,7,11,
C. 2,4,6,1,3,5,
D. 1,2,3,4,5,6,
解析:第一次调用fun()函数,此时n=0,数组x是静态的,所以只在第一次时初始化,由x[k]+=x[k]﹣n计算可知,x[]={2,4,6},第二次调用fun()函数,此时n=1,x[]={2,4,6},经计算得x[]={3,7,11},故输出结果为2,4,6,3,7,11,。
6.一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的( )。(C)
A. 记录
B. 行
C. 属性
D. 元组
解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的必须是相同的属性组,并且要在结果中把重复的属性去掉,故C选项正确。
7.C语言编译程序的功能是( )。(C)
A. 执行一个C语言编写的源程序
B. 把C源程序翻译成ASCII码
C. 把C源程序翻译成机器代码
D. 把C源程序与系统提供的库函数组合成一个二进制执行文件
解析:编译程序的功能是将“高级语言”翻译为“机器语言”。每条C语言语句,经过编译最终都将转换成二进制的机器指令。
8.C语言程序中,若函数无返回值,则应该对函数说明的类型是( )。(D)
A. int
B. double
C. char
D. void
解析:int表示返回值是整型,double表示返回值是双精度型,char表示返回值是字符型,void表示无返回值。
9.有以下程序:
#include <stdio.h>
main()
{
int k=10;
printf(”%4d,%o,%x\n”,k,k,k);
}
程序运行后的输出结果是( )。(□代表一个空格。)(D)
A. 10,12,a
B. □□10,012,a
C. 010,12,a
D. □□10,12,a
解析:%4d表示先输出占4个字符的十进制,10已占2个字符,故先输出2个空格,然后输出10;%o表示输出八进制,所以输出10的八进制为12;%x表示输出十六进制,即a。
10.软件设计中划分模块的一个准则是( )。(B)
A. 低内聚、低耦合
B. 高内聚、低耦合
C. 低内聚、高耦合
D. 高内聚、高耦合
解析:一般较优秀的软件设计应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,故本题答案为B选项。
11.关于C语言标识符,以下叙述中错误的是( )。(A)
A. 标识符可全部由数字组成
B. 标识符可全部由下划线组成
C. 标识符可全部由小写字母组成
D. 标识符可全部由大写字母组成
解析:C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故A选项错误。
12.有以下程序:
#include <stdio.h>
main()
{
char c;
c=getchar();
do{
putchar(c++);
}while((c=getchar())!=’撑’);
}
程序运行时从第一列开始输入abcdefg##<回车>,则输出结果是( )。(A)
A. abcdefg
B. bcdefg
C. abcdef
本文档预览:3600字符,共9145字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载