1、全国计算机等级考试二级 C语言真题 2002年 9月及答案解析(总分:84.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.在 32位计算机中,一个字长所占的字节数为(分数:1.00)A.1B.2C.4D.82.与十进制数 511等值的十六进制数为(分数:1.00)A.1FFB.2FFC.1FED.2FE3.能将高级语言编写的源程序转换成目标程序的是(分数:1.00)A.编辑程序B.编译程序C.解释程序D.链接程序4.在计算机系统中,存储一个汉字的国标码所需要的字节数为(分数:1.00)A.1B.2C.3D.45.下列带有通配符的文件名中,能表示文件“ABC.
2、TXT”的是(分数:1.00)A.*B?B.A?.*C.?B*D.?.?6.在多媒体计算机系统中,不能用以存储多媒体信息的是(分数:1.00)A.光缆B.软盘C.硬盘D.光盘7.DOS命令“COPY /?”的功能是(分数:1.00)A.将当前盘当前目录中的所有文件复制到当前盘的根目录下B.将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下C.以提示方式复制文件D.显示 COPY命令的帮助信息8.在 Windows环境下,若要将当前活动窗口存入剪贴板,则可以按(分数:1.00)A.Ctrl+PrintScreen键B.Alt+PrintScreen键C.Shift+PrintScr
3、een键D.PrintScreen键9.在 Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是(分数:1.00)A.将当前应用程序转为后台运行B.退出 Windows后再关机C.退出 Windows后重新启动计算机D.终止当前应用程序的运行10.在 Windows环境下,粘贴按钮是 (分数:1.00)A.*B.*C.*D.*11.以下叙述中正确的是(分数:1.00)A.构成 C语言程序的基本单位是函数B.可以在一个函数中定义另一个函数C.main( )函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义12.以下选项中合法的实型常数是(分数:1.00)A.5E
4、2.0B.E-3C2E0D.1.3E13.以下选项中合法的用户标识符是(分数:1.00)A.longB._2TestC.3DmaxD.dat14.已知大写字母 A的 ASCII码值是 65,小写字母 a的 ASCII码是 97,则用八进制表示的字符常量/101是(分数:1.00)A.字符 AB.字符 aC.字符 eD.非法的常量15.以下非法的赋值语句是(分数:1.00)A.n=(i=2,+;B.j+;C.+(i+1);D.x=j0;16.设 a和 b均为 double型变量,且 a=5.5,b=2.5,则表达式(int)a+b/b 的值是(分数:1.00)A.6.500000B.6C.5.5
5、00000D.6.00000017.已知 i,j,k 为 int型变量,若从键盘输入:1,2,3,使 i的值为 1,j 的值为 2,k 的值为 3,以下选项中正确的输入语句是(分数:1.00)A.scanf (“%2d%2d%2d“,i,j,;B.scanf (“%d %d %d“,i,j,;C.scanf (“%d,%d,%d“,i,j,;D.scanf (“i=%d,j=%d,k=%d“,i,j,;18.与数学式子 (分数:1.00)A.3*xn/(2*x-1)B.3*x*n/(2*x-1)C.3*pow(x,*(1/(2*x-1) )D.3*pow(n,/(2*x-1)19.设有定义:l
6、ong x= -123456L;,则以下能够正确输出变量 x值的语句是(分数:1.00)A.printf(“x=%d/n“,;B.printf(“x=%1d/n“,;C.printf(“x=%8dL/n“,;D.printf(“x=%LD/n“,;20.若有以下程序: main( ) int k=2,i=2,m; m=(k+=i*=k);printf(“%d,%d/n“,m,i); 执行后的输出结果是(分数:1.00)A.8,6B.8,3C.6,4D.7,421.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1y+z/2 的值是(分数:1.00)A.6B.0C.2D.1
7、22.有一函数: (分数:1.00)A.if(x0)y=1; else if(x= =0)y=0; else y=-1;B.y=0; if(x0)y=1; else if(xC.y = 0; if (x = 0) if (x0) y = 1; else y = -1;D.if ( x = 0) if ( x0)y = 1; else y = 0; else y = -1;23.以下选项中,与 k = n + +完全等价的表达式是(分数:1.00)A.k=n,n=n+1B.n=n+1,k=nC.k=+nD.k+=n+124.以下程序的功能是按顺序读入 10名学生 4门课程的成绩,计算出每位学生的
8、平均分并输出,程序如 下: 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); 上述程序运行后结果不正确,调试中发现有条语句出现在程序中的位置不正确。这条语句是(分数:1.00)A.sum=0.0;B.sum+=score;C.ave=sum/4.0;D.printf(“NO%d:%f/n“,n,av;25.有以下程序段: int n=0,p; do
9、 scanf(“%d“,p);n + +;while(p!=12345 nA.p的值不等于 12345并且 n的值小于 3B.p的值等于 12345并且 n的值大于等于 3C.p的值不等于 12345或者 n的值小于 3D.p的值等于 12345或者 n的值大于等于 326.有以下程序: main( ) int a=15,b=21,m=0; switch(a%3) case 0:m+;break; case l:m+; switch(b%2) default:m+; case 0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是(分数:1.00)A.1B.2C.3
10、D.427.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(分数:1.00)A.voidB.intC.floatD.double28.若有说明:int n=2,*p=n,*q=p;,则以下非法的赋值语句是(分数:1.00)A.p=q;B.*p=q;C.n=*q;D.p=n;29.有以下程序: float fun(int x,int y) return(x+y); main( ) int a=2,b=5,c=8; printf(“%3.Of/n“,fun( (int)fun(a+c,b),a-c) ); 程序运行后的输出结果是(分数:1.00)A.编译出错B.9C.21D.9.030
11、.有以下程序: void fun(char *c,int d) *c= *c+1;d+=1; printf(“%c,%c,“,*c,d); main( ) char a=A,b=a; fun(b,a);printf(“%c,%c/n“,a,b); 程序运行后的输出结果是(分数:1.00)A.B,a,B,aB.a,B,a,BC.A,b,A,bD.b,B,A,b31.以下程序中 sort( )函数的功能是对 a所指数组中的数据进行由大到小的排序: void sort(int a ,int n) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(aiaj
12、)t=ai;ai=aj;aj=t; main( ) int aa10=1,2,3,4,5,6,7,8,9,10,i; sort(aa3,5); for(i0;i10;+)printf(“%d,“,aai ); printf(“/n“); 程序运行后的输出结果是(分数:1.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,32.有以下程序: int f(int n) if(n =1)return 1; else return f(n-1)+1; main(
13、) int i,j=0; for(i=1;iA.4B.3C.2D.133.有以下程序: main( ) char a =a,b,c,d,e,f,g,h,/0;int i,j; i=sizeof(a);j=strlen(a); printf(“%d,%d/n“,i,j); 程序运行后的输出结果是(分数:1.00)A.9,9B.8,9C.1,8D.9,834.以下程序中函数 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
14、( ) 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); 程序运行后的输出结果是(分数:1.00)A.22B.10C.34D.3035.有以下程序: main( ) 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); 程序运行后的输出结果是(分数:1.00)A.11B.19C.13D.2036.有以下程序: #inc
15、ludestring.h main( ) char *p=“abcde/0ghjik/0“; printf(“%d/n“,strlen(p) ); 程序运行后的输出结果是(分数:1.00)A.12B.15C.6D.537.程序中头文件 typel.h的内容是: #define N 5 #define M1 N*3 程序如下: #include“typel.h“ #define M2 N *2 main( ) int i; i=M1+M2; printf(“%d/n“,i); 程序编译后运行的输出结果是(分数:1.00)A.10B.20C.25D.3038.有以下程序: #includestdi
16、0.h main( ) FILE *fp; int i=20,j=50,k,n; fp=fopen(“d1.dat“,“W“); fprintf(fp,“%d/n“,i);fprintf(fp,“%d/n“,j); fclose(fp); fp=fopen(“d1.dat“,“r“,); fscanf(fp,“%d%d“,k,n); printf(“%d%d/n“,k,n); fclose(fp); 程序运行后的输出结果是(分数:1.00)A.20 30B.20 50C.30 50D.30 2039.以下叙述中错误的是(分数:1.00)A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以B
17、.在程序结束时,应当用函数 fclose( )关闭已打开的文件C.在利用函数 fread( )从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D.不可以用 FILE定义指向二进制文件的文件指针40.有以下程序: #includestring.h main(int argc,char *argv ) int i,len=0; for(i=1;iargc;i+) len+=strlen(argvi); printf(“%d/n“,len); 程序编译连接后生成的可执行文件是 exlexe,若运行时输入带参数的命令行是: exl abcd efg 10回车 则运行的结果是(分数:1.00
18、)A.22B.17C.12D.941.有以下程序: int fa(int x) return x *x; int fb(int x) return x *x *x; int f(int( *f1)( ),int( *f2)( ),int x) return f2(x)-f1(x); main( ) int i; i=f(fa,fb,2);printf(“%d/n“,i); 程序运行后的输出结果是(分数:1.00)A.-4B.1C.4D.842.有以下程序: int a=3; main( ) int s=0; int a=5;s+=a+; s+=a+; printf(“%d/n“,s); 程序运
19、行后的输出结果是(分数:1.00)A.8B.10C.7D.1143.有以下程序: void ss(char *s,char t) while(*s) if(*s=t) *s=t-a+A; s+; main( ) char strl100=“abcddfefdbd“,c=d; ss(strl,c); printf(“%s/n“,strl); 程序运行后的输出结果是(分数:1.00)A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd44.有以下程序: struct STU char num10; float score3; main( ) st
20、ruct STU s3=“20021“,90,95,85, “20022“,95,80,75, “20023“,100,95,90 ,*p=s; int i; float sum=0; for(i=0;i3;i+) sum=sum+p-scorei; printf(“%6.2f/n“,sum); 程序运行后的输出结果是(分数:1.00)A.260.00B.270.00C.280.00D.285.0045.设有如下定义: struct sk int a; float b; data; int *p; 若要使 p指向 data中的 a域,正确的赋值语句是(分数:1.00)A.p=a;B.p=dat
21、a;C.p=data;D.*p=data;47.若有以下说明和定义 typedefint * INTEGER; INTEGER p,* q; 以下叙述正确的是(分数:1.00)A.p是 int型变量B.p是基类型为 int的指针变量C.q是基类型为 int的指针变量D.程序中可用 INTEGER代替 int类型名48.有以下程序: main( ) unsigned char a,b,c; a=0x3; b=a|0x8; c=b 1; printf(“%d%d/n“,b,c); 程序运行后的输出结果是(分数:1.00)A.-11 12B.-6-13C.12 24D.11 2249.有以下程序:
22、#includestdlib.h main( ) char *p ,* q; p=(char * )malloc(sizeof(char) * 20);q=p; scanf(“%s%s“,p,q); printf(“%s%s/n“,p,q); 若从键盘输入:abc def回车,则输出结果是(分数:1.00)A.def defB.abc defC.abc dD.d d50.以下程序中函数 f( )的功能是将 n个字符串按由大到小的顺序进行排序。 #includestring.h void f(char p 10,int n) char t20; int i,j; for(i =O;i n-1 ;
23、i + ) for(j =i + 1 ;j n;j + ) if(strcmp(p i ,pj ) 0) strcpy(t,pi);strcpy(pi ,pj );strcpy(pj ,t); main ( ) char p 10 = “abc“,“aabdfg“,“abbd“,“dcdbe“, “cd“ ; int i; f(p,5); printf(“%d/n“,strlen(pO ) ); 程序运行后的输出结果是(分数:1.00)A.6B.4C.5D.3二、B填空题/B(总题数:17,分数:34.00)51.计算机软件分为系统软件和应用软件,操作系统属于 【1】 。(分数:2.00)填空
24、项 1:_52.在 DOS环境下,代表键盘和显示器的设备文件名为 【】 。(分数:2.00)填空项 1:_53.(3)支持 Internet基本服务的协议是 【】 。(分数:2.00)填空项 1:_54.从 Windows环境进入 MS-DOS方式后,返回 Windows环境的 DOS命令为 【】 。(分数:2.00)填空项 1:_55.某微型机的运算速度为 2MIPS,则该微型机每秒执行 【】 条指令。(分数:2.00)填空项 1:_56.设有定义:int n,* K=n;以下语句将利用指针变量 k读写变量 n中的内容,请将语句补充完整。 scanf(“%d“, 【】 ); printf(“
25、%d/n“, 【】 );(分数:2.00)填空项 1:_57.以下程序运行后的输出结果是U 【8】 /U。 main( ) int x=10,y=20,t=0; if(x= =y)t=x;x=y;y=t printf(“%d,%d/n“,x,y); (分数:2.00)填空项 1:_58.以下程序运行后的输出结果是U【9】/U。 main( ) int x=15; while(x10 x填空项 1:_59.有以下程序:#includemain( ) char c;while( (c=getchar( ) )!=?) putchar(- - c);程序运行时,如果从键盘输入 Y? N?,则输出结果
26、为U【10】/U。(分数:2.00)填空项 1:_60.以下程序运行后的输出结果是U 【11】 /U。 void fun(int x,int y) x=x+y;y=x-y;x=x-y; printf(“%d,%d,“,x,y); main( ) int x=2,y=3; fun(x,y); printf(“%d,%d/n“,x,y); (分数:2.00)填空项 1:_61.以下函数的功能是计算 (分数:2.00)填空项 1:_62.fun( )函数的功能是首先对 a所指的 N行 N列的矩阵,找出各行中的最大的数,再求这 N个最大值中 的最小的那个数作为函数值返回,请填空。 #includest
27、dio.h #define N 100 int fun(int( * a)N) in(row,col,max,min; for(row=0;rowN;row+) for(max=a row0,col=1;colN;col+) if(U 【13】 /U)max=arowcol;if(row= =0)min=max; else if(U 【14】 /U)min=max; return min; (分数:2.00)填空项 1:_63.函数 strcmp( )的功能是对两个字符串进行比较,当 s所指字符串和 t所指字符串相等时,返回值为0; 当 s所指字符串大于 t所指字符串时,返回值大于 0;当 s
28、所指字符串小于 t所指字符串时,返回值小于 0(功能等同于库函数 strcmp( ) ),请填空。 #include stdio.h int strcmp ( chat * s, char * t) while( * s * t * s=U 【15】 /U s+;t+; return U 【16】 /U ; (分数:2.00)填空项 1:_64.下面程序和运行运行结果是U 【17】 /U。 #define N 10 #define s (x) x * x #define f(x) (x * x) main( ) iht i1,i2; i1 = 1000/s(N); i2 = 1000/f(N)
29、; printf(“%d %d/n“,i1,i2); (分数:2.00)填空项 1:_65.下面程序和运行运行结果是 【18】 。 void swap(int * a,int * b) int * t; t=a; a=b; b=t; main1 intx=3,y=5,* p=x,* q=y; swap(p,q); prinff(“%d %d/n“, *p, *q);(分数:2.00)填空项 1:_66.下面程序和运行运行结果是 【19】 。 typedef union student char name 10; long sno; char sex; float score 4; STU; m
30、ain ( ) STU a5; prinff( “% d/n“, sizeof(a) ); (分数:2.00)填空项 1:_67.若 fp已正确定义为一个文件指针,d1.dat 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen U 【20】 /U;。(分数:2.00)填空项 1:_全国计算机等级考试二级 C语言真题 2002年 9月答案解析(总分:84.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.在 32位计算机中,一个字长所占的字节数为(分数:1.00)A.1B.2C.4 D.8解析:【解析】字长是指计算机能够同时处理的二进制数据的位数。
31、2.与十进制数 511等值的十六进制数为(分数:1.00)A.1FF B.2FFC.1FED.2FE解析:3.能将高级语言编写的源程序转换成目标程序的是(分数:1.00)A.编辑程序B.编译程序 C.解释程序D.链接程序解析:【解析】由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”,而把源程序 转换成机器能够识别的目标程序是由“编译程序”完成的。4.在计算机系统中,存储一个汉字的国标码所需要的字节数为(分数:1.00)A.1B.2 C.3D.4解析:5.下列带有通配符的文件名中,能表示文件“ABC.TXT”的是(分数:1.00)A.*B?B.A?.*C.?B* D.?
32、.?解析:6.在多媒体计算机系统中,不能用以存储多媒体信息的是(分数:1.00)A.光缆 B.软盘C.硬盘D.光盘解析:【解析】光缆是传输多媒体信息的通道,不能用以存储多媒体信息。7.DOS命令“COPY /?”的功能是(分数:1.00)A.将当前盘当前目录中的所有文件复制到当前盘的根目录下B.将当前盘当前目录中所有以单个字符命名的文件复制到当前盘的根目录下C.以提示方式复制文件D.显示 COPY命令的帮助信息 解析:8.在 Windows环境下,若要将当前活动窗口存入剪贴板,则可以按(分数:1.00)A.Ctrl+PrintScreen键B.Alt+PrintScreen键 C.Shift+
33、PrintScreen键D.PrintScreen键解析:【解析】在 Windows环境下,按 PrintScreen键可将整个屏幕存入剪贴板,当它与 Alt键结合使用时,可将 当前窗口存入剪贴板。9.在 Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是(分数:1.00)A.将当前应用程序转为后台运行B.退出 Windows后再关机C.退出 Windows后重新启动计算机D.终止当前应用程序的运行 解析:10.在 Windows环境下,粘贴按钮是 (分数:1.00)A.*B.*C.*D.* 解析:【解析】选项 A)是打印,选项 B)是剪切,选项 C)是复制。11.以下叙述中
34、正确的是(分数:1.00)A.构成 C语言程序的基本单位是函数 B.可以在一个函数中定义另一个函数C.main( )函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义解析:12.以下选项中合法的实型常数是(分数:1.00)A.5E2.0B.E-3C2E0 D.1.3E解析:【解析】本题主要考查指数形式的表示方法。C 语言规定字母 e(或 E)之前,必须要有数字,且其后的指 数,也必须为整数。13.以下选项中合法的用户标识符是(分数:1.00)A.longB._2Test C.3DmaxD.dat解析:【解析】C 语言中合法的变量名由字母、数字和下划线组成,且第一个字符必须为字
35、母或下划线。14.已知大写字母 A的 ASCII码值是 65,小写字母 a的 ASCII码是 97,则用八进制表示的字符常量/101是(分数:1.00)A.字符 A B.字符 aC.字符 eD.非法的常量解析:解析】字符,/101,所对应的八进制数为 101,转换成十进制数为 65。15.以下非法的赋值语句是(分数:1.00)A.n=(i=2,+;B.j+;C.+(i+1); D.x=j0;解析:【解析】自加或自减运算的操作数不能是表达式。16.设 a和 b均为 double型变量,且 a=5.5,b=2.5,则表达式(int)a+b/b 的值是(分数:1.00)A.6.500000B.6C.
36、5.500000D.6.000000 解析:【解析】在对数据进行+,-,*,/运算时,只要有一个数为 double型,则结果也为 double型。当一个 int 型数和一个 double型数进行运算时,运算结果仍为 double型。17.已知 i,j,k 为 int型变量,若从键盘输入:1,2,3,使 i的值为 1,j 的值为 2,k 的值为 3,以下选项中正确的输入语句是(分数:1.00)A.scanf (“%2d%2d%2d“,i,j,;B.scanf (“%d %d %d“,i,j,;C.scanf (“%d,%d,%d“,i,j,; D.scanf (“i=%d,j=%d,k=%d“,
37、i,j,;解析:18.与数学式子 (分数:1.00)A.3*xn/(2*x-1)B.3*x*n/(2*x-1)C.3*pow(x,*(1/(2*x-1) ) D.3*pow(n,/(2*x-1)解析:19.设有定义:long x= -123456L;,则以下能够正确输出变量 x值的语句是(分数:1.00)A.printf(“x=%d/n“,;B.printf(“x=%1d/n“,; C.printf(“x=%8dL/n“,;D.printf(“x=%LD/n“,;解析:【解析】在语言环境下,输出 long型数时,在%和 d之间必须加 1(L的小写);输出 double型数时,在% 和 f(e)
38、之间也必须加 1。20.若有以下程序: main( ) int k=2,i=2,m; m=(k+=i*=k);printf(“%d,%d/n“,m,i); 执行后的输出结果是(分数:1.00)A.8,6B.8,3C.6,4 D.7,4解析:21.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1y+z/2 的值是(分数:1.00)A.6B.0C.2D.1 解析:【解析】本题考查运算符的优先顺序,其中有22.有一函数: (分数:1.00)A.if(x0)y=1; else if(x= =0)y=0; else y=-1;B.y=0; if(x0)y=1; else if(x
39、C.y = 0; if (x = 0) if (x0) y = 1; else y = -1; D.if ( x = 0) if ( x0)y = 1; else y = 0; else y = -1;解析:23.以下选项中,与 k = n + +完全等价的表达式是(分数:1.00)A.k=n,n=n+1 B.n=n+1,k=nC.k=+nD.k+=n+1解析:24.以下程序的功能是按顺序读入 10名学生 4门课程的成绩,计算出每位学生的平均分并输出,程序如 下: main( ) int n,k; float score,sum,ave; sum=0.0; for(n=1;n=10;n+) f
40、or(k=1;k=4;k+) scanf(“%f“,score);sum+=score; ave=sum/4.0; printf(“NO%d:%f/n“,n,ave); 上述程序运行后结果不正确,调试中发现有条语句出现在程序中的位置不正确。这条语句是(分数:1.00)A.sum=0.0; B.sum+=score;C.ave=sum/4.0;D.printf(“NO%d:%f/n“,n,av;解析:【解析】本题中 sum用来保存每位学生的总成绩,所以在计算不同学生的总成绩时,应将 sum重新赋值 初值 0,即语句 sum=0.0;,它应在第二个 for语句前执行。25.有以下程序段: int
41、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的值等于 12345或者 n的值大于等于 3 解析:26.有以下程序: main( ) int a=15,b=21,m=0; switch(a%3) case 0:m+;break; case l:m+; switch(b%2) default:m+; case 0:m+;break; printf(“%d/n“,m); 程序运行后的输出结果是(分数:1
42、.00)A.1 B.2C.3D.4解析:27.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是(分数:1.00)A.voidB.int C.floatD.double解析:28.若有说明:int n=2,*p=n,*q=p;,则以下非法的赋值语句是(分数:1.00)A.p=q;B.*p=q;C.n=*q;D.p=n; 解析:【解析】整型数据和指针型数据之间不能进行赋值运算。29.有以下程序: float fun(int x,int y) return(x+y); main( ) int a=2,b=5,c=8; printf(“%3.Of/n“,fun( (int)fun(a+c,b
43、),a-c) ); 程序运行后的输出结果是(分数:1.00)A.编译出错B.9 C.21D.9.0解析:【解析】对于 float或 double类型的实型数据可以用“整数 1,整数 2”的形式在指定宽度(整数1)的同时来指定小数位的位数(整数 2)。30.有以下程序: void fun(char *c,int d) *c= *c+1;d+=1; printf(“%c,%c,“,*c,d); main( ) char a=A,b=a; fun(b,a);printf(“%c,%c/n“,a,b); 程序运行后的输出结果是(分数:1.00)A.B,a,B,aB.a,B,a,BC.A,b,A,bD.
44、b,B,A,b 解析:31.以下程序中 sort( )函数的功能是对 a所指数组中的数据进行由大到小的排序: 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(aa3,5); for(i0;i10;+)printf(“%d,“,aai ); printf(“/n“); 程序运行后的输出结果是(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.10,9,
45、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,解析:【解析】形参 a接受的是字符串“4 5 6 7 8”,调用 sort( )函数后,字符串的顺序变为“8 7 6 5 4 9 10”。32.有以下程序: int f(int n) if(n =1)return 1; else return f(n-1)+1; main( ) int i,j=0; for(i=1;iA.4B.3 C.2D.1解析:【解析】第一次调用 f( )函数,返回值为 1,第二次调用 f( )函数,牵涉到函数的递归调用,返回值为 2。33.有以下程序: main( ) char a =a,b,c,d,e,f,g,h,/0;int i,j; i=sizeof(a);j=strlen(a); printf(“%d,%d/n“,i,j); 程序运行后的输出结果是(分数:1.00)A.9,9B.8,9C.1,8D.9,8 解析:【解析】sizeof( )函数返回字符串所占字节数,strlen 函