1、二级 C语言笔试-280 及答案解析(总分:101.00,做题时间:90 分钟)一、选择题(总题数:40,分数:71.00)1.有以下程序:main()int a=5,b=4,c=3,d=2;if(abc)printf(“%d/n“,d);else if(c-1=d)=1)printf(“%d/n“,d+1);elseprintf(“%d/n“,d+2);执行后输出结果是 _。(分数:2.00)A.2B.3C.4D.编译时有错,无结果2.有以下程序:main()int a=1,b=2,m=0,n=0,k;k=(n=b(分数:2.00)A.|(m=aB.;else printf(“%d/n“,y
2、);B.if(a= =0) printf(“%d/n“,y);else printf(“%d/n“,x);C.if(a!=0)printf(“%d/n“,x);else printf(“%d/n“,y);D.if(a= =0)printf(“%d/n“,x);else printf(“%d/n“,y);5.以下能正确定义一维数组的选项是 _。(分数:2.00)A.int num;B.#define N 100int numN;C.int num0100;D.int N=100;int numN;6.有以下程序:void sum(int a)a0=a-1)+a1;main()int a10=(1
3、,2,3,4,5,6,7,8,9,10;sum(puts(ps+4);*(ps+4)=0;puts(s);程序运行后的输出结果是(选项 D中的第一行是空行) _。(分数:2.00)A.n/NoYes/NoB./NoYesYesC.n/No/NoD.Yes/No8.有以下程序,其中函数的功能是将多个字符串按字典顺序排序:# includestring.hvoid f(char*p,int n)char *t; int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(pi,pj)0)t=pi;pi=pjpj=t;main()char *p5=“abc“,
4、“aabdfg“,“abbd“,“dcdbe“,“cd“;f(p,5);printf(“%d/n“,strlen(p1);程序运行后的输出结果是 _。(分数:2.00)A.2B.3C.6D.49.若有说明语句:int a,b,c,*d=,则能正确从键盘读入 3个整数分别赋给变量 a、b、c 的语句是 _。(分数:2.00)A.scanf(“%d %d %d“,B.scanf(“%d %d %d“,C.scanf(“%d %d %d“,a,b,d);D.scanf(“% d% d%d“,a,b,*d);10.有以下程序:main()char s=“ABCD“,*p;for (p=s+1;ps+4
5、;p+ )printf(“%s/n“,p);程序运行后的输出结果是 _。(分数:2.00)A.ABCD BCDCDDB.ABCDC.BCDD.BCDCDD11.有以下程序:# includestring.hmain()char str20=“Hello“,“Beijing“,*p=str;printf(“%d/n“,strlen(p+20);程序运行后的输出结果是 _。(分数:1.00)A.0B.5C.7D.2012.x、y、z 被定义为 int型变量,若从键盘给 x、y、z 输入数据,正确的输入语句是 _。(分数:1.00)A.INPUT x、y、z;B.scanf(“%d%d%d“,C.s
6、canf(“%d%d%d“,x,y,z);D.read(“%d %d %d“,13.在 C语言中,函数的隐含存储类别是 _。(分数:1.00)A.autoB.staticC.externD.无存储类别14.以下程序的功能是:给 r输入数据后计算半径为 r的圆面积 s。程序在编译时出错。main()/* Beginning*/int r;float s;scanf(“%d“,s=*r*r*r;printf(“s= %f/n“,s);出错的原因是 _。(分数:1.00)A.注释语句书写位置错误B.存放圆半径的变量不应该定义为整型C.输出语句中格式描述符非法D.计算圆面积的赋值语句中使用了非法变量1
7、5.有以下程序:void sum(int *(分数:1.00)A.for(;)if(i=3|i=5)continue;if(i=6)break;i+;s+=i;printf(“%d/n“,s);程序运行后的输出结果是 _。(分数:1.00)A.10B.13C.21D.程序进入死循环17.有以下程序:main()int m=12,n=34;printf(“%d %d“,m+,+n);printf(“%d%d/n“,n+,+m);程序运行后的输出结果是 _。(分数:1.00)A.12353514B.12353513C.12343514D.1234351318.设有以下定义:int a=0; dou
8、ble b=1.25; char c=A# define d2则下面语句中错误的是 _。(分数:1.00)A.a+;B.b+;C.c+D.d+19.有以下程序:char fun(char x,char yif(xy)return x;return y;main()int a=9,b=8,c=7;printf(“%c/n“,fun(fun(a,b),fun(b,c) );程序的执行结果是 _。(分数:2.00)A.函数调用出错B.8C.9D.720.已经定义 ch为字符型变量,以下赋值语句中错误的是 _。(分数:1.00)A.ch=/;B.ch=62+3;C.ch=NULL;D.ch=/xaa;
9、21.执行下列程序时输入:123空格456空格789回车,输出结果是 _。main()char s100;int c,i;scanf(“%c“,scanf(“%d“,scanf(“%s“,s);printf(“%c,%d,%s/n“,c,i,s);(分数:2.00)A.123,456,789B.1,456,789C.1,23,456,789D.1,23,45622.以下叙述中错误的是 _。(分数:2.00)A.对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将
10、给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数23.有以下程序:main()int I;For (i=0;i3;i+)switch(i)case 0:printf(“%d“,i);case 2:printf(“%d“,i);default:printf(“%d“,i);程序运行后的输出结果是 _。(分数:2.00)A.022111B.021021C.000122D.01224.有以下程序:main()int p8=11,12,13,14,15,16,17,18,i=0,j=0;while(i+7)if(pi%2)j+=pi;printf(“%d/n“,j);程序运行后的输
11、出结果是 _。(分数:2.00)A.42B.45C.56D.6025.以下不能正确定义二维数组的选项是 _。(分数:2.00)A.int a22=1,2;B.int a2=1,2,3,4;C.int a22=1,2,3;D.int a2=1,2,3,4;26.设有定义:int n1=0,n2,*p=,以下赋值语句中与 n2=n1;语句等价的是 _。(分数:2.00)A.*p=*q;B.p=q;C.*p=27.以下程序段的输出结果是 _。int a=1234;printf(“% 2d/n“,(分数:2.00)A.;A) 12B) 34C) 1234D) 提示出错、28._语言负责数据的模式定义与
12、数据的物理存取构建。(分数:2.00)A.数据操纵语言(DML)B.数据控制语言(DCL)C.结构化查询语言(SQL)D.数据定义语言(DDL)29.若整型变量 a、b、c、d 中的值依次为:1、4、3、2,则条件表达式 ab?a:cd?c:d 的值是 _。(分数:2.00)A.1B.2C.3D.430.有以下程序:main()unsignedchar a,b;a= 4|3;b=4printf(“%d%d/n“,a,b);执行后输出结果是 _。(分数:2.00)A.7 0B.0 7C.1 1D.43 031.以下数据库除 _外,均为严格意义上的 DBMS系统。(分数:2.00)A.Oracle
13、B.AccessC.Sybase的 PowerBuilderD.SQL Server32.设有定义:long x=123456L;,则以下能够正确输出变量 x值的语句是 _。(分数:2.00)A.printf(“x=%d/n“,x);B.printf(“x=%1d/n“,x);C.printf(“x=%8dL/n“,x);D.printf(“x=%LD/n“,x);33.有以下程序:# includestdio.hmain()char*p,*q;p=(char *)malloc(sizeof(char)* 20);q=p;scanf(“%s %s“,p,q);printf(“%s %s/n“,
14、p,q);若从键盘输入;abc def回车,则输出结果是 _。(分数:2.00)A.def defB.abc defC.abe dD.d d34.设函数 fun的定义形式为:void fun(char ch,float x) 则以下对函数 fun的调用语句中,正确的是 _。(分数:2.00)A.fun(“abc“,3.0);B.t=fun(D,16.5);C.fun(65,2,8);D.fun(32,32);35.已定义 c为字符型变量,则下列语句中正确是 _。(分数:2.00)A.c=97;B.c=“97“;C.c=97;D.c=“a“;36.以下选项中可以作为 C语言中合法整数的是 _。(
15、分数:2.00)A.10110BB.0386C.0XffaD.x2a237.已知 i、j、k 为 int型变量,若从键盘输入:1,2,3回车,使 i的值为 1、j 的值为 2、k 的值为3,以下选项中正确的输入语句是 _。(分数:2.00)A.sanf(“%2d %2d %2d“,B.scanf(“%d %d %d“,C.scanf(“%d,%d,%d“,D.scanf(“i=%d,j=%d,k=%d“,38.有以下程序:main()int x=1,3,5,7,2,4,6,0,i,j,k;for(i=0;i3;i+)for (j=2;j=i;j-)if (xj+1)xj)k=xj;xj;xj+
16、1);xj+1=k;for (i=0;i3;i+)for (j=4;j7-i;j+)if (xjxj+1)k=xj;xj=xj+1;xj+1)=k;for(i=0;i8;i+)printf(“%d“,xi);printf(“/n“);程序运行后的输出结果是 _。(分数:2.00)A.75310246B.01234567C.76310462D.1357024639.下述关于数据库系统的叙述中正确的是 _。(分数:2.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据40.以下 4组用户定义标识符中,全
17、部合法的一组是 _。(分数:2.00)A._mainencludesinB.If-maxturboC.txtREAL3COMD.intk_2_001二、填空题(总题数:15,分数:30.00)41.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。main()int t=0,s=0,i;for(i=1;i=5;i+)t=i+ 【1】 ;s=s+t;printf(“s=%d/n“,s);(分数:2.00)填空项 1:_42.以下程序段的输出结果是 【2】 。int i=9;printf(“%o/n“,i);(分数:2.00)填空项 1:_43.已知字符 A的 ASCII码
18、值为 65,以下语句的输出结果是 【3】 。char ch=B;printf(“%c%d/n“ch,ch);(分数:2.00)填空项 1:_44.已有定义:double*p;,请写出完整的语句,利用 malloc函数使 p指向一个双精度型的动态存储单元 【4】 。(分数:2.00)填空项 1:_45.以下程序运行后的输出结果是 【5】 。int a=5;fun(int b)static int a=10;a+=b+;printf(“%d“,a);main()int c=20;fun(c);a+=c+;printf(“%d/n“,a);(分数:2.00)填空项 1:_46.有以下程序:# inc
19、ludestdio.hmain()char ch1,ch2; int n1,n2ch1=getchar(); ch2=getchar();n1=ch1-0; n2=n1*10+(ch2-0);printf(“%d/n“,n2);程序运行时输入:12回车,执行后的输出结果是 【6】 。(分数:2.00)填空项 1:_47.以下程序运行后的输出结果是 【7】 。main()int x=1,y=0,a=0,b=0;switch (x)case1:switch (y)case0:a+;break;case1:b+;break;case2:a+;b+;break;printf(“% d%d/n“,a,b
20、);(分数:2.00)填空项 1:_48.若有以下程序:main()int a=4,b=3,c=5,t=0;if(ab)t=a;a=b;b=t;if(ac)t=a; a=c; c=t;printf(“%d %d %d/n“,a,b,c);执行后的输出结果是 【8】 。(分数:2.00)填空项 1:_49.以下程序运行后的输出结果是 【9】 。main()int a=1,b=3,c=5;if(c=a+b) printf(“yes/n“);else printf(“no/n“);(分数:2.00)填空项 1:_50.以下程序运行时若从键盘输入:10 20 30回车,输出结果是 【10】 。# in
21、cludestdio.hmain()int i=0,j=0,k=0;scanf(“%d% *d%d“,printf(“%d %d %d/n“,i,j,k);(分数:2.00)填空项 1:_51.以下程序运行后的输出结果是 【11】 。main()int i,n=0,0,0,0,0;for(i=1;i=4;i+)ni=ni-1*2+1;printf(“%“,ni);(分数:2.00)填空项 1:_52.以下程序的运行结果是 【12】 。# includestring.htypedef struct studentchar name10;long sno);float scoreSTU;main(
22、)STU a=“zhangsan“,2001,95,b=“Shangxian“,2002,90c=“Anhua“,2003,95,d,*p=d=a;if(strcmp( a.name, b.name)0)d=b;if(strcmp( c.name, d.name)0)d=c;printf(“%1d%s/n“,d.sno,p-name);(分数:2.00)填空项 1:_53.以下程序运行后输入:3,abcde回车,则输出结果是 【13】 。# includestring.hmove(char *str,int n)char temp int i;temp=strn-1);for(i=n-1;i0
23、;i-)stri=stri-1;str0=tempmain()char s50;iht n,i,z;scanf(“%d,%s“,z=strlen(s);for(i=1;i=n;i+)move(s,z);printf(“s/n“,s);(分数:2.00)填空项 1:_54.以下程序运行后的输出结果是 【14】 。fun(iht x)if(x/20) fun(x/2);printf(“%d“,x);main()fun(6); (分数:2.00)填空项 1:_55.以下程序运行后的输出结果是 【15】 。main()int i,j,a3=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+
24、)for(j=i+1;j3;j+)aji=0;for(i=0;i3;i+)for(j=0;j3;j+)printf(“%d“,aij);printf(“/n“);(分数:2.00)填空项 1:_二级 C语言笔试-280 答案解析(总分:101.00,做题时间:90 分钟)一、选择题(总题数:40,分数:71.00)1.有以下程序:main()int a=5,b=4,c=3,d=2;if(abc)printf(“%d/n“,d);else if(c-1=d)=1)printf(“%d/n“,d+1);elseprintf(“%d/n“,d+2);执行后输出结果是 _。(分数:2.00)A.2B.
25、3 C.4D.编译时有错,无结果解析:解析 执行 if(abc)时,首先判断 ab 的值,54 结果为真(C 语言中规定真用 1表示),然后比较 1c,结果为假,执行第一个 else后的语句,判断条件(c-1=d)=1 是否成立,即判断(3-1=2)=1,结果为真,所以执行 printf(“%d/n“,d+1),输出结果 3。2.有以下程序:main()int a=1,b=2,m=0,n=0,k;k=(n=b(分数:2.00)A.|(m=aB.;else printf(“%d/n“,y);B.if(a= =0) printf(“%d/n“,y);else printf(“%d/n“,x);C.
26、if(a!=0)printf(“%d/n“,x);else printf(“%d/n“,y);D.if(a= =0)printf(“%d/n“,x);else printf(“%d/n“,y); 解析:解析 本题中选项 A、选项 B和选项 C中的 if条件语句都是在 a=0时输出 y,a!=0 时输出 x。5.以下能正确定义一维数组的选项是 _。(分数:2.00)A.int num;B.#define N 100int numN; C.int num0100;D.int N=100;int numN;解析:解析 C 语言不允许对数组进行动态定义,选项 D错误;选项 A没有指定数组元素的个数;选
27、项C中定义格式错误;正确答案为选项 B,其中 N是符号常量。6.有以下程序:void sum(int a)a0=a-1)+a1;main()int a10=(1,2,3,4,5,6,7,8,9,10;sum(puts(ps+4);*(ps+4)=0;puts(s);程序运行后的输出结果是(选项 D中的第一行是空行) _。(分数:2.00)A.n/NoYes/NoB./NoYesYes C.n/No/NoD.Yes/No解析:解析 本题中 ps指向符号串“Ye/n/No“,ps+4 表示“/”的地址,故 puts(ps+4)输出符号串/No,执行语句*(ps+4)=0 后,字符数组 s中的符号串
28、为“Yes/n/0No“,/0是字符串的结束标志,故 puts(s)输出 Yes。8.有以下程序,其中函数的功能是将多个字符串按字典顺序排序:# includestring.hvoid f(char*p,int n)char *t; int i,j;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(pi,pj)0)t=pi;pi=pjpj=t;main()char *p5=“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“;f(p,5);printf(“%d/n“,strlen(p1);程序运行后的输出结果是 _。(分数:2.00)A.2B.
29、3C.6D.4 解析:解析 strcmp(s1,s2)是比较两个字符串的大小,s1s2 时值为正数,s1s2 时值为负数,s1s2 时值为 0。调用 f(p,5)函数的功能是将存储字符串的数组 p中的字符串从小到大进行排列。最后的排列结果为:p5=“aabdfg“,“abbd“, “abc“,“cd“,“dcdbe“,最后要求输出的是“abbd“的长度。9.若有说明语句:int a,b,c,*d=,则能正确从键盘读入 3个整数分别赋给变量 a、b、c 的语句是 _。(分数:2.00)A.scanf(“%d %d %d“, B.scanf(“%d %d %d“,C.scanf(“%d %d %d
30、“,a,b,d);D.scanf(“% d% d%d“,a,b,*d);解析:解析 scanf 函数中格式控制后面应为变量地址列表,因此选项 C和选项 D都错误,选项 B中“for (p=s+1;ps+4;p+ )printf(“%s/n“,p);程序运行后的输出结果是 _。(分数:2.00)A.ABCD BCDCDDB.ABCDC.BCDD.BCDCDD 解析:解析 第一次执行 for循环时,p 指向 s1=B,故输出 BCD;第二次执行 for循环时,p 指向 s2=C,故输出 CD;第三次执行 for循环时,p 指向 s3=D,故输出 D。正确答案为 D。11.有以下程序:# inclu
31、destring.hmain()char str20=“Hello“,“Beijing“,*p=str;printf(“%d/n“,strlen(p+20);程序运行后的输出结果是 _。(分数:1.00)A.0B.5C.7 D.20解析:解析 本题中定义了一个 220的二维字符数组 str,并且初始化为 str0=“Hello“,str1=“Beijing“,p 是指向 char 型的指针变量,并指向 str数组的首地址,strlen(p+20)=strlen(str1)=7。12.x、y、z 被定义为 int型变量,若从键盘给 x、y、z 输入数据,正确的输入语句是 _。(分数:1.00)A
32、.INPUT x、y、z;B.scanf(“%d%d%d“, C.scanf(“%d%d%d“,x,y,z);D.read(“%d %d %d“,解析:解析 选项 A和选项 D都不是 C语言中的输入方法,选项 C中的变量名前面缺少取地址符“float s;scanf(“%d“,s=*r*r*r;printf(“s= %f/n“,s);出错的原因是 _。(分数:1.00)A.注释语句书写位置错误B.存放圆半径的变量不应该定义为整型C.输出语句中格式描述符非法D.计算圆面积的赋值语句中使用了非法变量 解析:解析 必须用一个符号名来代表,而且这个符号名必须在程序中进行指定,否则计算机将不能识别。15
33、.有以下程序:void sum(int *(分数:1.00)A.for(;)if(i=3|i=5)continue;if(i=6)break;i+;s+=i;printf(“%d/n“,s);程序运行后的输出结果是 _。(分数:1.00)A.10B.13C.21D.程序进入死循环 解析:解析 本题考查 break语句和 continue语句的用法,continue 语句是结束本次循环,当 i=3时,i+语句不再被执行,程序进入死循环。17.有以下程序:main()int m=12,n=34;printf(“%d %d“,m+,+n);printf(“%d%d/n“,n+,+m);程序运行后的输
34、出结果是 _。(分数:1.00)A.12353514 B.12353513C.12343514D.12343513解析:解析 m+表示先输出 m,再 m+1,+n 表示先 n+1,再输出 n,因此第一条输出语句出 1235,第二条语句输出 3514。18.设有以下定义:int a=0; double b=1.25; char c=A# define d2则下面语句中错误的是 _。(分数:1.00)A.a+;B.b+;C.c+D.d+ 解析:解析 选项 D中 d是符号常量,不能进行+的运算。19.有以下程序:char fun(char x,char yif(xy)return x;return
35、y;main()int a=9,b=8,c=7;printf(“%c/n“,fun(fun(a,b),fun(b,c) );程序的执行结果是 _。(分数:2.00)A.函数调用出错B.8C.9D.7 解析:解析 本题 a=9,b=8,c=7,函数调用 fun(a,B) 的返回值为8,fun(b,c)的返回值为7,所以 fun(fun(a,b),fun (b,c)=fun(8,7)=7。20.已经定义 ch为字符型变量,以下赋值语句中错误的是 _。(分数:1.00)A.ch=/; B.ch=62+3;C.ch=NULL;D.ch=/xaa;解析:解析 对字符变量赋值时,即可以赋一字符常量,也可以
36、赋 0255 的整数,该整数表示字符常量的 ASCII值。本题中选项 B是将 65赋值给 ch,表示字符 A;选项 C中 NULL是 C语言中的符号常量,其值为 0;选项 D是将一个转义字符赋值给 ch,该字符的 ASCII值为 aa,其中 aa是十六进制;选项 A错误。21.执行下列程序时输入:123空格456空格789回车,输出结果是 _。main()char s100;int c,i;scanf(“%c“,scanf(“%d“,scanf(“%s“,s);printf(“%c,%d,%s/n“,c,i,s);(分数:2.00)A.123,456,789B.1,456,789C.1,23,
37、456,789D.1,23,456 解析:解析 根据给定的数据输入格式:123空格456空格789回车,第一个 scanf语句中,格式字符为“%c”,只能得到一个字符1,第二个 scanf语句中格式字符为“%d”,变量 i得到的数值为 23,第三个 scanf语句中格式字符为“%s”,遇到空格就自动结束,因此字符数组 s得到的是“456/0”。因而正确答案为选项 D。22.以下叙述中错误的是 _。(分数:2.00)A.对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出 B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围
38、时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数解析:解析 double 型的数组也是可以直接用数组名对数组进行整体输入或输出的。23.有以下程序:main()int I;For (i=0;i3;i+)switch(i)case 0:printf(“%d“,i);case 2:printf(“%d“,i);default:printf(“%d“,i);程序运行后的输出结果是 _。(分数:2.00)A.022111B.021021C.000122 D.012解析:解析 本题考查 switch语句的执行过程。如果 case语句中没有 break语句,则顺序执行。因此第
39、一次循环 i=0被输出了 3次,i=1 被输出一次,i=2 被输出两次。24.有以下程序:main()int p8=11,12,13,14,15,16,17,18,i=0,j=0;while(i+7)if(pi%2)j+=pi;printf(“%d/n“,j);程序运行后的输出结果是 _。(分数:2.00)A.42B.45 C.56D.60解析:解析 此程序实现了将 p1)p7中的奇数求和的功能,因此,最后的输出结果是j=13+15+17=45。25.以下不能正确定义二维数组的选项是 _。(分数:2.00)A.int a22=1,2;B.int a2=1,2,3,4;C.int a22=1,2
40、,3;D.int a2=1,2,3,4; 解析:解析 选项 D在定义数组 a时没有指定第二维的长度,错误。26.设有定义:int n1=0,n2,*p=,以下赋值语句中与 n2=n1;语句等价的是 _。(分数:2.00)A.*p=*q; B.p=q;C.*p=解析:解析 由定义*p=printf(“% 2d/n“,(分数:2.00)A.;A) 12B) 34C) 1234D) 提示出错、解析:解析 本题考查 printf函数中附加格式字符的用法。本题中的“2”是附加格式字符,其作用是指定变量 a的输出宽度为两列,而本题中 a的值为 1234,已经超过两列,所以按实际值输出,正确答案为选项 C。
41、28._语言负责数据的模式定义与数据的物理存取构建。(分数:2.00)A.数据操纵语言(DML)B.数据控制语言(DCL)C.结构化查询语言(SQL)D.数据定义语言(DDL) 解析:解析 数据库管理系统一般提供以下 3种数据语言(Data Language),来完成它的功能。(1)数据定义语言(DDL,Data Definition Language)。该语言负责数据的模式定义与数据的物理存取构建。显然 D为正确答案。(2)数据操纵语言(DML,Data Manipulation Language)。该语言负责数据的操纵,包括查询及增、删、改等操作。(3)数据控制语言(DCL,Data Co
42、ntrol Language)。该语言负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能,包括系统初启程序、文件读写与维护程序、存取路径管理程序、缓冲区管理程序、安全性控制程序、完整性检查程序、并发控制程序、事务管理程序、运行日志管理程序、数据库恢复程序等。29.若整型变量 a、b、c、d 中的值依次为:1、4、3、2,则条件表达式 ab?a:cd?c:d 的值是 _。(分数:2.00)A.1 B.2C.3D.4解析:解析 因为 ab 成立,此表达式的值就为 1。30.有以下程序:main()unsignedchar a,b;a= 4|3;b=4printf(“%d%d/n“,a,
43、b);执行后输出结果是 _。(分数:2.00)A.7 0 B.0 7C.1 1D.43 0解析:解析 a=43=00000100|00000011=00000111=7,b=4B.printf(“x=%1d/n“,x); C.printf(“x=%8dL/n“,x);D.printf(“x=%LD/n“,x);解析:解析 x 是长整型变量,因此其输出格式字符应为“%1d”,所以正确答案为选项 B。33.有以下程序:# includestdio.hmain()char*p,*q;p=(char *)malloc(sizeof(char)* 20);q=p;scanf(“%s %s“,p,q);p
44、rintf(“%s %s/n“,p,q);若从键盘输入;abc def回车,则输出结果是 _。(分数:2.00)A.def def B.abc defC.abe dD.d d解析:解析 本题考查%s 控制符在 scanf函数中的应用。scanf 函数中%s 控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句 scanf(“%s%s“,p,q)时,从键盘输入 abc def回车后,指针变量 p指向字符串“abc/0“,q 指向字符串“def/0“,但是由于 p和 q指向同一个存储单元,所以存储单元中存放的是“def/0“,
45、printf 函数的输出结果为 def def。34.设函数 fun的定义形式为:void fun(char ch,float x) 则以下对函数 fun的调用语句中,正确的是 _。(分数:2.00)A.fun(“abc“,3.0);B.t=fun(D,16.5);C.fun(65,2,8); D.fun(32,32);解析:解析 A 选项“abc“的表示字符串,与参数类型不一样。B 选项 fun没有返回值,不能将其用来赋值。D 选项第一个 32不是字符,与参数类型不一样。35.已定义 c为字符型变量,则下列语句中正确是 _。(分数:2.00)A.c=97;B.c=“97“;C.c=97; D
46、.c=“a“;解析:解析 97不是字符变量,选项 A错误;“97“是字符串,选项 B错误;“a“是字符串,选项 D错误;正确答案是选项 C。36.以下选项中可以作为 C语言中合法整数的是 _。(分数:2.00)A.10110BB.0386C.0Xffa D.x2a2解析:解析 C 语言中整型常量有 3种表示形式:十进制、八进制和十六进制。选项 A是二进制表示,错误;八进制的数字是 0、1、2、3、4、5、6、7,选项 B错误;十六进制整数常量用 0X开头,选项 D错误。37.已知 i、j、k 为 int型变量,若从键盘输入:1,2,3回车,使 i的值为 1、j 的值为 2、k 的值为3,以下选项中正确的输入语句是 _。(分数:2.00)A.sanf(“%2d %2d %2d“,B.scanf(“%d %d %d“,C.sc