1、二级 C 语言真题 2016 年 03 月及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.有以下定义: struct data int i;char c;double d;x; 以下叙述中错误的是_。(分数:1.00)A.x 的内存地址与 x. i 的内存地址相同B.struct data 是一个类型名C.初始化时,可以对 x 的所有成员同时赋初值D.成员 i、c 和 d 占用的是同一个存储空间2.以下函数的功能是:计算 a 的 n 次方作为函数值返回。 double fun(double a,int n) int i;double s=1
2、.0; for(i=1;i=n;i+)s=_; return s; 为实现上述功能,函数中下划线处应填入的是_。(分数:1.00)A.s*iB.s*aC.s+i*iD.s+a*a3.有以下程序: #includestdio.h #includestring.h main( ) char str =“Hello,Beijing“; printf(“%d,%d/n“,strlen(str),sizeof(str); 程序的运行结果是_。(分数:1.00)A.13,13B.13,14C.13,15D.14,154.若有说明:typedef structint a;char c;w;,则以下叙述正确的
3、是_。(分数:1.00)A.编译后系统为 w 分配 5 个字节B.编译后系统为 w 分配 6 个字节C.编译后系统为 w 分配 8 个字节D.编译后系统不为 w 分配存储空间5.以下叙述中错误的是_。(分数:1.00)A.同一个数组中所有元素的类型相同B.不可以跳过前面的数组元素,给后面的元素赋初值 0C.定义语句:int a10=0,给 a 数组中所有元素赋初值 0D.若有定义语句:int a4=1,2,3,4,5;,编译时将忽略多余的初值6.若有以下定义: struct ttchar name10;char sex;aa=“aaaa“,“F“,*p= 则错误的语句是_。(分数:1.00)A
4、.scanf(“%c“,aa.sex);B.aa.sex=getchar( );C.printf(“%c/n“,(*p).sex);D.printf(“%c/n“,p-sex);7.C 语言编译程序的功能是_。(分数:1.00)A.执行一个 C 语言编写的源程序B.把 C 源程序翻译成 ASCII 码C.把 C 源程序翻译成机器代码D.把 C 源程序与系统提供的库函数组合成一个二进制执行文件8.有以下程序: #includestdio.h int fun(int n) if(n)return fun(n-1)+n; else return 0; main( ) printf(“%d/n“,fu
5、n(3); 程序的运行结果是_。(分数:1.00)A.4B.5C.6D.79.有以下程序: #includestdio.h main( ) int sum=0,x=5; dosum+=x;while(!-x); printf(“%d/n“,sum); 程序的运行结果是_。(分数:1.00)A.0B.5C.14D.1510.下面不属于软件设计阶段任务的是_。(分数:1.00)A.软件的功能确定B.软件的总体结构设计C.软件的数据设计D.软件的过程设计11.有以下程序: #includestdio.h #includestring.h typedef structchar name9;char s
6、ex;float score2;STU; void f(STU*a) strcpy(a-name,“Zhao“); a-sex=“In“;a-score1=90.0; main( ) STU c=“Qian“,“f“,95.0,92.0,*d= f(d);printf(“%s,%c,%2.Of,%2.0f/n“,d-name,c.sex,c.score0,c.score1); 程序的运行结果是_。(分数:1.00)A.Qian,f,95,92B.Zhao,f,95,90C.Zhao,m,95,90D.Zhao,f,95,9212.在 C 语言程序中,下列说法正确的是_。(分数:1.00)A.函
7、数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套13.执行以下程序段后,s 的值为_。 int a =1,2,3,4,5,6,7,8,9,s=0,k; for(k=0;k8;k+=2)S+=*(a+k);(分数:1.00)A.13B.16C.17D.4514.有以下程序: #includestdio.h #define M 5 #define f(x,y) x*y+M main( ) int k; k=f(2,3)*f(2,3); printf(“%d/n“,k); 程序的运行结果是_。(分数:
8、1.00)A.22B.41C.100D.12115.有以下程序: #includestdio.h main( ) char ch=“Z“; ch=(ch-“A“+1)%26+“A“;putchar(ch); 程序的运行结果是_。(分数:1.00)AZBYCBDA16.下面属于黑盒测试方法的是_。(分数:1.00)A.基本路径测试B.等价类划分C.判定覆盖测试D.语句覆盖测试17.有以下程序: #includestdio.h main( ) int i,j,k,a=5,b=6; i=(a=b)?+a:-b; j=a+;k=b;printf(“%d,%d,%d/n“,i,j,k); 程序的运行结果
9、是_。(分数:1.00)A.7,6,5B.5,5,5C.7,5,5D.5,6,518.C 语言程序中,若函数无返回值,则应该对函数说明的类型是_。(分数:1.00)A.intB.doubleC.charD.void19.有以下程序: #includestdio.h main( ) int k,n=0;char c,str=“teach“; for(k=0;strk;k+) c=strk; switch(k) case 1: case 3: case 5: putchar(c);printf(“%d“,+n);break;default:putehar(“N“); 序的运行结果是_。(分数:1.
10、00)A.Ne1NNB.e1a2e3C.Ne1Nc2ND.Na1NNNN20.有以下程序: #includestdio.h void fun(char(*P)6) int i; for(i=0;i4;i+)printf(“%c“,Pii); printf(“/n“); main( ) char s66=IfABCDE“,“abcde“,“12345“,“FGHIJ“,“fghij“,“54321“; fun(s); 程序的运行结果是_。(分数:1.00)A.Aa1FB.Ab3IC.ABCDD.fghij21.设变量 x 为 long int 型并已正确赋值,以下表达式中能将 x 的百位上的数字
11、提取出的是_。(分数:1.00)A.x/10%100B.x%10/100C.x%100/10D.x/100%1022.在 E-R 图中,表示实体的图形是_。(分数:1.00)A.矩形B.椭圆C.菱形D圆23.下面对软件特点描述不正确的是_。(分数:1.00)A.软件是一种逻辑实体,具有抽象性B.软件开发、运行对计算机系统具有依赖性C.软件开发涉及软件知识产权、法律及心理等社会因素D.软件运行存在磨损和老化问题24.设 x,y,z 均为实型变量,代数式 (分数:1.00)A.x/y*zB.x%y%zC.x/y/zD.x*z/y25.有以下程序: #includestdio.h #define N
12、 4 void fun(int aN,int b) int i; for(i=0;iN;i+)bi=aiN-1-i; main( ) int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i; fun(x,y); for(i=0;iN;i+)printf(“%d,“,yi); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.1,2,3,4,B.3,6,9,12,C.4,7,10,13,D.1,5,9,13,26.在下列链表中,能够从任意一个结点出发直接访问到所有结点的是_。(分数:1.00)A.单链表B.循环链表C.双向链表D
13、.二叉链表27.有以下程序: #includestdio,h main( ) int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2=0)continue;x+; x+; printf(“x=%d/n“,x); 程序的运行结果是_。(分数:1.00)A.x=4B.x=6C.x=8D.x=1228.对图书进行编目时,图书有如下属性:ISBN 书号,书名,作者,出版社,出版日期。能作为关键字的是_。(分数:1.00)A.ISBN 书号B.书名C.作者,出版社D.出版社,出版日期29.若主函数中有定义语句:int a10,b10,c;,在主函数前
14、定义的 fun 函数首部为:void fun(int x ),则以下选项中错误的调用语句是_。(分数:1.00)A.fun(b);B.fun(C.fun(D.:fun(b11);30.构成 C 语言程序的三种基本结构是_。(分数:1.00)A.顺序结构、转移结构、递归结构B.顺序结构、嵌套结构、递归结构C.顺序结构、选择结构、循环结构D.选择结构、循环结构、嵌套结构31.下列形式中不合法的常量是_。(分数:1.00)A.2.E8B.-.28C.-028D.2e-832.下列与栈结构有关联的是_。(分数:1.00)A.数组的定义域使用B.操作系统的进程调度C.函数的递归调用D.选择结构的执行33
15、.以下不是 C 语言字符型或字符串常量的是_。(分数:1.00)A.“It“s“B.“0“C.“a=0“D.“/010“34.下列数据结构中,属于非线性结构的是_。(分数:1.00)A.双向链表B.循环链表C.二叉链表D.循环队列35.有以下程序: #includestdio.h main( ) int k=10; printf(“%4d,%0,%x/n“,k,k,k); 程序的运行结果是_。(代表一个空格)(分数:1.00)A.10,12,aB.10,012,aC.010,12,aD.10,12,a36.数据库管理系统是_。(分数:1.00)A.操作系统的一部分B.系统软件C.一种编译系统D
16、.一种通信软件系统37.若有定义:int a=1,b=2,c=3;,则执行表达式(a=b+c)|(+b)后,a,b,c 的值依次为_。(分数:1.00)A.1,2,3B.5,3,2C.5,2,3D.5,3,338.有两个关系 R 和 T 如下: R A B C a 1 2 b 4 4 c 2 3 d 3 2 T A C a 2 b 4 c 3 d 2 则由关系 R 得到关系 T 的操作是_。(分数:1.00)A.选择B交C.投影D并39.设有:char s5,c;,则调用函数 scanf 能正确给 s 和 c 读入数据的是_。(分数:1.00)A.scanf(“%s%c“,s,c);B.sca
17、nf(“%d%c“,C.scanf(“%d%c“,s,D.scanf(“%s%c“,s,40.若变量已正确定义并赋值,则错误的赋值语句是_。(分数:1.00)A.a+=a+1;B.a=sizeof(double);C.a=d|c;D.a+1=a;二、程序填空题(总题数:1,分数:18.00)41.下列给定的程序中,函数 fun()的功能是:求出以下分数序列的前 n 项和。2/1,3/2,5/3,8/5,13/8,21/13,和值通过函数值返回 main()函数。例如,若输入 n=5,则应输出 8.391667。 注意: 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的横线
18、上填入所编写的若干表达式或语句。试题源程序 #incdestdio.h #includeconio.h double fun(int n) int a=2,b=1,c,k; double 1; for(k=1;k:n;k+) s=s+1.0*a/b; c=a;a+= 2;b=c; return(s); main( ) int n=5; printf(“/nThe value of function is:%lf/n“, 3); (分数:18.00)三、程序修改题(总题数:1,分数:18.00)42.给定程序中函数 fun 的功能是:根据整型形参 m,计算如下公式的值。 (分数:18.00)_四
19、、程序设计题(总题数:1,分数:24.00)43.请编写函数 fun( ),该函数的功能是:移动一维数组中的内容,若数组中有 n 个整数,要求把下标从pn-1(pn-1)的数组元素平移到数组的前面。 例如,一维数组中的原始内容为 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,P 的值为 6。移动后,一维数组的内容应为 7,8,9,10,1 1,12,13,14,15,1,2,3,4,5,6。 注意: 请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。 试题源程序 #includestdio.h #define N 80
20、 void fun(int *w,int p,int n) main( ) int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15; int i,p,n=15; printf(“The original data:/n“); for(i=0;in;i+) printf(“%3d“,ai); printf(“/n/nEnter p:“); scanf(“%d“, fun(a,p,n); printf(“/nThe data after moving:/n“); for(i=0;in;i+) printf(“%3d“,ai); printf(“/n/n“); (分数:
21、24.00)_二级 C 语言真题 2016 年 03 月答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.有以下定义: struct data int i;char c;double d;x; 以下叙述中错误的是_。(分数:1.00)A.x 的内存地址与 x. i 的内存地址相同B.struct data 是一个类型名C.初始化时,可以对 x 的所有成员同时赋初值D.成员 i、c 和 d 占用的是同一个存储空间 解析:解析 变量 i、c、d 是结构体变量 x 中三个不同的成员,占用不同的存储空间。2.以下函数的功能是:计算 a 的 n 次方作为
22、函数值返回。 double fun(double a,int n) int i;double s=1.0; for(i=1;i=n;i+)s=_; return s; 为实现上述功能,函数中下划线处应填入的是_。(分数:1.00)A.s*iB.s*a C.s+i*iD.s+a*a解析:解析 s 为 a 的(i-1)次方的结果,所以令 s=s*a 即可得到 a 的 i 次方。3.有以下程序: #includestdio.h #includestring.h main( ) char str =“Hello,Beijing“; printf(“%d,%d/n“,strlen(str),sizeof
23、(str); 程序的运行结果是_。(分数:1.00)A.13,13B.13,14 C.13,15D.14,15解析:解析 strlen 返回字符串的长度,不包含字符串末尾的结束字符“/0“,结果为 13;sizeof 返回字符串所占存储空间的大小,由于字符串最后要加上一个“/0“,所以结果为 13+1=14。4.若有说明:typedef structint a;char c;w;,则以下叙述正确的是_。(分数:1.00)A.编译后系统为 w 分配 5 个字节B.编译后系统为 w 分配 6 个字节C.编译后系统为 w 分配 8 个字节D.编译后系统不为 w 分配存储空间 解析:解析 w 是一个自
24、定义类型,不是变量,故编译后系统不为 w 分配存储空间。当 w 定义为结构体变量时才会为其分配存储空间。5.以下叙述中错误的是_。(分数:1.00)A.同一个数组中所有元素的类型相同B.不可以跳过前面的数组元素,给后面的元素赋初值 0C.定义语句:int a10=0,给 a 数组中所有元素赋初值 0D.若有定义语句:int a4=1,2,3,4,5;,编译时将忽略多余的初值 解析:解析 数组初始化时,若赋初值的个数多于所定义数组的元素个数时,编译器会报错。6.若有以下定义: struct ttchar name10;char sex;aa=“aaaa“,“F“,*p= 则错误的语句是_。(分数
25、:1.00)A.scanf(“%c“,aa.sex); B.aa.sex=getchar( );C.printf(“%c/n“,(*p).sex);D.printf(“%c/n“,p-sex);解析:解析 sex 是一个 char 类型变量,不是地址,A 项应为 scanf(“%c“,。7.C 语言编译程序的功能是_。(分数:1.00)A.执行一个 C 语言编写的源程序B.把 C 源程序翻译成 ASCII 码C.把 C 源程序翻译成机器代码 D.把 C 源程序与系统提供的库函数组合成一个二进制执行文件解析:解析 编译程序的功能是将“高级语言”翻译为“机器语言”,将 C 语言语句转换成二进制的机
26、器指令。8.有以下程序: #includestdio.h int fun(int n) if(n)return fun(n-1)+n; else return 0; main( ) printf(“%d/n“,fun(3); 程序的运行结果是_。(分数:1.00)A.4B.5C.6 D.7解析:解析 fun 函数是一个递归函数,调用 f(3),参数 n=3,返回 f(3-1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。9.有以下程序: #includestdio.h main( ) int sum=0,x=5; dosum+=x;while(!-x); printf
27、(“%d/n“,sum); 程序的运行结果是_。(分数:1.00)A.0B.5 C.14D.15解析:解析 do-while 循环,先执行循环体 sum+=x,则 sum=sum+x=0+5=5,再执行 while 中的表达式,结果为 0,退出循环,所以运行结果是 5。10.下面不属于软件设计阶段任务的是_。(分数:1.00)A.软件的功能确定 B.软件的总体结构设计C.软件的数据设计D.软件的过程设计解析:解析 软件设计阶段的任务包括:结构设计;数据设计;接口设计;过程设计。软件的功能确定是在需求分析阶段完成的。11.有以下程序: #includestdio.h #includestring
28、.h typedef structchar name9;char sex;float score2;STU; void f(STU*a) strcpy(a-name,“Zhao“); a-sex=“In“;a-score1=90.0; main( ) STU c=“Qian“,“f“,95.0,92.0,*d= f(d);printf(“%s,%c,%2.Of,%2.0f/n“,d-name,c.sex,c.score0,c.score1); 程序的运行结果是_。(分数:1.00)A.Qian,f,95,92B.Zhao,f,95,90C.Zhao,m,95,90 D.Zhao,f,95,92
29、解析:解析 f 函数调用时,结构体数组名作为实参传给形参指针,结构体指针 a 指向数组 c 的首地址。因此,f 可以对数组 c 中的元素赋值,故返回主函数之后,数组 c 中的成员值已被更新。main 函数中有赋值语句“*d=“,指针 d 指向结构体数组 c 的首地址,故 d-name=c.name,输出结果为Zhao,m,95,90。12.在 C 语言程序中,下列说法正确的是_。(分数:1.00)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套解析:解析 函数定义都是在函数外部进行的,函
30、数调用是在函数内部进行的,所以函数的定义不可以嵌套,但函数的调用可以嵌套。13.执行以下程序段后,s 的值为_。 int a =1,2,3,4,5,6,7,8,9,s=0,k; for(k=0;k8;k+=2)S+=*(a+k);(分数:1.00)A.13B.16 C.17D.45解析:解析 数组 a 中的元素为:a0=1,a1=2,a8=9。k=0 时,s=s+*(a+0)=0+1=1;k=2 时,s=1+*(a+2)=1+3=4;k=4 时,s=4+5=9;k=6 时,s=9+7=16。14.有以下程序: #includestdio.h #define M 5 #define f(x,y)
31、 x*y+M main( ) int k; k=f(2,3)*f(2,3); printf(“%d/n“,k); 程序的运行结果是_。(分数:1.00)A.22B.41 C.100D.121解析:解析 宏定义中的函数在调用时只做简单的替换,不能进行任何修改。所以 k=2*3+5*2*3+5=41。15.有以下程序: #includestdio.h main( ) char ch=“Z“; ch=(ch-“A“+1)%26+“A“;putchar(ch); 程序的运行结果是_。(分数:1.00)AZBYCBDA 解析:解析 Z 的 ASCII 码是 90,A 的 ASCII 码是 65,所以 c
32、h=(ch-“A“+1)%26+“A“=26%26+65=65,输出65 对应的字符 A。16.下面属于黑盒测试方法的是_。(分数:1.00)A.基本路径测试B.等价类划分 C.判定覆盖测试D.语句覆盖测试解析:解析 等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类进行测试。基本路径测试、判定覆盖测试和语句覆盖测试都属于白盒测试。17.有以下程序: #includestdio.h main( ) int i,j,k,a=5,b=6; i=(a=b)?+a:-b; j=a+;k=b;printf(“%d,%d,%d/n“,i,j,k);
33、 程序的运行结果是_。(分数:1.00)A.7,6,5B.5,5,5 C.7,5,5D.5,6,5解析:解析 条件表达式 i=(a=b)?+a:-b;中先执行 a=b,值为假,根据三元运算符语法规则,执行-b,此时 b 为 5,赋给 i,i=5;j=a+,将 a=5 先赋给 j,再进行 a+,j=5,a=6,k=b=5,故最后输出的是 5,5,5。18.C 语言程序中,若函数无返回值,则应该对函数说明的类型是_。(分数:1.00)A.intB.doubleC.charD.void 解析:解析 int 表示返回值是整型,double 表示返回值是双精度型,char 表示返回值是字符型,void表
34、示无返回值。19.有以下程序: #includestdio.h main( ) int k,n=0;char c,str=“teach“; for(k=0;strk;k+) c=strk; switch(k) case 1: case 3: case 5: putchar(c);printf(“%d“,+n);break;default:putehar(“N“); 序的运行结果是_。(分数:1.00)A.Ne1NNB.e1a2e3C.Ne1Nc2N D.Na1NNNN解析:解析 程序执行过程:k=0 时,c=str0=“t“,执行 default 分支,输出 N;k=1 时,c=“e“,执行
35、case 1 分支,没有 break 语句,继续执行 case 3 分支,没有 break 语句,继续执行 case 5 分支,输出 e1;k=2 时,c=“a“,输出 N;k=3,c=“c“,输出 c2;k=4,c=“h“,输出 N。故程序的输出结果为Ne1Nc2N。20.有以下程序: #includestdio.h void fun(char(*P)6) int i; for(i=0;i4;i+)printf(“%c“,Pii); printf(“/n“); main( ) char s66=IfABCDE“,“abcde“,“12345“,“FGHIJ“,“fghij“,“54321“;
36、 fun(s); 程序的运行结果是_。(分数:1.00)A.Aa1FB.Ab3I C.ABCDD.fghij解析:解析 函数:fun 的功能是输出 sii,二维数组的对角线元素,所以程序会输出 s00、s11、s22、s33,即 Ah3I。21.设变量 x 为 long int 型并已正确赋值,以下表达式中能将 x 的百位上的数字提取出的是_。(分数:1.00)A.x/10%100B.x%10/100C.x%100/10D.x/100%10 解析:解析 x/100 的个位数是 x 的百位数上的数字,所以再进行除 10 取余运算即可得到该数字。22.在 E-R 图中,表示实体的图形是_。(分数:
37、1.00)A.矩形 B.椭圆C.菱形D圆解析:解析 在 E-R 图中,矩形表示实体集,矩形内写该实体集的名字。23.下面对软件特点描述不正确的是_。(分数:1.00)A.软件是一种逻辑实体,具有抽象性B.软件开发、运行对计算机系统具有依赖性C.软件开发涉及软件知识产权、法律及心理等社会因素D.软件运行存在磨损和老化问题 解析:解析 与硬件不同,软件在运行、使用期间不存在磨损、老化问题。24.设 x,y,z 均为实型变量,代数式 (分数:1.00)A.x/y*zB.x%y%zC.x/y/z D.x*z/y解析:解析 运算符、/的结合顺序是从左到右,所以 x 先除以 y,再除以 z。25.有以下程
38、序: #includestdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;iN;i+)bi=aiN-1-i; main( ) int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i; fun(x,y); for(i=0;iN;i+)printf(“%d,“,yi); printf(“/n“); 程序的运行结果是_。(分数:1.00)A.1,2,3,4,B.3,6,9,12,C.4,7,10,13, D.1,5,9,13,解析:解析 调用 fun 函数,yi=xiN-1-i,N=4,x
39、 是 4 行 4 列的二维数组。 i=0 时,y0=x04-1=x03=4;i=1 时,y1=x14-1-1=x12=7;i=2 时,y2=x24-1-2=x21=10;i=3 时,y3=x30=13。26.在下列链表中,能够从任意一个结点出发直接访问到所有结点的是_。(分数:1.00)A.单链表B.循环链表 C.双向链表D.二叉链表解析:解析 线性单链表,必须从头指针开始,才能访问到所有的结点;循环链表的最后一个结点的指针域指向表头结点,所有结点的指针构成了一个环状链,只要指出表中任何一个结点的位置就可以从它出发访问到表中其他所有的结点;双向链表头结点和尾结点之间没有链接,所以如果从中间结点
40、开始访问无法直接访问到所有结点;二叉链表从除根结点之外的任意一个结点出发无法直接访问到所有结点。27.有以下程序: #includestdio,h main( ) int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2=0)continue;x+; x+; printf(“x=%d/n“,x); 程序的运行结果是_。(分数:1.00)A.x=4B.x=6C.x=8 D.x=12解析:解析 第一次循环:i=0,执行 x+后 x=1,执行内层循环 j=0,由于 j%2!=0 时才执行 x+,即只有 j 取 1 和 3 时,执行 x+,此时 x=
41、1+1+1=3,跳出内层循环,执行下一条 x+,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故 x 最终结果是 4*2=8。28.对图书进行编目时,图书有如下属性:ISBN 书号,书名,作者,出版社,出版日期。能作为关键字的是_。(分数:1.00)A.ISBN 书号 B.书名C.作者,出版社D.出版社,出版日期解析:解析 关键字是指能惟一标识元组的属性或属性集合。书号可以惟一标识一本图书,本题中,书名、作者、出版社、出版日期等字段都不能惟一标识一本图书。29.若主函数中有定义语句:int a10,b10,c;,在主函数前定义的 fun 函数首部为:void fun(int x
42、),则以下选项中错误的调用语句是_。(分数:1.00)A.fun(b);B.fun(C.fun(D.:fun(b11); 解析:解析 fun 函数的形式参数为一个数组,需要实参为一个地址,而 b11是一个整型元素,参数类型不一致,且 b11已经溢出,所以 D 项错误。30.构成 C 语言程序的三种基本结构是_。(分数:1.00)A.顺序结构、转移结构、递归结构B.顺序结构、嵌套结构、递归结构C.顺序结构、选择结构、循环结构 D.选择结构、循环结构、嵌套结构解析:解析 C 语言程序是结构化程序,由三种基本结构组成:顺序结构;选择结构;循环结构。31.下列形式中不合法的常量是_。(分数:1.00)
43、A.2.E8B.-.28C.-028 D.2e-8解析:解析 0 开头表示的是八进制整型常量,八进制数只能用 07 的数字表示。32.下列与栈结构有关联的是_。(分数:1.00)A.数组的定义域使用B.操作系统的进程调度C.函数的递归调用 D.选择结构的执行解析:解析 函数的递归调用是指函数调用函数本身,直到满足特定条件时终止,然后从最后被递归调用处返回。递归函数是通过栈来实现的,所以调用原则和栈的实现相一致。33.以下不是 C 语言字符型或字符串常量的是_。(分数:1.00)A.“It“s“B.“0“C.“a=0“ D.“/010“解析:解析 C 项是一个赋值表达式。AB 两项是字符串常量,
44、D 项是字符常量。34.下列数据结构中,属于非线性结构的是_。(分数:1.00)A.双向链表B.循环链表C.二叉链表 D.循环队列解析:解析 线性结构的特点:除了首结点和尾结点外,每一个结点只有一个前驱结点和一个后继结点。线性表、栈、队列都是线性结构,循环链表和双向链表是线性表的链式存储结构;带链的栈是栈的链式存储结构。二叉链表是二叉树的链式存储结构,二叉树是非线性结构,所以二叉链表是非线性结构。35.有以下程序: #includestdio.h main( ) int k=10; printf(“%4d,%0,%x/n“,k,k,k); 程序的运行结果是_。(代表一个空格)(分数:1.00)
45、A.10,12,aB.10,012,aC.010,12,aD.10,12,a 解析:解析 %4d 表示输出占 4 个字符的十进制,故先输出 2 个空格,然后输出 10;%o 表示输出八进制,所以输出 10 的八进制为 12;%x 表示输出十六进制,即 a。36.数据库管理系统是_。(分数:1.00)A.操作系统的一部分B.系统软件 C.一种编译系统D.一种通信软件系统解析:解析 系统软件主要包括:操作系统软件;各种语言的解释程序和编译程序;各种服务性程序;各种数据库管理系统。37.若有定义:int a=1,b=2,c=3;,则执行表达式(a=b+c)|(+b)后,a,b,c 的值依次为_。(分数:1.00)A.1,2,3B.5,3,2C.5,2,3 D.5,3,3解析:解析 |表示或运算,当第一个表达式为真时,第二个表达式不执行。根据运算符的优先级规则,先计算(a=b+c),将 b+c 的值赋值给 a,则 a=5,而|右边的括号不会被执行,所以 b=2,c=3。38.有两个关系 R 和 T 如下: R A B C a 1 2 b 4 4 c 2 3 d 3 2 T A C a 2