1、国家二级 C语言机试(选择题)模拟试卷 78及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.数据结构主要研究的是数据的逻辑结构、数据的运算和( )。(分数:2.00)A.数据的方法B.数据的存储结构C.数据的对象D.数据的逻辑存储2.一棵二叉树的前序遍历结果是 ABCEDF,中序遍历结果是 CBAEDF,则其后序遍历的结果是( )。(分数:2.00)A.DBACEFB.CBEFDAC.FDAEBCD.DFABEC3.在数据处理中,其处理的最小单位是( )。(分数:2.00)A.数据B.数据项C.数据结构D.数据元素4.在数据库系统的内部结构体
2、系中,索引属于 ( )。(分数:2.00)A.模式B.内模式C.外模式D.概念模式5.以下( )不属于对象的基本特征。(分数:2.00)A.继承性B.封装性C.分类性D.多态性6.数据库系统的核心是( )。(分数:2.00)A.数据模型B.软件开发C.数据库设计D.数据库管理系统7.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做( )。(分数:2.00)A.软件矛盾B.软件危机C.软件耦合D.软件产生8.关系模型允许定义 3类数据约束,下列不属于数据约束的是( )。(分数:2.00)A.实体完整性约束B.参照完整性约束C.属性完整性约束D.用户自定义的完整性约束9.关系表中的
3、每一行记录称为一个( )。(分数:2.00)A.字段B.元组C.属性D.关键码10.在数据库管理技术的发展中,数据独立性最高的是( )。(分数:2.00)A.人工管理B.文件系统C.数据库系统D.数据模型11.以下叙述错误的是( )。(分数:2.00)A.C语言区分大小写B.C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C.整数和实数都能用 C语言准确无误地表示出来D.在 C程序中,正整数可以用十进制、八进制和十六进制的形式来表示12.有以下程序段: int i,n; for(i=0;i8;i+) n=rand()5; switch(n) case 1: cas
4、e 3:printf(dn,n);break; case2: case 4:printf(dn,n);continue; case 0:exit(0); printf(dn“,n); 以下关于程序段执行情况的叙述,正确的是( )(分数:2.00)A.for循环语句固定执行 8次B.当产生的随机数 n为 4时结束循环操作C.当产生的随机数 n为 1和 2时不做任何操作D.当产生的随机数 n为 0时结束程序运行13.可在 C程序中用作用户标识符的一组标识符是 ( )。(分数:2.00)A.void define WORDB.as_b3 _123 IfC.For -abc caseD.2c DO S
5、IG14.若变量已正确定义并赋值,则以下符合 C语言语法的表达式是( )。(分数:2.00)A.a=a+7;B.a=7+b+c,a+C.int(1234)D.a=a+7=c+b15.有以下程序段 char ch;int k; ch=a:k=12; printf(“c,d,ch,ch,k); printf(k=dn“,k); 已知字符 a的 ASCII十进制代码为 97,则执行上述程序段后输出结果是( )。(分数:2.00)A.因变量类型与格式描述符的类型不匹配输出无定值B.输出项与格式描述符个数不符,输出为零值或不定值C.a,97,12k=12D.a,97,k=1216.下列叙述中错误的是(
6、)。(分数:2.00)A.计算机不能直接执行用 C语言编写的源程序B.C程序经 C编译程序编译后,生成后缀为obj 的文件是一个二进制文件C.后缀为obj 的文件,经连接程序生成后缀为exe 的文件是一个二进制文件D.后缀为obj 和exe 的二进制文件都可以直接运行17.有以下程序#includestdiohvoid main() int a=1,b=0;printf(d,b=(a+)+(a+);printf(dn,a+b);程序运行后的输出结果是( )。(分数:2.00)A.4,6B.2,5C.3,5D.2,618.若有代数式 (分数:2.00)A.sqrt(abs(nx+ex)B.sqr
7、t(fabs(pow(n,x)+pow(x,e)C.sqrt(fabs(pow(n,x)+exp(x)D.sqrt(fabs(pow(x,n)+exp(x)19.设有定义:int k=0;,下列选项的 4个表达式中与其他 3个表达式的值不相同的是( )。(分数:2.00)A.k+B.k+=1C.+kD.k+120.有下列程序,其中u 表示按无符号整数输出。 main() unsigned int x=0xFFFF; *x 的初值为十六进制数 * printf(un,x); 程序运行后的输出结果是( )。(分数:2.00)A.-1B.65535C.32767D.0xFFFF21.下面程序的运行结
8、果是( )。 for(i=3;i7;i+) printf(i2) ? (*dn): (#dn),i);(分数:2.00)A.*3 #4 *5 *6B.#3 *4 #5 *6C.#3 *4 #5 #6D.*3 #4 *5 #622.设有语句:if(a=1)b=2;c=3;,以下语句中与之等价的是( )。(分数:2.00)A.if(a=1)b=2;c=3;B.if(a!=1); elseb=2;c=3;C.if(a=1)c=3;b=2;D.(a=1)?b=2;a=a;c=3;23.运行下列程序时,若输入数据为“321”,则输出结果是( )。 main() int num,i,j,k,s; scan
9、f(d, else s=1; i=num100; j=(num-i*100)10; k=(num-i*100-j*10); switch(s) case 3:printf(dddn,k,j,i); break; case 2:printf(ddn,k,j); case 1:printf(dn,k); (分数:2.00)A.123B.1,2,3C.321D.3,2,124.有以下程序 #includestdioh #includestringh struct A int a;char b10;double c; struct A f(struct A t); main() struct A a=
10、1001,“ZhangDa“,10980; a=f(a);printf(d,s,61 fn,aa,ab,ac); struct A f(struct A t) t.a=1002; strcpy(t.b,WangPeng);t.c=12200;return t; 程序运行后的输出结果是( )。(分数:2.00)A.1001,ZhangDa,10980B.1002,ZhangDa,12200C.1001,WangPeng,10980D.1002,WangPeng,1220025.判断 char型变量 c1是否为小写字母的正确表达式为( )。(分数:2.00)A.a=c1=zB.(c1=a)j=i;
11、j+) s+=aiajj; printf(dn,s); (分数:2.00)A.3B.4C.1D.933.有以下程序: #includestdio.h #define X 5+6 main() inta=2,c; c=X*2: printf(d,c); 程序运行后的输出结果是( )。(分数:2.00)A.17B.22C.16D.1134.当用“#define F 375f”定义后,下列叙述正确的是( )。(分数:2.00)A.F是 float型数B.F是 char型数C.F无类型D.F是字符串35.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是( )。(分数:2.0
12、0)A.a=(b=4)=3;B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);36.以下说法正确的是( )。(分数:2.00)A.宏定义是 C语句,要在行末加分号B.可以使用#undefine 提前结束宏名的使用C.在进行宏定义时,宏定义不能嵌套D.双引号中出现的宏名也要进行替换37.下面程序的输出结果是( )。 Typedef unionlong x1; int y4; char z10; M; M t: main() printf(dn“,sizeoft);(分数:2.00)A.32B.26C.lOD.438.以下程序中函数 sort的功能是对 a数组中的数据进行由大
13、到小的排序 void sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1 ;jn;j+) if(aiaj)t=ai;ai=aj;aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; sort( else s=1; i=num100; j=(num-i*100)10; k=(num-i*100-j*10); switch(s) case 3:printf(dddn,k,j,i); break; case 2:printf(ddn,k,j); case 1:printf(dn,k); (分数:2.00
14、)A.123 B.1,2,3C.321D.3,2,1解析:解析:本题考查 ifelse语句和 switch语句。scanf 函数通过键盘读入。num 的值。因为“num=32199”,所以“s=3,i=3,i=2,k=1”。因为 s=3,所以执行 case 3,输出 k,i,i 的值,然后通过 break结束程序。24.有以下程序 #includestdioh #includestringh struct A int a;char b10;double c; struct A f(struct A t); main() struct A a=1001,“ZhangDa“,10980; a=f(
15、a);printf(d,s,61 fn,aa,ab,ac); struct A f(struct A t) t.a=1002; strcpy(t.b,WangPeng);t.c=12200;return t; 程序运行后的输出结果是( )。(分数:2.00)A.1001,ZhangDa,10980B.1002,ZhangDa,12200C.1001,WangPeng,10980D.1002,WangPeng,12200 解析:解析:在主函数中定义结构体 A的变量 a,并对其赋初值,再调用函数 f(a),在函数 f(a)中对结构体变量 a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。2
16、5.判断 char型变量 c1是否为小写字母的正确表达式为( )。(分数:2.00)A.a=c1=zB.(c1=a)j=i;j+) s+=aiajj; printf(dn,s); (分数:2.00)A.3B.4 C.1D.9解析:解析:当外层循环为 i时,内层循环 j只能取 j=i,所以 s+=aiaj/,其实就是 s+=aiaii/,当 i=0时,s=s+a0a00/=s+a00=1,当 i=1时 s=s+a1a11/=s+a11=1+l=2,当 i=2时,s=s+a2a22/=s+a22=2+2=4。33.有以下程序: #includestdio.h #define X 5+6 main(
17、) inta=2,c; c=X*2: printf(d,c); 程序运行后的输出结果是( )。(分数:2.00)A.17 B.22C.16D.11解析:解析:define 语句仅进行简单替换,因此 c=5+6*2=17。34.当用“#define F 375f”定义后,下列叙述正确的是( )。(分数:2.00)A.F是 float型数B.F是 char型数C.F无类型D.F是字符串 解析:解析:字符替换定义格式为:#define 标识符(形参表)形参表达式。题中 F是代表形参表达式的标识符(字符串)。35.若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是( )。(分
18、数:2.00)A.a=(b=4)=3; B.a=b=c+1;C.a=(b=4)+c;D.a=1+(b=c=4);解析:解析:这道题目主要考察赋值表达式,对于赋值表达式来说,赋值号“=”的左边一定为变量名,右边为一个 C语言合法的表达式。36.以下说法正确的是( )。(分数:2.00)A.宏定义是 C语句,要在行末加分号B.可以使用#undefine 提前结束宏名的使用 C.在进行宏定义时,宏定义不能嵌套D.双引号中出现的宏名也要进行替换解析:解析:本题考查宏的使用规则:字符替换格式:#define 标识符字符串,行末不加分号;双引号中出现的宏名不替换;如果提前结束宏名的使用,程序中可以使用#u
19、ndefine;在进行宏定义时,宏定义能层层置换,能够嵌套。37.下面程序的输出结果是( )。 Typedef unionlong x1; int y4; char z10; M; M t: main() printf(dn“,sizeoft);(分数:2.00)A.32B.26C.lO D.4解析:解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的 z10成员是联合体中占空间最长的成员。38.以下程序中函数 sort的功能是对 a数组中的数据进行由大到小的排序 void sort(int a,int n) int i,j,t; for(i=0;in-1;i+) for(j
20、=i+1 ;jn;j+) if(aiaj)t=ai;ai=aj;aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; sort(&aa3,5); for(i=0;j10;i+)ptintf(d,aai); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,8,7,6,5,4,3,2,1,C.1,2,3,8,7,6,5,4,9,10, D.1,2,10,9,8,7,6,5,4,3,解析:解析:程序中 sort函数的功能是对数组中的数据进行从大到小的排序。主函数 main中调用函数
21、“sort(&aa3,5);”,使得数组 aa中从第 4个元素开始的 5个元素进行从大到小的排序,数组 aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。39.设 x=06l,y=016,则 z=xy 的值是( )。(分数:2.00)A.00001111B.11111111C.00111111 D.11000000解析:解析:本题主要考查按位或运算,x=061(二进制为 00110001),y=016(二进制为 00001110),进行或运算后结果为 00111111。40.函数 rewind(fp)的作用是( )。(分数:2.00)A.使 fp指定的文件的位置指针重新定位到文件的开始位置 B.将 fp指定的文件的位置指针指向文件中所要求的特定位置C.使 fp指定的文件的位置指针向文件的末尾D.使 fp指定的文件的位置指针自动移至下一个字符位置解析:解析:位置指针重返文件头函数 rewind()的调用形式为:rewind(fp)。其中,“fp”是指向文件的文件型指针。rewind(fp)的功能是:使 fp指定的文件的位置指针重新定位到文件的开始位置。