国家二级C语言机试(选择题)模拟试卷371
选择题
1.下列叙述中正确的是( )。(C)
A. 在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B. 在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C. 在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D. 以上说法都不正确
解析:栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择C选项。
2.以下叙述正确的是(B)
A. C语言程序是由过程和函数组成的
B. C语言函数可以嵌套调用,例如:fun(fun(x))
C. C语言函数不可以单独编译
D. C语言中除了main函数,其他函数不可作为单独文件形式存在
解析:在C语言中,允许函数的嵌套调用,即递归调用。在C语言中不存在过程的概念,在C语言中函数允许单独编译,可以作为单独的文件形式存在。
3.对下列二叉树
(A)
A. ACBDFEG
B. ACBDFGE
C. ABDCGEF
D. FCADBEG
解析:本题考查二叉树的遍历,中序遍历首先遍历左子树,然后访问根节点,最后遍历又子树,选A。
4.以下选项中可用作C程序合法实数的是(C)
A. 3.0e0.2
B. E9
C. .1e0
D. 9.12E
解析:C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要沣意的是字*e或E之前必须要有数字,且字*e或E后面的指数必须为整数。
5.结构化程序设计中,下面对goto语句使用描述正确的是( )。(C)
A. 禁止使用goto语句
B. 使用goto语句程序效率高
C. 应避免滥用goto语句
D. 以上说法都不对
解析:结构化程序设计中,应尽量避免使用GOTO语句,但不是禁止使用,所以选择C。
6.程序流程图中带有箭头的线段表示的是( )。(C)
A. 图元关系
B. 数据流
C. 控制流
D. 调用关系
解析:在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。
7.有以下程序
#include
main(){
int a=3;
printf(\\(D)
A. 9
B. 0
C. 3
D. -12
解析:对于表达式a+=a-=a*a相当于a=a-(a*a),然后计算a=a+a,a的初值为3,则表达式的值为-12。
8.有以下程序:
#include<stdio.h>
main()
{ int a=6,b=7,m=1;
switch(a%2)
{ case 0:m++;break;
case 1:m++:
switch(b%2)
{defaut:m++;
case0:m++;break;
}
}
printf(’’%d\n’’,m);
}
程序运行后的输出结果是( )。(B)
A. 1
B. 2
C. 3
D. 4
解析:本题考查switch语句。因为“a=6”,所以“a%2=0”,因此第一个switch语句,执行“case0”,将m加1,遇到break语句跳出switch语句,输出m值为2。
9.设栈的存储空间为S(1:50),初始状态为top=0。现经过一系列正常的入栈与退栈操作后,top=51,则栈中的元素个数为(A)
A. 不可能
B. 50
C. 0
D. 1
解析:栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位,即top-1。对于这个题目,由于top初始值等于0,此时入栈一个元素,top值减1,即0-1=-1,发生下溢错误,所以选项A正确。
10.以下选项中,当x为大于1的奇数时,值为0的表达式是(B)
A. x/2
B. x%2=0
C. x%21=0
D. x%2=1
解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项B等于关系表达式的结果为假,即等于0。
11.有以下稗宇:
#include
main()
{ int a=1,b=2,c=3,x;
x=(a^b.&c:
printf(“%d\n”,x);
}
程序的运行结果是( )。(A)
A. 3
B. 1
C. 2
D. 0
解析:本题考查位运算符以及相关运算。^为按位或,&为按位与,那么a^b为3,再与c按位与仍然为3,所以答案为A选项。
12.以下不合法的数值常量是( )。(A)
A. 8.0E0.5
B. 1e1
C. 011
D. Oxabcd
解析:A选项中E后面的指数必须为整型数据,所以错误。C选项中011表示的是八进制常量,0xabcd表示的是十六进制常量。
13.以下选项中不能作为C语言合法常量的是( )。(B)
A. O.1e+6
B. ’cd’
C. ’’\a’’
D. ’\011’
解析:要想表示字符串常量,应该用双引号表示,即’’ed’’,单引号用于表示字符常量,所以B选项中的表示方法错误。
14.若有定义:inta,b;通过语句scanf(’’%d;%d’,&a,&b);能把整数3赋给变量a,5赋给变量b的输入数据是(C)
A. 3.5
B. 35
C. 3;5
D. 35
解析:在采用scanf这个函数输入数据时,要严格遵守其输入的规则定义。本题此函数定义的规则是,存两个整数之间加分号输入。
15.下列叙述中错误的是(A)
A. 循环队列空的条件是队头指针与队尾指针相同
B. 若二叉树没有叶子结点,则为空二叉树
C. 带链栈的栈底指针是随栈的操作而动态变化的
D. 若带链队列中只有一个元素,则队头指针与队尾指针必定相同
解析:初始化建空队时,令front=rear=0,当队空时:front=rear;当队满时:front=rear亦成立。因此,只凭等式front=rear无法判断队空还是队满。有两种方法处理上述问题:①另设一个标志位以区别队列是空还是满;②少用一个元素空间,约定以“队列头指针front在队尾指针rear的下一个位置上”作为队列“满”状态的标志。即:队空时:front=rear;队满时:(rear+1)%maxsize=front。所以选项A正确。
本文档预览:3600字符,共10836字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载