国家二级(C语言)机试模拟试卷454
选择题
1.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为( )。(B)
A. 7
B. 8
C. 9
D. 10
解析:在具有n个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去非叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。
2.如果进栈序列为A,B,C,D,则可能的出栈序列是( )。(B)
A. C,A,D,B
B. B,D,C,A
C. C,D,A,B
D. 任意顺序
解析:栈的操作原则为后进先出。选项B中出栈顺序可按“A进,B进,B出,C进,D进,D出,C出,A出”实现。
3.以下选项中正确的语句组是( )。(D)
A. char s[];s=\\
B. char*s:s={\\
C. char s[10];s=\\
D. char*s:s=\\
解析:本题考查数组和字符串的赋值。选项A)中数组s没有明确其大小就赋值是错误的。选项B)中不能有大括号,选项C)中的写法应该为{’H’’E’’L’’L’’O’’!’}。
4.下面程序的输出结果是( )。
typedefunion{long x[1];
int y[4];
char z[10];
}M;
M t:
main()
{printf(\\(C)
A. 32
B. 26
C. 10
D. 4
解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员是联合体中占空间最长的成员。
5.设x=021,y=012,则z=xly的值是( )。(C)
A. 1
B. 0
C. 0001 101 1
D. 1 100001 0
解析:本题主要考查按位或运算。按位或是对两个运算对象相应的位进行逻辑或运算,其运算规则和逻辑或相同,两个运算对象只要有一个是1,则结果为1。
6.有以下程序
#include
typedef struct { int b, p; } A;
void f(A c) /* 注意:c是结构变量名 */
{ int j;
c.b += 1; c.p+=2;
}
main()
{ int i;
A a={1,2};
f(a);
printf(\\(A)
A. 1,2
B. 2,4
C. 1,4
D. 2,3
解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为1,2,答案选A)。
7.有以下程序
#include<stdio.h>
void main()
{int n=2,k=1;
while(!(k>0||n++));
printf(’’%d%d\n’’,k,n);
}
程序运行后的输出结果是( )。(D)
A. 0 2
B. 1 3
C. 5 7
D. 1 2
解析:在程序中整型变量n的初始值等于2,整型变量k的初始值等于1,在执行while语句时,由于表达式k的值大于0为真,所以不再需要判断“n++’是否为真,“(k>0‖n++)”表达式的值为真。“!(k>0‖n++)”表达式的值为假,所以while语句中的条件不满足,循环语句不会执行,变量n的值也不会加1,所在输出变量k和n的值是1和2。
8.已知下列函数定义:
fun(int*b,int c,int d)
{ int k;
for(k=0;k<c*d:k++)
{ *b=c+d;
b++;}
}
则调用此函数的止确写法是(假设变量a的说明为int a[10])( )。(C )
A. fun(*a,6,14);
B. fun(&a,6,8);
C. fun(a,8,4):
D. fun((int)a,8,6);
解析:本题考查函数调用时的参数传递。 fun函数的调用形式为fun(int*b,int c,int d)。调用数组时,用数组名表示一个指向数组的第一个元素的指针,因此调用时的形式为fun(a,8,4)。
9.以下有关宏的描述不正确的是( )。(D)
A. 宏定义不做语法检查
B. 双引号中出现的宏名不进行替换
C. 宏名无类型
D. 宏名必须用大写字母表示
解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,标识符称为宏名,无类型;②双引号中出现的宏名不替换;③宏名的定义通常用大写字母,但不是必须用大写;④宏定义不是赋值语句,不做语法检查。
10.以下非法的字符常量是( )。(A)
A. ’\\n’
B. ’\101’
C. ’\x21’
D. ’\0’
解析:C语言允许使用一些以特殊形式出现的字符常量,使用’\n’来表示换行,’\n’实际上是一个字符,它的ASCII码值为10,不存在’\\n’用法。
11.数据库管理系统是( )。(B)
A. 操作系统的一部分
B. 在操作系统支持下的系统软件
C. 一种编译系统
D. 一种操作系统
解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。
12.有以下程序:
#include
main()
{char c;
for(;(c=getchar())!=’#’;)putchar(++c);
}
执行时如输入为:abcdefg##,则输出结果是( )。(D)
A. abcdefg
B. bcdefgh$
C. bcdefgh$$
D. bcdefgh
解析:for循环每次将函数getchar()的输入值赋给变量c,如果不等于’#’,则执行putchar(++c),即将当前变量c的ASCII码加1后,再输出改变后的变量c的值。当变量c的值等于’#’,则终止循环,所以输出应该是bcdefgh。
13.工厂生产中所需的零件可以存放在多个仓库中,而每一仓库中可存放多种零件。则实体仓库和零件间的联系是( )。(A)
A. 多对多
B. 一对多
C. 多对一
D. 一对一
解析:零件可以存放在多个仓库中,而每一仓库中可存放多种零件,则实体仓库和零件间的联系是多对多。故本题答案为A选项。
14.若有以下程序段:
<本文档预览:3600字符,共14360字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载