国家二级C语言机试(选择题)模拟试卷378
选择题
1.以下叙述中正确的是(C)
A. 每个后缀为.c的C语言源程序都应该包含一个main函数
B. 在C语言程序中,main函数必须放在其他函数的最前面
C. 每个后缀为.c的C语言源程序都可以单独进行编译
D. 在C语言程序中,只有main函数才可单独进行编译
解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才可以执行。
2.下列叙述中正确的是(C)
A. 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B. 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D. 上述三种说法都不对
解析:在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,遵循后进先出的规则。
3.下面对软件特点描述正确的是( )。(D)
A. 软件具有明显的制作过程
B. 软件在使用中存在磨损、老化问题
C. 软件复制不涉及知识产权
D. 软件是一种逻辑实体,具有抽象性
解析:软件具有以下特点:软件是一种逻辑实体,而不是物理实体,具有抽象性;软件的生产与硬件不同,它没有明显的制作过程;软件在运行、使用期间不存在磨损、老化问题;软件的开发、运行对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素(包括软件知识产权及法律等问题)。
4.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是(A)
A. c=(’A’+c)%26-’a’
B. c=C+32
C. c=C-’A’+’a’
D. c=(C-’A’)%26+’a’
解析:由题意可知,小写字符a和大写字符A的ASCⅡ代码相差为32,所以选项C能将大写字符C的ASCII代码转换为小写字符c的ASCII代码;选项D和C)左侧的表达式都是大写字符C与大写字符A的差与’a’的ASC II代码的和就是小写字符c的ASC II代码。而选项A中应该是加上’a’,而不是减去’a’。
5.结构化程序设计中,下面对goto语句使用描述正确的是( )。(C)
A. 禁止使用goto语句
B. 使用goto语句程序效率高
C. 应避免滥用goto语句
D. 以上说法都不对
解析:结构化程序设计中,应尽量避免使用GOTO语句,但不是禁止使用,所以选择C。
6.面向对象方法中,继承是指(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。
7.下列定义变量的语句中错误的是( )。(D)
A. int_int;
B. double int;
C. char For;
D. float US$;
解析:C语言规定,变量命名必须符合标识符的命名规则。D选项中包含了非法字符“$”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。大写字符与小写字符被认为是两个不同的字符,所以For不是关键字for。
8.某二叉树共有399个结点,其中有199个度为2的结点,则该二叉树中的叶子结点数为(B)
A. 不存在这样的二叉树
B. 200
C. 198
D. 199
解析:在二叉树中,设叶子结点个数为n0,度为2的结点个数为n2,叶子结点的个数计算方法n0=n2+1=199+1=200,所以选项B正确。
9.若a、b、c、d都是int型变量且都已经正确赋初值,则以下不正确的赋值语句是( )。(A)
A. a+d:
B. a++;
C. a=b=c=d=100;
D. a=(b=3)+(d=5);
解析:C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C、选项D正确;在选项B中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式;选项A中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。
10.若有以下程序段:
int r=8;
printf(”%d\n”,r>>1);
输出结果是( )。(C)
A. 16
B. 8
C. 4
D. 2
解析:本题考查位运算,属于基础知识。题目中的整型变量8,二进制表达为00001000,右移一位为00000100,即4,C选项正确。
11.以下叙述中错误的是( )。(B)
A. gets函数用于从终端读入字符串
B. getchar函数用于从磁盘文件读人字符
C. fputs函数用于把字符串输出到文件
D. fwrite函数用于以二进制形式输出数据到文件
解析:本题考查字符处理函数和文件做操函数,属于基础知识。其中B选项的getehar函数用于从终端读入字符。
12.在数据管理技术发展的三个阶段中,数据共享最好的是(C)
A. 人工管理阶段
B. 文件系统阶段
C. 数据库系统阶段
D. 三个阶段相同
解析:数据管理技术的发展经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段无共享,冗余度大;文件管理阶段共享性差,冗余度大;数据库系统管理阶段共享性大,冗余度小。
13.若变量已正确定义,则语句s=32;s^=32;printf(\\(B)
A. -1
B. 0
C. 1
D. 32
解析:本题考查逻辑异或运算。异或运算只有在两个比较的位不同时其结果为1,否则结果为0,题目中两个值相同,所以结果为0。
14.子函数的功能是通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是( )。
#include
#defineN 5
void fun(int x[N])
{ int m;
for(m=N一1;m>=0;m一一)scanf(’’%d’’,__);}(A)
A. x+m
B. x[++m]
C. x+(m++)
D. x[m+1]
解析:本题用for循环给数组赋值,与上题类似,选项B和选项D不是地址,错误。选项A和选项C是地址,但是选项C的m值会++自增,然后for循环里面又m一一自减,会导致死循环,不满足要求,选项A正确。
15.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是(C)
A. DB包含DBS和DBMS
B. DBMS包含DB和DBS
C. DBS包含DB和DBMS
D. 没有任何关系
解析:
本文档预览:3600字符,共10985字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载