1、计算机二级(C)49 及答案解析(总分:3040.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:50,分数:3000.00)1.有以下程序: #include string.h struct STU int num; float TotalScore; ; void f(struct STU p) struct STU s2=20044,550,20045,537; p.num=s1.num;p.TotalScore=s1.TotalScore; main() struct STU s2=20041,703,20042,580; f(s0); pr
2、intf(“%d%3.0t/n“,s0.num,s0.TotalScore); 程序运行后的输出结果是【 】。 (分数:60.00)A.20045 537B.20044 550C.20042 580D.20041 7032.以下叙述中正确的是【 】。(分数:60.00)A.C 语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失3.下列定义变量的语句中错误的是【 】。(分数
3、:60.00)A.int_int;B.double int_;C.char For;D.float US$;4.已知 i,j,k 为 int 型变量,若从键盘输入:1,2,3,使 i 的值为 1,j 的值为 2,k 的值为 3,以下选项中正确的输入语句是( )。(分数:60.00)A.scanf (“%2d%2d%2d“,i,j,k);B.scanf (“%d %d %d“,i,j,k);C.scanf (“%d,%d,%d“,i,j,k);D.scanf (“i=%d,j=%d,k=%d“,i,j,k);5.若有定义:float x=1.5;int a=1,b=3,C=2;则正确的 swit
4、ch 语句是【 】。(分数:60.00)A.switch(x) case 1.0:printf(“*n“); case 2.0:prinff(“*n“);B.switch(int)x); case 1:printf(“*n“); case 2:printf(“*n“);C.switch(a+b) case 1:printf(“*n“); case 2+1:prinff(“*n“);D.switch(a+b) case 1:printf(“*n“); case c:printf(“*n“);6.十六进制数 100 转换为十进制数为( )。(分数:60.00)A.256B.512C.1024D.6
5、47.以下叙述中错误的是【 】。(分数:60.00)A.算法正确的程序最终一定会结束B.算法正确的程序可以有零个输出C.算法正确的程序可以有零个输入D.算法正确的程序对于相同的输入一定有相同的结果8.对下列二叉树,进行中序遍历的结果是【 】。 (分数:60.00)A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG9.有以下程序: main( ) unsigned int a; int b=-1; a=b; printf(“%u“,a); 程序运行后的输出结果是( )。 (分数:60.00)A.-1B.65535C.32767D.-3276810.对于长度为 n 的线性表,
6、在最坏情况下,下列各排序法所对应的比较次数中正确的是【 】。(分数:60.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/211.有以下程序 main( ) int k=4,n=0; for( ; nk ; ) n+; if(n%3!=0) continue; k-; printf(“%d,%d/n“,k,n); 程序运行后的输出结果是( )。 (分数:60.00)A.1,1B.2,2C.3,3D.4,412.有以下程序 fun(char P10) int n=0,i; for(i=0;iA.1B.2C.3D.013.在 Internet 中,用于
7、在计算机之间传输文件的协议是( )。(分数:60.00)A.TELNETB.BBSC.FTPD.WWW14.有以下程序 main() int i,S=0,t=l,2,3,4,5,6,7,8,9; for(i=0;iA.45B.20C.25D.3615.以下不合法的数值常量是【 】。(分数:60.00)A.011B.lelC.8.0E0.5D.0xabcd16.与数学式 (分数:60.00)A.3*xn/(2*x-1)B.3*x*n/(2*x-1)C.3*pow(x,n)*(1/(2*x-1) )D.3*pow(n,x)/(2*x-1)17.以下 4 组用户定义标识符中,全部合法的一组是( )。
8、(分数:60.00)A._main enclude sinB.If -max turboC.txt REAL 3COMD.int k_2 _00118.有以下程序 main( ) char *s =“one“,“two“,“three“,*p; p=s1; printf(“%c,%s/n“,*(p+1),s0); 执行后输出结果是( )。 (分数:60.00)A.n,twoB.t,oneC.w,oneD.o,two19.以下程序中函数 f( )的功能是将 n 个字符串按由大到小的顺序进行排序。 #includestring.h void f(char p 10,int n) char t20;
9、 int i,j; for(i =O;i n-1 ;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 ) ); 程序运行后的输出结果是( )。 (分数:60.00)A.6B.4C.3D.520.以下程序企图把从终端输入的字符输出到名为 abc.txt 的文件中
10、,直到从终端读入字符#号时结束输入和输出操作,但程序有错。 #include stdio.h main( ) FILE *fout; char ch; fout=fopen(abc.txt,w); ch=fgetc(stdin); while(ch!=#) fputc(ch,fout); ch =fgetc(stdin); fclose(fout); 出错的原因是( )。 (分数:60.00)A.函数 fopen 调用形式有误B.输入文件没有关闭C.函数 fgetc 调用形式有误D.文件指针 stdin 没有定义21.设有定义:int a,*pa=以下 scanf 语句中能正确为变量 a 读入
11、数据的是( )。(分数:60.00)A.scanf(“%d”,pa);B.scanf(“%d”,a);C.scanf(“%d”,D.scanf(“%d”,*pa);22.下列选项中,不能用作标识符的是( )。(分数:60.00)A._1234_B._1_2C.int_2_D.2_int_23.以下不合法的用户标识符是【 】。(分数:60.00)A.j2KEYB.DoubleC.4dD.824.以下选项中不能作为合法常量的是【 】。(分数:60.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e025.下列程序的输出结果是( )。 main( ) int i,s
12、=0; for(i=1;i10;i+=2) s+=i+1; printf(“%d/n”,s); (分数:60.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中的奇数之和D.自然数 110 中的偶数之和26.若有以下函数首部 int fun(double X10,int *n)则下面针对此函数的函数声明语句中正确的是【 】。(分数:60.00)A.int fun(double X,int *n);B.int fun(double ,int);C.int fun(double * X,int n);D.int fun(double *int*);27.在 Windo
13、ws 菜单中,暗淡的命令名项目表示该命令( )。(分数:60.00)A.暂时不能使用B.正在执行C.包含下一层菜单D.包含对话框28.有以下程序 void swap(char*X,char,*y) char t; t=*X;*X=* Y;*Y=t; main() char*s1=“abc“,*s2=“123“; swap(s1,s2);printf(“S,sn“,s1,s2); 程序执行后的输出结果是【 】。 (分数:60.00)A.123,abcB.abc,123C.1bc,a23D.321,cba29.表达式 3.6-52+1.2+52 的值是【 】。(分数:60.00)A.4.3B.4.
14、8C.3.3D.3.830.以下语句或语句组中,能正确进行字符串赋值的是【 】。(分数:60.00)A.char*sp;*sp=“right!“;B.char s10;s=“right!“;C.char s 10;*s=“right!“;D.char*sp=“right!“;31.有以下定义语句: 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;32.设有以下语句 typedef struct TT char c;int a
15、 4;CIN; 则下面叙述中正确的是【 】。 (分数:60.00)A.可以用 TT 定义结构体变量B.IT 是 struct 类型的变量C.可以用 CIN 定义结构体变量D.CIN 是 struct IT 类型的变量33.有以下程序 main( ) int i; for(i=0;i3;i+) switch(i) case 1: printf(“%d“,i); case 2: printf(“%d“,i); default: printf(“%d“,i); 执行后输出的结果是( )。 (分数:60.00)A.011122B.012C.012020D.12034.设有以下定义 int a=0; d
16、ouble b=1.25; char c=A; #define d 2 则下面语句中错误的是( )。 (分数:60.00)A.a+;B.b+;C.c+;D.d+;35.有以下程序 main() int k=5; while(-k)printf(“d“,k-=3); printf(“n“); 执行后的输出结果是【 】。 (分数:60.00)A.1B.2C.4D.死循环36.有以下程序 #include stdio.h main( ) printf(“%d/n“,NULL); 程序运行后的输出结果是( )。 (分数:60.00)A.0B.1C.-1D.NULL 没定义,出错37.有以下程序 mai
17、n( ) int i=0,s=0; do if(i%2)i+;continue; i+; s+=i; while(i7); printf(“%d/n“,s); 执行后输出的结果是( )。 (分数:60.00)A.16B.12C.28D.2138. 有以下说明和定义语句: struct student int age; char num8; struct student stu3=20,“200401“,21,“200402“,10/9,“200403“; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是( )。 (分数:60.00)A.(p+)-num
18、B.p-numC.(*p).numD.stu3.age39.两个或两个以上模块之间关联的紧密程度称为【 】。(分数:60.00)A.耦合度B.内聚度C.复杂度D.数据传输特性40.下列程序的输出结果是( )。 main( ) int x=0,y=5,z=3; while(z-0 double y=1; for(i=1;i=n;i+) y=y*x; return y; 主函数中已经正确定义 m,a,b 变量并赋值,并调用fun 函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为 1。 (分数:2.00)填空项 1:_52.以下 sum 函数的功能是计算下列级数之和。 (分数:2
19、.00)填空项 1:_53.下列程序中的函数 strcpy21 实现字符串两次复制,即将 t 所指字符串复制两次到 S 所指内存空间中,全并形成一个新字符串。例如。若 t 所指字符串为:efgh,调用 strcpy2 后,S 所指字符串为:ef ghefgh。请填空。 #include #include void strcpy2(char *S,char *t) char*P=t; while(*S+=*t+); S= 2; while( 3=*P+); main 4 char str1100=“abcd“,str2=“efgh“; strcpy2(strl,str2);printf(“sn“
20、,str1); (分数:2.00)填空项 1:_填空项 1:_54.在 Windows 环境下,为了将屏幕内容存入剪贴板,应按 1 键。(分数:2.00)填空项 1:_55.以下程序运行后的输出结果 1。 struct NODE int k; struct NODE *link; ; main2 structNODEm5,*p=m,*q=m+4; int i=0; while(p!=q) p-k=+i;p+; q-k=i+;q-; q-k=i; for(i=0;i5;i+)printf(“%d“,mi.k); printf(“/n“); (分数:2.00)填空项 1:_56.以下程序运行后的输
21、出结果是 1 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:_57.Windows 窗口一般由标题栏、菜单栏、控制按钮等部分组成。为了移动窗口,则要用鼠标拖动 1。(分数:2.00)填空项 1:_58.从 Windows 环境进入 MSDOS 方式后,返回 Windows 环境的 DOS 命令为 1。(分数:2.00)填空项 1:_59.已定义 charch=$;inti=1,j;,执行
22、j!=ch int (*f)( ),x,y,z,big; f= 1; scanf(“%d%d%d“, big=(*f)(x,y,z); printf(“big=%d/n“,big); (分数:2.00)填空项 1:_61.在面向对象方法中, 1 描述的是具有相似属性与操作的一组对象。(分数:2.00)填空项 1:_62.在 DOS 环境下,代表键盘和显示器的设备文件名为 1。(分数:2.00)填空项 1:_63.以下程序段的输出结果是 1。 int i=9; printf(“%o/n“,i); (分数:2.00)填空项 1:_64.以下程序运行后的输出结果是 1。 int f(int a,in
23、t n) if(n=1 return f(a,n-1)+an-1); else return 0; main2 int aa5=(1,2,3,4,5),s; s=f(aa,5); printf(“%d/n“,s); (分数:2.00)填空项 1:_65.有以下程序 void f( int y,int *x) y=y+*x; *x=*x+y; main( ) int x=2,y=4; f(y, printf(“%d %d/n”,x,y); 执行后输出的结果是 1。 (分数:2.00)填空项 1:_66.下面程序的运行结果是: 1 int f( int a , int n) if(n1) retu
24、rn a0+f( else return a0; main ( ) int aa3=1,2,3,s; s=f( ; printf(“%d/n”,s); (分数:2.00)填空项 1:_67.以下程序的功能是:输出 100 以内(不含 100)能被 3 整除且个位数为 6 的所有整数,请填空。 main1 (int i,j; for(i=0; 2;i+) j=i*10+6; if( 3)continue; printf(“d“,j); (分数:2.00)填空项 1:_68.以下程序中函数 fun 的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数 d
25、isp 的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数 disp。 #include typedef struct node*链表结点结构* char sub3; struct node * next; Node; Node fun(char S) *建立链表* void disp(Node *h) Node*P; P=h-next; while( 1) printf(“sn“,P-sub);P= 2; main3 Node *hd; hd=fun4;disp(hd);prinff(“n“); (分数:2.00)填空项 1:_69.若有以下程序 main( ) char a; a
26、=H-A+0; printf(“%c/n“,a); 执行后输出结果是 1。 (分数:2.00)填空项 1:_70.以下程序运行后的输出结果是 1。 main( ) int x=15; while(x10 x填空项 1:_计算机二级(C)49 答案解析(总分:3040.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:50,分数:3000.00)1.有以下程序: #include string.h struct STU int num; float TotalScore; ; void f(struct STU p) struct STU s2=2004
27、4,550,20045,537; p.num=s1.num;p.TotalScore=s1.TotalScore; main() struct STU s2=20041,703,20042,580; f(s0); printf(“%d%3.0t/n“,s0.num,s0.TotalScore); 程序运行后的输出结果是【 】。 (分数:60.00)A.20045 537B.20044 550C.20042 580D.20041 703 解析:本题定义了结构体类型的变量 P 作为形参,并将结构体变量 s0中的值传递给了形参变量 p,在函数f 中,又对 p 中的内容作了改变,但这种改变对工函数中
28、s0的值并不产生影响,所以主函数中输出 s0的数据依然是在主函数中初始化时的数据。 2.以下叙述中正确的是【 】。(分数:60.00)A.C 语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 解析:如果以写方式打开一个已经存在的文件,则在打开时将该文件删除,然后重新建立一个同名的新文件。3.下列定义变量的语句中错误的是【 】。(分数:60.00)A.int_int;B.
29、double int_;C.char For;D.float US$; 解析:C 语言规定,变量的标识符只能由字母、数字或下划线 3 种字符组成,且第一个字符必须为字母或下划线。在 C 语言中大写字母和小写字母被认为是两个不同的字符。据此规定 A)、B)、C)三个选项是正确的,而 D)选项因为包含有特殊字符$,因而其不是合法的变量名称。4.已知 i,j,k 为 int 型变量,若从键盘输入:1,2,3,使 i 的值为 1,j 的值为 2,k 的值为 3,以下选项中正确的输入语句是( )。(分数:60.00)A.scanf (“%2d%2d%2d“,i,j,k);B.scanf (“%d %d
30、%d“,i,j,k);C.scanf (“%d,%d,%d“,i,j,k); D.scanf (“i=%d,j=%d,k=%d“,i,j,k);解析:5.若有定义:float x=1.5;int a=1,b=3,C=2;则正确的 switch 语句是【 】。(分数:60.00)A.switch(x) case 1.0:printf(“*n“); case 2.0:prinff(“*n“);B.switch(int)x); case 1:printf(“*n“); case 2:printf(“*n“);C.switch(a+b) case 1:printf(“*n“); case 2+1:pr
31、inff(“*n“); D.switch(a+b) case 1:printf(“*n“); case c:printf(“*n“);解析:C 语言中,switch 语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch 后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。6.十六进制数 100 转换为十进制数为( )。(分数:60.00)A.256 B.512C.1024D.64解析:7.以下叙述中错误的是【 】。(分数:60.00)A.算法正确的程序最终一定会结束B.算法正确的程序可
32、以有零个输出 C.算法正确的程序可以有零个输入D.算法正确的程序对于相同的输入一定有相同的结果解析:算法应该具有下列五个特性:有穷性:一个算法必须在执行有穷步之后结束。确定性:算法中的每一步,必须有确切的含义,在他人理解时不会产生二义性动态性:算法中描述的每一步操作都可以通过已有的基本操作执行有限次实现。输入:一个算法应该有零个或多个输入。输出:一个算法应该有一个或多个输出。这里所说的输出是指与输入有某种特定关系的量。8.对下列二叉树,进行中序遍历的结果是【 】。 (分数:60.00)A.ACBDFEG B.ACBDFGEC.ABDCGEFD.FCADBEG解析:二叉树中序遍历的含义是:首先遍
33、历左子树,然后访问根结点,最后遍历右子树,其左右子树中也按这样的顺序遍历,中序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知中序遍历的结果是:ACBDFEG。9.有以下程序: main( ) unsigned int a; int b=-1; a=b; printf(“%u“,a); 程序运行后的输出结果是( )。 (分数:60.00)A.-1B.65535 C.32767D.-32768解析:10.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是【 】。(分数:60.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序
34、为 n(n-1)/2 解析:假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n/2 遍的从前往后扫描和 n/2 遍的从后往前扫描,需要比较次数数为 n(n-1)/2。快速排序法的最坏情况比较次数也是 n(n-1)/2。 11.有以下程序 main( ) int k=4,n=0; for( ; nk ; ) n+; if(n%3!=0) continue; k-; printf(“%d,%d/n“,k,n); 程序运行后的输出结果是( )。 (分数:60.00)A.1,1B.2,2C.3,3 D.4,4解析:12.有以下程序 fun(char P10) int n=0,i; for(i
35、=0;iA.1B.2 C.3D.0解析:此程序是统计一周七天中英文名称首字母为“T“的个数。Pi0是字符串的首字符,一共有两个“T“,所以 n=2。13.在 Internet 中,用于在计算机之间传输文件的协议是( )。(分数:60.00)A.TELNETB.BBSC.FTP D.WWW解析:14.有以下程序 main() int i,S=0,t=l,2,3,4,5,6,7,8,9; for(i=0;iA.45B.20C.25 D.36解析:统计 1-9 九个数中的奇数和,此题考察指向数组的指针。C 语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第 i+1
36、个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。15.以下不合法的数值常量是【 】。(分数:60.00)A.011B.lelC.8.0E0.5 D.0xabcd解析:数值常量包括整型常量和字符常量。在用字母 e(或 E)表示指数形式的实型常量时,字母 e(或 E)之前必须有数字且字母 e(或 E)后面的指数必须为整数。16.与数学式 (分数:60.00)A.3*xn/(2*x-1)B.3*x*n/(2*x-1)C.3*pow(x,n)*(1/(2*x-1) ) D.3*pow(n,x)/(2*x-1)解析:17.以下 4 组用户定义标识符中,全部合法的一组是( )。(分数:6
37、0.00)A._main enclude sin B.If -max turboC.txt REAL 3COMD.int k_2 _001解析:18.有以下程序 main( ) char *s =“one“,“two“,“three“,*p; p=s1; printf(“%c,%s/n“,*(p+1),s0); 执行后输出结果是( )。 (分数:60.00)A.n,twoB.t,oneC.w,one D.o,two解析:19.以下程序中函数 f( )的功能是将 n 个字符串按由大到小的顺序进行排序。 #includestring.h void f(char p 10,int n) char t
38、20; int i,j; for(i =O;i n-1 ;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 ) ); 程序运行后的输出结果是( )。 (分数:60.00)A.6B.4C.3 D.5解析:对字符串比较的方法是依次对两字符串对应位置上的字符两两比较
39、,当出现第一对不相同的字符 时,即由这两个字符(ASCII 码值)决定所在串的大小。20.以下程序企图把从终端输入的字符输出到名为 abc.txt 的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。 #include stdio.h main( ) FILE *fout; char ch; fout=fopen(abc.txt,w); ch=fgetc(stdin); while(ch!=#) fputc(ch,fout); ch =fgetc(stdin); fclose(fout); 出错的原因是( )。 (分数:60.00)A.函数 fopen 调用形式有误 B.输入文件
40、没有关闭C.函数 fgetc 调用形式有误D.文件指针 stdin 没有定义解析:21.设有定义:int a,*pa=以下 scanf 语句中能正确为变量 a 读入数据的是( )。(分数:60.00)A.scanf(“%d”,pa); B.scanf(“%d”,a);C.scanf(“%d”,D.scanf(“%d”,*pa);解析:22.下列选项中,不能用作标识符的是( )。(分数:60.00)A._1234_B._1_2C.int_2_D.2_int_ 解析:23.以下不合法的用户标识符是【 】。(分数:60.00)A.j2KEYB.DoubleC.4d D.8解析:C 语言规定,标志符由
41、字母、数字或下划线组成,它的第一个字符必须是字母或下划线。24.以下选项中不能作为合法常量的是【 】。(分数:60.00)A.1.234e04B.1.234e0.4 C.1.234e+4D.1.234e0解析:指数形式的实型常量要求字母 e(或 E)之前必需有数字,且 e 后面的指数必须为整数,所以本题中选项 B 非法。 25.下列程序的输出结果是( )。 main( ) int i,s=0; for(i=1;i10;i+=2) s+=i+1; printf(“%d/n”,s); (分数:60.00)A.自然数 19 的累加和B.自然数 110 的累加和C.自然数 19 中的奇数之和D.自然数
42、 110 中的偶数之和 解析:26.若有以下函数首部 int fun(double X10,int *n)则下面针对此函数的函数声明语句中正确的是【 】。(分数:60.00)A.int fun(double X,int *n);B.int fun(double ,int);C.int fun(double * X,int n); D.int fun(double *int*);解析:函数首部 int fun(double x10,int:n)表示这个函数的返回值是整型,其第一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指针。在 C 语言中,一维数组的名字表示的是一维数组的地址,所以
43、选项 D)是正确的。27.在 Windows 菜单中,暗淡的命令名项目表示该命令( )。(分数:60.00)A.暂时不能使用 B.正在执行C.包含下一层菜单D.包含对话框解析:28.有以下程序 void swap(char*X,char,*y) char t; t=*X;*X=* Y;*Y=t; main() char*s1=“abc“,*s2=“123“; swap(s1,s2);printf(“S,sn“,s1,s2); 程序执行后的输出结果是【 】。 (分数:60.00)A.123,abcB.abc,123C.1bc,a23 D.321,cba解析:这是一个转换程序:低字节相互转换,高字
44、节不变。“abc“的 ab 和“123“的 12 相互转化。29.表达式 3.6-52+1.2+52 的值是【 】。(分数:60.00)A.4.3B.4.8C.3.3D.3.8 解析:这道题要注意 25 的结果是 2,因为运算符两边的数值类型均为整型,故运算结果的数值类型也被认定为整型。30.以下语句或语句组中,能正确进行字符串赋值的是【 】。(分数:60.00)A.char*sp;*sp=“right!“;B.char s10;s=“right!“;C.char s 10;*s=“right!“;D.char*sp=“right!“; 解析:选项 A 定义了字符型的指针变量甲,则*sp 存储
45、的是第一个字符,而给它赋的是字符串,故错;选项B 表示代表数组的首地址,而题中给它赋的是字符串,所以错误:选项 C 定义了一个字符型的数组 s10,再通过*s 给数组元素赋初值,这时是与选项 A 相同的错误。31.有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是( )。 (分数:60.00)A.a=a+b=b+B.w%(int)a+b)C.(c+w)%(int)a D.w=a=b;解析:32.设有以下语句 typedef struct TT char c;int a 4;CIN; 则下面叙述中正确的是【 】。 (分数:60.00)A.可以用 TT 定义结构体变量B.IT 是 struct 类型的变量C.可以用 CIN 定义结构体变量 D.CIN 是 struct IT 类型的变量解析:在 C 语言中,typedef 用于说明一种新的类型名,本题中的 CIN 被定义为一种新的类型名,我们可以用它来定义一个结构体变量。33.有以下程序 main( ) int i; for(i=0;i3;i+) switch(i) case 1: printf(“%d“,i); case 2: printf(“%d“,i); d