国家二级(C语言)机试模拟试卷423
选择题
1.有以下程序:
#include<stdio.h>
#include<string.h>
main()
{
char str[][20]={\\(C)
A. 9,One*World
B. 9,One*Dream!
C. 10,One*Dream!
D. 10,One*World
解析:本题将两个字符串常量赋值给一个二维字符数组,用字符常量为字符数组:赋值需要在最后加上一个结束符“\0”表示字符串结束,所以数组长度为字符的个数加1,而且数组的下标是从0开始计数,所以p指向第二个字符串。
2.下列程序的输出结果为( )。
main()
{ union un
{char*name;
int age;
int pay;
}s;
s.name=“zhaoming”:
s.age=32;
s.pay=3000;
printf(“%d\n”,s.age);
}(B)
A. 32
B. 3000
C. 0
D. 不确定
解析:本题考查的是联合体的有关概念。因为联合体是各个成员共享一段存储空间,此段存储空间最终存放的是最后存入的成员的值,所以题目中输出s.age实际上输出了最后存入的3000,因为3000已经把原来存入的s.age(32)的值覆盖。
3.有以下程序:
#include<stdio.h>
#include<string.h>
struct A
{int a;char b[10];double c;};
void f(struct A*t);
main()
{struct A a={1001,\\(B)
A. 1001,zhangDa,1098.0
B. 1002,ChangRong,1202.0
C. 1001,ChangRong,1098.0
D. 1002,zhangDa,1202.0
解析:本题主要考查是的函数调用时参数之间的传递问题。在C语言中参数之间的传递是传值,也就是把实参的值复制一份传递给形参,而实参的值不发生变化。但对于指针调用来说,函数直接对实参的地址操作,因此在这种情况下实参变化。
4.有两个关系R和T如下:
(C)
A. 选择
B. 交
C. 投影
D. 并
解析:关系T是由关系R的第1、3列的元组组成,这是对关系R进行投影运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。
5.下列程序的运行结果是( )。
#include<stdio.h>
void sub(int*s,int*y)
{ static int m=4;
*y=s[0];
m++:
}
void main()
{ int a[]={1,2,3,4,5},k;
int x;
printf(’’\n’’);
for(k=0;k<=4;k++)
{ sub(a,&x);
printf(’’%d,’’,x);
}
}(A)
A. 1,1,1,1,1,
B. 1,2,3,4,5,
C. 0,0,0,0,0,
D. 4,4,4,4,4,
解析:本题中sub(int*s,int*y)函数的参数是两个指针型变量,在函数体内将数组s的第一个元素赋给y。主程序内,首先定义了一维数组并赋初值,然后通过for循环,5次调用sub(a,&x)函数,每一次调用都是将数组a的第一个元素1赋给x,并输出。
6.以下叙述中错误的是( )。(A)
A. 可以通过typedef增加新的类型
B. 可以用typedef将已存在的类型用一个新的名字来代表
C. 用typedef定义新的类型名后,原有类型名仍有效
D. 用typedef可以为各种类型起别名,但不能为变量起别名
解析:关键字typedef的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A错误。
7.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是( )。(C)
A. 10
B. 8
C. 6
D. 4
解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点总是比度为2的节点多一个,所以本题中是5+1=6个。
8.若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是( )。(D)
A. ++i;
B. n1=(n2/(n3=2));
C. k=i=j;
D. a=b+c=2;
解析:本题考查赋值表达式。赋值表达式的一般形式是:变量名=表达式。C语言规定,不能给变量表达式赋值。
9.有以下程序段:
#include<stdio.h>
int a,h,c;
a=10;b=50;c=30;
if(a>h)a=b,b=c;c=a;
printf(\\(B)
A. a=10 h=50 c=30
B. a=10 h=50 c=10
C. a=10 b=30 c=10
D. a=50 b=30 c=50
解析:本题中a>b的条件不满足,所以不执行逗号表达式a=b,b=c;的操作,而是执行c=a操作,即c的值为10。
10.在源程序的开始处加上“#include”进行文件引用的原因,以下叙述正确的是( )。(A)
A. stdio.h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数
B. 将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行
C. 将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接
D. 将stdio.h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接
解析:“stdio.h”文件中包含标准输入输出函数的函数说明,预处理指令#include是指程序可以在该文件中找到printf,scanf等标准输入输出函数。
11.下列语句组中,正确的是( )。
A
解析:字符型指针变量可以用选项A的赋值方法:char*s;s=\\
12.以下选项中不属于C语言标识符的是( )。(A)
A. 常量
B. 用户标识符
C. 关键字
D. 预定义标识符
<本文档预览:3600字符,共15196字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载