国家二级C语言机试(选择题)模拟试卷106 (题后含答案及解析)
题型有:1. 选择题
选择题
1. 深度为5的完全二叉树的结点数不可能是(    )。
A.15
B.16
C.17
D.18
正确答案:A
解析:对于满二叉树,叶子结点的数目等于2n—1,n为深度,这里就是24=16。 知识模块:选择题
2. 设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为(    )。
A.课号,成绩
B.学号,成绩
C.学号,课号
D.学号,姓名,成绩
正确答案:C
解析:学号是学生表S的主键,课号是课程表C的主键,因此选课表SC的关键字应该与前两个表能够直接联系且能唯一定义元组,学号和课号的组合满足条件。 知识模块:选择题
3. 若有定义:int a,b,c;,则以下选项中的赋值语句正确的是(    )。
A.a = (b = = c) = 1;
B.(a = b) = c = 1;
C.a = (b = c) + 1;
D.a + b = c;
正确答案:C
解析:赋值运算符的左侧必须为变量而不能是表达式,所以答案选C。 知识模块:选择题
4. 关于“while(条件表达式)循环体”,以下叙述中正确的是(    )。
A.循环体的执行次数总是比条件表达式的执行次数多一次
B.条件表达式的执行次数总是比循环体的执行次数多一次
C.条件表达式的执行次数与循环体的执行次数一样
D.条件表达式的执行次数与循环体的执行次数无关
正确答案:B
解析:考查while循环的执行过程。先计算括号内表达式的值,若不为0则执行循环体语句,若为0则跳出while循环,所以条件表达式的执行次数总是比循环体的执行次数多一次,答案选B。 知识模块:选择题
5. 以下语句中存在语法错误的是(    )。
A.char ss[6][20];ss[1]=″right?″;
B.char ss[][20]={″right?″};
C.char * ss[6];ss[1]=″right?″;
D.char * ss[]={″right?″};
正确答案:A二叉树的深度为k
解析:A项错误,数组定义后,不能对数组整体赋值,ss是二维数组,ss[1]是一维字符数组,即字符串,字符串赋值可以使用“strcpy(ss[1],″right″);”的形式,但不能使用赋值的形式。B、D两项正确,在定义时对数组同时进行初始化;C项正确,将常量字符串在内存中的
首地址赋给指针数组的一个元素。 知识模块:选择题
6. 以下叙述中正确的是(    )。
A.如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息
B.即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同
C.设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;
D.指针变量之间不能用关系运算符进行比较
正确答案:A
解析:空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存储单元,选项A正确。指针的赋值运算只能在同一数据类型之间进行,故选项B错。语句p=0和p=NULL是一样的,都是把一个空指针赋给指针变量p,故选项C错。指针之间能进行关系运算,比较的是地址值的大小,选项D错。答案选A。 知识模块:选择题
7. 有以下程序:#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);}程序运行后的输出结果是(    )。
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,
正确答案:B
解析:第一次调用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, 知识模块:选择题
8. 对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为(    )。
A.9
B.10
C.45
D.90
正确答案:C
解析:冒泡法是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,故C选项正确。 知识模块:选择题
9. 有以下定义:struct data  {int i;char c;double d;}  x;以下叙述中错误的是(    )。
A.x的内存地址与x.i的内存地址相同
B.struct data是一个类型名
C.初始化时,可以对x的所有成员同时赋初值
D.成员i、c和d占用的是同一个存储空间
正确答案:D
解析:i、c、d是结构体变量x中的三个不同的成员,占用不同的存储空间。 知识模块:选择题
10. C语言编译程序的功能是(    )。
A.执行一个C语言编写的源程序
B.把C源程序翻译成ASCⅡ码
C.把C源程序翻译成机器代码
D.把C源程序与系统提供的库函数组合成一个二进制执行文件
正确答案:C
解析:编译程序的功能是将“高级语言”翻译为“机器语言”。每条C语言语句,经过编译最终都将转换成二进制的机器指令。 知识模块:选择题
11. 有以下程序:#include<stdio.h>#define M 5#define f(x,y)x*y+Mmain( ){int k;k=f(2,3) *f(2,3);printf(″%d\n″,k);}程序的运行结果是(    )。
A.22
B.41
C.100
D.121
正确答案:B
解析:宏定义中的函数在调用时只做简单的替换功能。所以k=2*3+5*2*3+5=41。 知识模块:选择题
12. 设变量x为long int型,并已正确赋值,以下表达式中能将x的百位上的数字提取出的是(    )。
A.x/10%100
B.x%10/100
C.x%100/10

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。