1、国家计算机二级(C)67 及答案解析(总分:3480.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:50,分数:3000.00)1.有以下程序: main( ) char s =“ABCD“,*p; for(p=s+1;ps+4;p+)printf(“%s/n“,p); 程序运行后的输出结果是( )。 (分数:60.00)A.ABCD BCD CD DB.A B C DC.B C DD.BCD CD D2.以下不能正确定义二维数组的选项是( )。(分数:60.00)A.int a22=1,2;B.int a 2=1,2,3,4;C.int a22=
2、1,2,3;D.int a2 =1,2,3,4;3.有以下程序: main( ) unsigned int a; int b=-1; a=b; printf(“%u“,a); 程序运行后的输出结果是( )。 (分数:60.00)A.-1B.65535C.32767D.-327684.设有下列程序段: char s20=“Beijing“,*p; p=s; 则执行 p=s;语句后,下列叙述正确的是( )。 (分数:60.00)A.可以用*p 表示 s0B.s 数组中元素的个数和 p 所指字符串长度相等C.s 和 p 都是指针变量D.数组 s 中的内容和指针变量 p 中的内容相同5.以下程序中函数
3、 reverse( )的功能是将 a 所指数组中的内容进行逆置。 void reverse(int a ,int n) int i,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; main( ) int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:60.00)A.22B.10C.34D.306.有以下程序: main() int m,n,p; scanf(“m=%dn=%dp=%
4、d“, printf(“%d%d%/n“,m,n,p); 若想从键盘上输入数据,使变量 m 中的值为 123,n 中的值为 456;p 中的值为 789,则正确的输入是【 】。(分数:60.00)A.m=123 n=456p=789B.m=123 n=456 p=789C.m=123,n=456,p=789D.123 456 7897.有以下程序 main() char ch=“uvwxyz“,* pc; pc=ch;printf(“cn“,*(pc+5); 程序运行后的输出结果是【 】。 (分数:60.00)A.ZB.0C.元素 ch5的地址D.字符 Y 的地址8.表达式 3.6-52+1.
5、2+52 的值是【 】。(分数:60.00)A.4.3B.4.8C.3.3D.3.89.有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( )。 (分数:60.00)A.a=a+b=b+B.w%(int)a+b)C.(c+w)%(int)aD.w=a=b;10.Internet 的通信协议是( )。(分数:60.00)A.TCP/IPB.BBSC.WWWD.FTP11.有以下程序: main() int a,b,d=25; a=d/10%9; b=a printf(“%d,%d/n“,a,b); 程序运行后的输出结果是【 】
6、。(分数:60.00)A.6,1B.2,1C.6,0D.2,012.在 E-R 图中,用来表示实体之间联系的图形是【 】。(分数:60.00)A.矩形B.椭圆形C.菱形D.平行四边形13.对下列二叉树进行前序遍历的结果为【 】。 (分数:60.00)A.DYBEAFCZXB.YDEBFZXCAC.ABCDEFXYZD.ABCDEFXYZ14.程序中对 fun 函数有如下说明: void *fun( ); 此说明的含义是( )。 (分数:60.00)A.fun 了数无返回值B.fun 函数的返回值可以是任意的数据类型C.fun 函数的返回值是无值型的指针类型D.指针 fun 指向一个函数,该函数
7、无返回值15.在 C 语言中,函数返回值的类型最终取决于【 】。(分数:60.00)A.函数定义时在函数首部所说明的函数类型B.return 语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型16.有以下程序(提示:程序中 fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移 2*sizeof(int)字节) #include stdio.h main( ) FILE *fp; int i,a4=1,2,3,4,b; fp=fopen(“data.dat“,“wb“); for(i=0;iA.2B.1C.4D
8、.317.以下程序的功能是按顺序读入 10 名学生 4 门课程的成绩,计算出每位学生的平均分并输出,程序如下:main( ) int n,k; float score,sum,ave; sum=0.0; for(n=1;n=10;n+) for(k=1;k=4;k+) scanf(“%f“,score);sum+=score; ave=sum/4.0; printf(“NO%d:%f/n“,n,ave); 上述程序运行后结果不正确,调试中发现有条语句出现在程序中的位置不正确。这条语句是( )。 (分数:60.00)A.sum=0.0;B.sum+=score;C.ave=sum/4.0;D.p
9、rintf(“NO%d:%f/n“,n,ave);18.有以下程序 main() int i,j; for(i=1;iA.1*1=11*2=21*3=3B.1*1=1 1* 2=2 1*3=3 2*1=2 2*2=4 2*2 =4 2* 3=6 3*1=3 3*3=9C.1*1=1D.1*1=1 1*2=2 2*2=4 2*1=2 2*2=4 1*3=3 2*3=6.3*3=9 3*1=3 3*2=6 3*3=919.数据库技术的根本目标是要解决数据的【 】。(分数:60.00)A.存储问题B.共享问题C.安全问题D.保护问题20.有以下程序 main() union char ch2; in
10、t d; S; S.d=0x4321; printf(“x,xn“,S.ch0,S.ch1); 在 16 位编译系统上,程序执行后的输出结果是【 】。 (分数:60.00)A.21,43B.43,21C.43D.21,0021.以下选项中不能作为 C 语言合法常量的是(分数:60.00)A.cdB.0.1e+6C./aD./01122.设有如下说明 typedef struct int n; char c; double x;STD; 则以下选项中 ,能正确定义结构体数组并赋初值的语句是( )。 (分数:60.00)A.STD tt2=1,A,62,2,B,75;B.STD tt2=1,“A“
11、,62,2,“,75;C.struct tt2=1,A,2,B;D.struct tt2=1,“A“,62.5,2,“B“,75.0;23.有下列程序: #include stdio.h void fun(char *a, char *B) while(*a=*)a+; while(*b=*A) b+;a+; main() char *s=“*a*b*“,t80; fun(s,t);puts(t); 程序的运行结果是( )。 (分数:60.00)A.*a*bB.a*bC.a*b*D.ab24.有三个关系 R、S 和 T 如下: (分数:60.00)A.笛卡尔积B.交C.并D.自然连接25.下列
12、叙述中错误的是( )。(分数:60.00)A.gets 函数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件26.以下不合法的字符常量是【 】。(分数:60.00)A.018B.C.D.xcc27.C 源程序中不能表示的数制是(分数:60.00)A.二进制B.八进制C.十进制D.十六进制28.有以下程序 #include main(int argc,char *argv) int i=1,n=0; while(iA.3B.5C.7D.1129.有以下程序 void funl(char
13、* P) char*q; q=P; while(*q!=0) (*q)+;q+;) main() char a=“Program“),*p; P=B.int a 3=22*3;C.int a 3=;D.int a23=1,2,3,4;31.设有如下说明 typedef struct ST long a;int b;char c2;NEW; 则下面叙述中正确的是【 】。(分数:60.00)A.以上的说明形式非法B.ST 是一个结构体类型C.NEW 是一个结构体类型D.NEW 是一个结构体变量32.设变量 X 和 Y 均已正确定义并赋值。以下 if 语句中,在编译时将产生错误信息的是【 】。(分数
14、:60.00)A.if(X+);B.if(Xy 不能给数组 a 输入字符串的语句是( )。 (分数:60.00)A.gets(a)B.gets(a0)C.gets(D.gets(b);34.在 Windows 环境下,当一个应用程序窗口被最小化后,该应用程序( )。(分数:60.00)A.继续在后台运行B.继续在前台运行C.终止运行D.暂停运行35. 有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。 struct node int data; struct node *next; *p, *q, *r; (分数:60.00)A.r-next=q; q-
15、next=r-next; p-next=r;B.q-next=r-next; p-next=r; r-next=q;C.p-next=r; q-next=r-next; r-next=q;D.q-next=r-next; r-next=q; p-next=r;36.以下 4 组用户定义标识符中,全部合法的一组是( )。(分数:60.00)A._main enclude sinB.If -max turboC.txt REAL 3COMD.int k_2 _00137.在 DOS 环境下,代表键盘和显示器的设备文件名为( )。(分数:60.00)A.PRNB.CONC.NULD.LPT38.有以
16、下程序 main() int x,y,z; x=y=1; Z=X+,Y+,+Y; printf(“d,d,dn“,X,Y,Z); 程序运行后的输出结果是【 】。 (分数:60.00)A.2,3,3B.2,3,2C.2,3,1D.2,2,139.以下能正确定义数组并正确赋初值的语句是(分数:60.00)A.int N=5,bNN;B.int a12=1,3;C.int c2 =1,2,3,4;D.int d32=1,2,3,4;40.有以下程序,其中函数 f 的功能是将多个字符串按字典顺序排序: #includestring.h void f(char *p,int n) char *t;int
17、 i,j; for(i=O;in-1;i+) for(j=i+1;jn;j+) if strcmp(pi,pj)0t=pi pi=pj; pj=t; main() char* p5=(“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“; f(p,5); printf(“%d/n“,strlen(p1); 程序运行后的输出结果是【 】。 (分数:60.00)A.2B.3C.6D.441.在 Windows 菜单中,暗淡(灰色)的命令项表示该命令( )。(分数:60.00)A.暂时不能用B.正在执行C.包含下一层菜单D.包含对话框42.若要求从键盘读入含有空格字符的字符串,应使用
18、函数【 】。(分数:60.00)A.getc()B.gets()C.getchar()D.scanf()43.有以下程序: void fun(int *a,int i,int j) int t; if(ij) t=ai;ai=aj;aj=t; i+; j-; fun(a,i,j); main( ) int x =2,6,1,8,i; fun(x,0,3); for(i=0;i4;i+) printf(“%2d“,xi); printf(“/n“); 程序运行后的输出结果是( )。 (分数:60.00)A.1 2 6 8B.8 6 2 1C.8 1 6 2D.8 6 1 244.有以下程序: m
19、ain( ) int aa44= 1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6 ; int i,s=0; for(i=0;i4;i+) s+=aai1; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:60.00)A.11B.19C.13D.2045.有以下程序段: int n=0,p; do scanf(“%d“,p);n + +;while(p!=12345 nA.p 的值不等于 12345 并且 n 的值小于 3B.p 的值等于 12345 并且 n 的值大于等于 3C.p 的值不等于 12345 或者 n 的值小于 3D.p 的值等于 1
20、2345 或者 n 的值大于等于 346.设 char 型变量 x 中的值为 10100111,则表达式(2+x)(3)的值是(分数:60.00)A.10101001B.10101000C.11111101D.0101010147.下列对队列的叙述正确的是【 】。(分数:60.00)A.队列属于非线性表B.队列按“先进后出“原则组织数据C.队列在队尾删除数据D.队列按“先进先出“原则组织数据48.以下选项中不能作为合法常量的是【 】。(分数:60.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e049.下列叙述中错误的是【 】。(分数:60.00)A.在数据
21、库系统中,数据的物理结构必须与逻辑结构一致B.数据库技术的根本目标是要解决数据的共享问题C.数据库设计是指在已有数据库管理系统的基础上建立数据库D.数据库系统需要操作系统的支持50.有以下程序: main( ) char a,b,c,d; scanf(“%c,%c,%d,%d“, printf(“c,%c,%c,%c/n“,a,b,c,d); 若运行时从键盘上输入:6,5,65,66。则输出结果是( )。(分数:60.00)A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6二、填空题(每空 2 分,共 40 分)(总题数:12,分数:480.00)51.改变量已正确定
22、义为整型,则表达式 n=i=2,+i,i+的值为 1。(分数:40.00)填空项 1:_52.以下程序运行后的输出结果是 1。 main2 int m=011,n=11; printf(“ddn“,+m,n+); (分数:40.00)填空项 1:_填空项 1:_53.以下 sstrcpy1 函数实现字符串复制,即将 t 所指字符串复制到 s 所指向内存空间中,形成一个新的字符串 s。请填空。 void sstrcpy(char *s,char *t) while(*s+= 2); main( ) char str1100,str2 =”abcdefgh”; sstrcpy(str1,str2)
23、; printf(“%s/n”,str1); (分数:40.00)填空项 1:_54.以下程序的输出结果是 1。 #include #define N 5 int fun(int *s,int a,int n) int j; *s=a;j=n; while(a!=sj)j-; return j: main2 int sN+1;int k; for(k=1;kc,a+cb,b+ca。请填空。 main1 float a,b,C; scanf(“fff“, for(p=s+1;ps+4;p+)printf(“%s/n“,p); 程序运行后的输出结果是( )。 (分数:60.00)A.ABCD BC
24、D CD DB.A B C DC.B C DD.BCD CD D 解析:2.以下不能正确定义二维数组的选项是( )。(分数:60.00)A.int a22=1,2;B.int a 2=1,2,3,4;C.int a22=1,2,3;D.int a2 =1,2,3,4; 解析:3.有以下程序: main( ) unsigned int a; int b=-1; a=b; printf(“%u“,a); 程序运行后的输出结果是( )。 (分数:60.00)A.-1B.65535 C.32767D.-32768解析:4.设有下列程序段: char s20=“Beijing“,*p; p=s; 则执行
25、 p=s;语句后,下列叙述正确的是( )。 (分数:60.00)A.可以用*p 表示 s0 B.s 数组中元素的个数和 p 所指字符串长度相等C.s 和 p 都是指针变量D.数组 s 中的内容和指针变量 p 中的内容相同解析:程序定义了字符数组 s 和字符型指针变量 p,并且使得 p 指向数组,执行 p=s;语句后,*p 即表示s0;s 数组中元素的个数和 p 所指字符串长度不相等,因为 s 数组中元素的个数包括字符串结束标志“/0”,而 p 所指字符串长度不包括“/0”;s 是字符型数组,p 是指针变量;数组 s 中的内容和指针变量 p 中的内容不相同,数组中存放的是字符串,而指针变量 p
26、存放的是数组的首地址。5.以下程序中函数 reverse( )的功能是将 a 所指数组中的内容进行逆置。 void reverse(int a ,int n) int i,t; for(i=0;in/2;i+) t=ai;ai=an-1-i;an-1-i=t; main( ) int b10=1,2,3,4,5,6,7,8,9,10;int i,s=0; reverse(b,8); for(i=6;i10;i+)s+=bi; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:60.00)A.22 B.10C.34D.30解析:6.有以下程序: main() int m
27、,n,p; scanf(“m=%dn=%dp=%d“, printf(“%d%d%/n“,m,n,p); 若想从键盘上输入数据,使变量 m 中的值为 123,n 中的值为 456;p 中的值为 789,则正确的输入是【 】。(分数:60.00)A.m=123 n=456p=789 B.m=123 n=456 p=789C.m=123,n=456,p=789D.123 456 789解析:根据本题的数据输入形式“scanf(“m=%dn=%dp=%d“, int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( )。 (分数:60.00)A.a=a+b=b+B.w%(int
28、)a+b)C.(c+w)%(int)a D.w=a=b;解析:10.Internet 的通信协议是( )。(分数:60.00)A.TCP/IP B.BBSC.WWWD.FTP解析:11.有以下程序: main() int a,b,d=25; a=d/10%9; b=a printf(“%d,%d/n“,a,b); 程序运行后的输出结果是【 】。(分数:60.00)A.6,1B.2,1 C.6,0D.2,0解析:本题中“a=d/10%9;“的值为 25/10%9=2;“b=a 此说明的含义是( )。 (分数:60.00)A.fun 了数无返回值B.fun 函数的返回值可以是任意的数据类型C.fu
29、n 函数的返回值是无值型的指针类型 D.指针 fun 指向一个函数,该函数无返回值解析:15.在 C 语言中,函数返回值的类型最终取决于【 】。(分数:60.00)A.函数定义时在函数首部所说明的函数类型 B.return 语句中表达式值的类型C.调用函数时主调函数所传递的实参类型D.函数定义时形参的类型解析:在 C 语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律自动按整型处理。在定义函数时对函数值说明的类型一般应该和 return 语句中的表达式类型一致。如果函数值的类型和return 语句中的表达式类型不一致,则以函数类型为主。即函数类型决定返回值的类型。16.有以下
30、程序(提示:程序中 fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移 2*sizeof(int)字节) #include stdio.h main( ) FILE *fp; int i,a4=1,2,3,4,b; fp=fopen(“data.dat“,“wb“); for(i=0;iA.2B.1C.4D.3 解析:17.以下程序的功能是按顺序读入 10 名学生 4 门课程的成绩,计算出每位学生的平均分并输出,程序如下:main( ) int n,k; float score,sum,ave; sum=0.0; for(n=1;n=10
31、;n+) for(k=1;k=4;k+) scanf(“%f“,score);sum+=score; ave=sum/4.0; printf(“NO%d:%f/n“,n,ave); 上述程序运行后结果不正确,调试中发现有条语句出现在程序中的位置不正确。这条语句是( )。 (分数:60.00)A.sum=0.0; B.sum+=score;C.ave=sum/4.0;D.printf(“NO%d:%f/n“,n,ave);解析:本题中 sum 用来保存每位学生的总成绩,所以在计算不同学生的总成绩时,应将 sum 重新赋值 初值 0,即语句 sum=0.0;,它应在第二个 for 语句前执行。18
32、.有以下程序 main() int i,j; for(i=1;iA.1*1=11*2=21*3=3B.1*1=1 1* 2=2 1*3=3 2*1=2 2*2=4 2*2 =4 2* 3=6 3*1=3 3*3=9 C.1*1=1D.1*1=1 1*2=2 2*2=4 2*1=2 2*2=4 1*3=3 2*3=6.3*3=9 3*1=3 3*2=6 3*3=9解析:本题主要考查了 for 循环的嵌套。外层 for 循环的自变量 i 从 1 开始,每次循环后增 l,至到 i 等于3 结束。内层循环的自变量 j 每次从 i 开始,每次循环后增 1,至到 j 等于 3 结束。在每次外循环开始后,内
33、层循环在一行上先打印“i*j=两个乘数的积“,然后换行,下次循环从下一行开始打印。19.数据库技术的根本目标是要解决数据的【 】。(分数:60.00)A.存储问题B.共享问题 C.安全问题D.保护问题解析:由于数据的集成性使得数据可被多个应用程序所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据库的应用范围,所以数据库技术的根本目标是解决数据的共享问题。20.有以下程序 main() union char ch2; int d; S; S.d=0x4321; printf(“x,xn“,S.ch0,S.ch1); 在 16 位编译系统上,程序执行后的输出结果是【 】。 (分数:60.
34、00)A.21,43 B.43,21C.43D.21,00解析:因为联合的两个变量共用一段内存,ch0占用低字节,ch1占用高字节,所以在读它们的时候还是原来的数据,没发生改变。21.以下选项中不能作为 C 语言合法常量的是(分数:60.00)A.cd B.0.1e+6C./aD./011解析:选项 B)是实型常量,选项 C)是字符串常量,选项 D)是转义字符常量,都是合法的常量。22.设有如下说明 typedef struct int n; char c; double x;STD; 则以下选项中 ,能正确定义结构体数组并赋初值的语句是( )。 (分数:60.00)A.STD tt2=1,A
35、,62,2,B,75; B.STD tt2=1,“A“,62,2,“,75;C.struct tt2=1,A,2,B;D.struct tt2=1,“A“,62.5,2,“B“,75.0;解析:23.有下列程序: #include stdio.h void fun(char *a, char *B) while(*a=*)a+; while(*b=*A) b+;a+; main() char *s=“*a*b*“,t80; fun(s,t);puts(t); 程序的运行结果是( )。 (分数:60.00)A.*a*bB.a*bC.a*b* D.ab解析:主函数 main()定义了指向字符串的指
36、针和一个字符数组,接着调用 fun(s,t)函数,进行实参向形参传递,函数 fun()第一个 while 语句判断*a 中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个 while 循环语句,将*a 中从“a”开始的后续所有字符都赋予*b,也就是 t80中的内容为“a*b*”,所以此题的运行结果为选项 C。24.有三个关系 R、S 和 T 如下: (分数:60.00)A.笛卡尔积B.交C.并D.自然连接 解析:自然连接是一种特殊的等值连接。当关系 R 和 S 有相同的属性组,且该属性组的值相等时的连接称为自然连接。25.下列叙述中错误的是( )。(分数:60.00)A.gets 函
37、数用于从终端读入字符串B.getchar 函数用于从磁盘文件读入字符 C.fputs 函数用于把字符串输出到文件D.fwrite 函数用于以二进制形式输出数据到文件解析:本题考查的是输入输出函数的使用,gets 和 getchar 函数用于从标准输入设备终端读八字符串和字符,并非从磁盘文件读入,fputs 用于把字符串输出到文件,fwrite 用于以二进制形式输出数据到文件,故选项 B 描述错误。26.以下不合法的字符常量是【 】。(分数:60.00)A.018 B.C.D.xcc解析:字符常量是括在一对单引号内的字符。选项 A)018是八进制字符串格式,所以里面的数不能大于 8。选项 B、C
38、、D 都是转义字符。27.C 源程序中不能表示的数制是(分数:60.00)A.二进制 B.八进制C.十进制D.十六进制解析:C 语言中整型常量可用十进制、八进制和十六进制 3 种形式表示。28.有以下程序 #include main(int argc,char *argv) int i=1,n=0; while(iA.3B.5C.7 D.11解析:在“proc 1234567“输入命令行中带有 4 个参数,所以 argc 等于 4,主函数中的循环语句执行 3 次。第一次 argv1的长度为 3,第二次 argv2的长度为 2,第二 argv2的长度为 2。所以最后变量 n 的长度等于 7。29
39、.有以下程序 void funl(char* P) char*q; q=P; while(*q!=0) (*q)+;q+;) main() char a=“Program“),*p; P=B.int a 3=22*3; C.int a 3=;D.int a23=1,2,3,4;解析:31.设有如下说明 typedef struct ST long a;int b;char c2;NEW; 则下面叙述中正确的是【 】。(分数:60.00)A.以上的说明形式非法B.ST 是一个结构体类型C.NEW 是一个结构体类型 D.NEW 是一个结构体变量解析:typedef 关键字用于声明一个新的类型名代替
40、已有的类型名。本题中如果没有用 typedef 进行定义的话,则 struct ST 为结构体类型,现在用 typedef 定义后,相当于用 NEW 代表了 struct ST 这一结构体类型,故 NEW 为结构体类型。 32.设变量 X 和 Y 均已正确定义并赋值。以下 if 语句中,在编译时将产生错误信息的是【 】。(分数:60.00)A.if(X+);B.if(Xy 不能给数组 a 输入字符串的语句是( )。 (分数:60.00)A.gets(a)B.gets(a0) C.gets(D.gets(b);解析:34.在 Windows 环境下,当一个应用程序窗口被最小化后,该应用程序( )
41、。(分数:60.00)A.继续在后台运行 B.继续在前台运行C.终止运行D.暂停运行解析:35. 有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。 struct node int data; struct node *next; *p, *q, *r; (分数:60.00)A.r-next=q; q-next=r-next; p-next=r; B.q-next=r-next; p-next=r; r-next=q;C.p-next=r; q-next=r-next; r-next=q;D.q-next=r-next; r-next=q; p-next
42、=r;解析:36.以下 4 组用户定义标识符中,全部合法的一组是( )。(分数:60.00)A._main enclude sin B.If -max turboC.txt REAL 3COMD.int k_2 _001解析:37.在 DOS 环境下,代表键盘和显示器的设备文件名为( )。(分数:60.00)A.PRNB.CON C.NULD.LPT解析:38.有以下程序 main() int x,y,z; x=y=1; Z=X+,Y+,+Y; printf(“d,d,dn“,X,Y,Z); 程序运行后的输出结果是【 】。 (分数:60.00)A.2,3,3B.2,3,2C.2,3,1 D.2
43、,2,1解析:整型变量 x、y 的初值都为 1,“x+,y+,+y“是一个逗号表达式,程序执行“z=x+,y+,+y“后,x 的值为 2,y 的值为 3。z 取豆号表达式中第二个表达式的值,为 1。39.以下能正确定义数组并正确赋初值的语句是(分数:60.00)A.int N=5,bNN;B.int a12=1,3;C.int c2 =1,2,3,4;D.int d32=1,2,3,4; 解析:40.有以下程序,其中函数 f 的功能是将多个字符串按字典顺序排序: #includestring.h void f(char *p,int n) char *t;int i,j; for(i=O;in
44、-1;i+) for(j=i+1;jn;j+) if strcmp(pi,pj)0t=pi pi=pj; pj=t; main() char* p5=(“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“; f(p,5); printf(“%d/n“,strlen(p1); 程序运行后的输出结果是【 】。 (分数:60.00)A.2B.3C.6D.4 解析:字符串比较函数“strcmp(char*s1,char*s2)“的比较规则是对两个字符串自左至右逐个字符相比(按 ASCII 码值大小比较),直到出现不同的字符或遇到到“/0“为止。如果全部相同,则认为相等:若出现不相同的字
45、符,则以第一个不相同的字符的比较结果为准。当 s1s2,返回值0;当 s1=s2 时,返回值二 0:当 s1s2 时,返回值0。故本题经过排序后,得到第二个字符串是“abbd“,所以输出结果是 4。 41.在 Windows 菜单中,暗淡(灰色)的命令项表示该命令( )。(分数:60.00)A.暂时不能用 B.正在执行C.包含下一层菜单D.包含对话框解析:42.若要求从键盘读入含有空格字符的字符串,应使用函数【 】。(分数:60.00)A.getc()B.gets() C.getchar()D.scanf()解析:canf()语句用“空格“区别不同的字符串;getc()与 getchar()语
46、句不能用于字符串的读入。43.有以下程序: void fun(int *a,int i,int j) int t; if(ij) t=ai;ai=aj;aj=t; i+; j-; fun(a,i,j); main( ) int x =2,6,1,8,i; fun(x,0,3); for(i=0;i4;i+) printf(“%2d“,xi); printf(“/n“); 程序运行后的输出结果是( )。 (分数:60.00)A.1 2 6 8B.8 6 2 1C.8 1 6 2 D.8 6 1 2解析:44.有以下程序: main( ) int aa44= 1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6 ;