1、二级 C 语言-111 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:41,分数:100.00)1.若有以下程序: #include stdio.h main( ) int a=1,b=2; for( ;a8;a+ +) b+ =a; a+ =2; printf(“%d,%d/n“,a,b); 则程序运行后的输出结果是_。(分数:2.00)A.9,18B.8,11C.7,11D.10,142.若有以下程序: #include stdio.h main( ) int x=8; for( ;x0; x-) if(x%3) printf(“%d,“,x-); contin
2、ue; printf(“%d,“,-x); 则程序的运行结果是_。(分数:2.00)A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,3.若有以下程序: #include stdio.h main( ) int a=6,b=0, c=0; for (;a;) b + = a; a - = + + c; printf(“%d,%d,%d/n“,a,b,c); 则程序的输出结果是_。(分数:2.50)A.1,14,3B.0,14,3C.0,18,3D.0.14,64.若有以下程序: #include stdio.h main( ) int a=6,b=0,c=0; for
3、(;a) b + =a; a- = c+ + ; printf(“%d,%d,%d/n“,a,b,c); 则程序的输出结果是_。(分数:2.50)A.5,6,0B.6,0,0C.6,6,1D.5,6,15.若有以下程序: #include stdio.h main( ) int i, sum; for(i=1; i6; i + + ) sum+ =1; printf(“%d/n“,sum); 则程序运行后的输出结果是_。(分数:2.50)A.随机值B.0C.15D.166.若有以下程序: #include stdio.h main( ) int i,j; for(i=1; i4; i + +)
4、 for(j=i; j4; j + +) pfinff(“%d*%d=%d“,i,j,i*j); printf(“/n“); 则程序运行后的输出结果是_。(分数:2.50)A.1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9B.1*1=1 1*2=2 1*3=32*1=2 2*2=43*1=3C.1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=97.若有以下程序: #include stdio.h main( ) int i=5; do if(i%3= =1) if(i%5= =2) pri
5、ntf(“%*d“,i); break; i+ +; while(i! =0); pnnff(“/n“); 则程序的运行结果是_。(分数:2.50)A.*2*6B.*3*5C.*5D.*78.若有以下程序: #inelude stdio.h main( ) int i,j; for(i=3; i=1; i-) for(j=1; j=2; j+ +) printf(“%d“,i+j); printf(“/n“); 则程序的运行结果是_。(分数:2.50)A.4 32 54 3B.4 53 42 3C.2 33 42 3D.2 33 42 39.若有以下程序: #include stdio.h m
6、ain( ) int i,j,m=1; for(i=1;i3;i+ +) for(j=3;j0;j- -) if(i*j3) break; m*=i*j; printf(“m=%d/n“,m); 则程序运行后的输出结果是_。(分数:2.50)A.m=4B.m=2C.m=6D.m=510.若有以下程序: #inelude stdio.h main( ) int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+ +) for(j=i;j=i;j+ +) t + = bibji; printf(“%d/n“,t); 则程序运行后的输出结果是_。(分数:2.50
7、)A.3B.4C.1D.911.若有以下程序: #include stdio.h main( ) int i; for(i=1;i=40; i+ +) if(i+ +%5= =0) if(+ +i%8= =0) printf(“%d“,i); printf(“/n“); 则执行后的输出结果是_。(分数:2.50)A.5B.24C.32D.4012.以下叙述中正确的是_。(分数:2.50)A.continue 语句的作用是使程序的执行流程跳出包含它的所有循环B.break 语句只能用在循环体内和 switch 语句体内C.在循环体内使用 break 语句和 continue 语句的作用相同D.b
8、reak 语句只能用于 switch 语句体中13.以下叙述中正确的是_。(分数:2.50)A.continue 语句使得整个循环终止B.break 语句不能用于提前结束 for 语句的本层循环C.使用 break 语句可以使流程跳出 switch 语句体D.在 for 语句中,continue 与 break 的效果是一样的,可以互换14.若有以下定义: int x10, *pt=x; 则对 x 数组元素的正确引用是_。(分数:2.50)A.pt+3B.* for(i=0;i9;i+ =2) a+ =* (t+i); printf(“%d/n“,s); 则程序执行后的输出结果是_。(分数:2
9、.50)A.20B.25C.45D.3616.若有以下程序: #include stdio.h void fun(int *s, int n1, int n2) int i,j,t; i=n1; j=n2; while(ij) t=si; si=sj; sj=t; i+ +; j-; main( ) int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k10;k+ +) printf(“%d“,ak); printf(“/n“); 则程序的运行结果是_。(分数:2.50)A.4321098765B
10、.5678901234C.0987654321D.098765123417.若有以下程序: #include stdio.h main( ) int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+ +) csi+ +; for(i=1;i5;i+ +) printf(“%d“,ci); printf(“/n“); 则程序的运行结果是_。(分数:2.50)A.2 3 4 4B.4 3 3 2C.1 2 3 4D.1 1 2 318.若有以下程序: #include stdio.h void fun(int a, int n) int t,i,
11、j; for(i=1;in; i+ =2) for(j=i+2; jn; j + =2) if(ai aj) t=ai; ai=aj;aj=t; main( ) int c10=10,9,8,7,6,5,4,3,2,1,i; fun(c,10); for(i=0;i10;i+ +) printf(“%d,“,ci); printf(“/n“); 则程序的输出结果是_。(分数:2.50)A.1,10,3,8,5,6,7,4,9,2,B.10,9,8,7,6,5,4,3,2,1,C.2,9,4,7,6,5,8,3,10,1,D.10,1,8,3,6,5,4,7,2,9,19.若有以下程序: #in
12、clude stdio.h main( ) int c6=10,20,30,40,50,60, *p,*s; P=c; s= printf(“%d/n“,s-P); 则程序运行后的输出结果是_。(分数:2.50)A.5B.50C.6D.6020.若有以下程序: #include stdio.h main( ) int a3=0, i,j,k=2; for(i=0; ik; i+ +) for(j=0;jk;j+ +) aj=ai+1; printf(“%d/n“,a1); 则程序运行后的输出结果是_。(分数:2.50)A.0B.2C.1D.321.有以下程序: #include stdio.h
13、 main( ) int a5=2,4,6,8,10, *p,* *k; P=a; k= printf(“%“,*(p+ +); printf(“%d/n“,* * k); 程序运行后的输出结果是_。(分数:2.50)A.4 6B.4 4C.2 2D.2 422.以下叙述中正确的是_。(分数:2.50)A.一条语句只能定义一个数组B.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元C.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D.在引用数组元素时,下标表达式可以使用浮点数23.以下叙述中正确的是_。(分数:2.50)A.数组下标的下限是 1B.数组下标的下
14、限由数组中第一个非零元素的位置决定C.数组下标的下限由数组中第一个被赋值元素的位置决定D.char c1, c2, *c3,c440;是合法的变量定义语句24.有以下程序: #include stdio.h #define N 4 void fun(int aN,int b) int i; for(i=0;iN;i+ +) bi = aii; main( ) int xN=1,2,3,4,5,6,7,8,9,10,yN,i; fun(x, y); for(i=0;iN;i+ +) printf(“%d,“, yi); printf(“/n“); 程序的运行结果是_。(分数:2.50)A.1,0
15、,7,0,B.1,2,3,4,C.1,4,5,9,D.3,4,8,10,25.有以下程序: #include stdio.h int fun(int (*s)4, int n, int k) int m,i; m=s0k; for(i=1;in; i+ +) if(sikm) m=sik; return m; main( ) int a44=1,2,3,4, 11,12,13,14, 21,22,23,24, 31,32,33,34; printf(“%d/n“,fun(a,4,0); 程序的运行结果是_。(分数:2.50)A.4B.34C.31D.3226.有以下程序: #include s
16、tdio.h main( ) int a44=1,4,3,2, 8,6,5,7, 3,7,2,5, 4,8,6,1; int i,j,k,t; for(i=0;i4; i+ +) for(j=0; j3; j+ +) for(k=j+1;k4; k+ +) if(aji aki) t=afji; aji=aki; aki=t; /*按列排序*/ for(i=0; i4; i+ +) printf(“%d,“,aii); 程序运行后的输出结果是_。(分数:2.50)A.1,6,2,1,B.8,7,3,1,C.4,7,5,2,D.1,6,5,7,27.有以下程序: #include stdio.h
17、 main( ) int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;i3;i+ +) printf(“%d“,t2-ii); 程序执行后的输出结果是_。(分数:2.50)A.3 5 7B.7 5 3C.3 6 9D.7 5 128.有以下程序: #include stdio.h main( ) int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,k,t; for(i=0;i3;i+ +) for(k=i+1;k4; k + +) if(aiiakk) t=aii;aii=akk;akk=t; for(i=0;i4;i+ +) printf(
18、“%d,“,a0i); 程序运行后的输出结果是_。(分数:2.50)A.1,1,2,6,B.6,2,1,1,C.6,4,3,2,D.2,3,4,6,29.若有定义语句: char s10=“1234567/0/0“; 则 strlen(s)的值是_。(分数:2.50)A.7B.8C.9D.1030.有以下程序: #include stdio.h #include string.h main( ) char p20=“a“,“b“,“c“,“d“,q=“abc“,r=“abcde“; strcat(p,r); strepy(p+strlen(q),q); printf(“%d/n“,strlen
19、,(p); 程序运行后的输出结果是_。(分数:2.50)A.11B.9C.6D.731.有以下程序(strcat 函数用以连接两个字符串): #include stdio.h #include string.h main( ) char a20=“ABCD/0EFG/0“,b=“IJK“; strcat(a,b); printf(“%s/n“,a); 程序运行后的输出结果是_。(分数:2.50)A.IJKB.ABCDE/0FG/0UKC.ABCDIJKD.EFGIJK32.有以下程序段: char name 20; int num; scanf(“name=%s num=%d“,name, 当
20、执行上述程序段,并从键盘输入:name=Lili num=1001回车后,name 的值为_。(分数:2.50)A.name=Lili num=1001B.name=LiliC.Lili nun=D.Lili33.有以下程序: #include stdio.h main ( ) char ch =“uvwxyz“,*pc; pc=ch; printf(“%c/n“, * (pc+5); 程序运行后的输出结果是_。(分数:2.50)A.zB.0C.元素 ch5的地址D.字符 y 的地址34.有以下程序: #include stdio.h main( ) char s=“012xy“; int i
21、,n=0; for(i=0;si!=0;i+ +) if(si=“a“ printf(“%d/n“,n); 程序运行后的输出结果是_。(分数:2.50)A.0B.2C.3D.535.若有以下定义和语句: #include stdio.h char s110=“abcd!“, *s2=“/n123/“; printf(“%d %d/n“, strlen(s1), strlen(s2); 则输出结果是_。(分数:2.50)A.10 7B.10 5C.5 5D.5 836.有以下程序: #include stdio.h void fun1 (char * p) char * q; q=p; whil
22、e( * q! =“/0“) (*q)+ +; q+ + ; main( ) char a = “Program“, * p; p = fun1 (p); printf(“% s/n“,a); 程序执行后的输出结果是_。(分数:2.50)A.PrphsbnB.ProhsbnC.ProgsbnD.Program37.有以下程序: #include void fun( char *a, char *b ) while( *a= =“*“ ) a+ +; while( *b= *a )1 b+ +;a+ +; main( ) char *s=“* * * * * a*b * * * *“,t80;
23、fun(s,t); puts(t); 程序的运行结果是_。(分数:2.50)A.abB.a*bC.* * * * *a*bD.a*b* * * *38.设有如下程序段: #include stdio.h char s20=“Beijing“, *p; p=s; 则执行 p=s;语句后,以下叙述正确的是_。(分数:1.00)A.s 和 p 都是指针变量B.s 数组中元素的个数和 p 所指字符串长度相等C.可以用*p 表示 s0D.数组 s 中的内容和指针变量 p 中的内容相同39.有以下程序: #include stdio.h main( ) char s=“abcde“; s+ =2; pri
24、ntf(“%d/n“,s0); 执行后的结果是_。(分数:2.50)A.输出字符 c 的 ASCII 码B.程序出错C.输出字符 cD.输出字符 a 的 ASCII 码40.有以下程序: #include stdio.h #include string.h void fun(char *s, int n) char *t; int i,j; for(i=0; in-1; i+ +) for(j=i+1; jn; j+ +) if(strlen(si) strlen(sj) t=si;si=sj;sj=t; main( ) char *ss=“bcc“,“bbcc“,“xy“,“aaacc“,“
25、aabcc“; fun(ss,5); printf(“%s,%s/n“,ss0,ss4); 程序的运行结果是_。(分数:2.50)A.aaaacc,xyB.xy,aaaaccC.bcc,aabccD.aabcc,bcc41.有以下程序: #include stdio.h int fun(char p10) int n=0,i; for(i=0;i7;i+ +) if(pi0= =“T“) n+ +; return n; main( ) char str10=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“,“sun“; printf(“%d/n“,fun(str); 程序
26、执行后的输出结果是_。(分数:2.50)A.1B.2C.3D.0二级 C 语言-111 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:41,分数:100.00)1.若有以下程序: #include stdio.h main( ) int a=1,b=2; for( ;a8;a+ +) b+ =a; a+ =2; printf(“%d,%d/n“,a,b); 则程序运行后的输出结果是_。(分数:2.00)A.9,18B.8,11C.7,11D.10,14 解析:解析 第一次循环 a 的值为 1,满足条件,执行 b+=a 与 a+=2,则 b 的值变为 3,a 的值变为
27、3。执行 a+,a 的值为 4,满足条件进入第二次循环,执行完循环体后 b 的值为 7,a 的值为 6。执行 a+,a的值为 7,满足条件进入第三次循环,执行完循环体后 b 的值为 14,a 的值为 9。执行 a+,a 的值变为10,不满足条件循环结束。所以选择 D 选项。2.若有以下程序: #include stdio.h main( ) int x=8; for( ;x0; x-) if(x%3) printf(“%d,“,x-); continue; printf(“%d,“,-x); 则程序的运行结果是_。(分数:2.00)A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8
28、,5,4,2, 解析:解析 coutinue 的作用是跳出循环体中剩余的语句而进行下一次循环。第一次循环,x 的值为8,循环体中 if 条件成立,打印 x 的值 8 后将 x 减 1,再执行 continue 语句,跳出本次循环。第二次判断循环条件时,x 的值变为 6,不满足循环体内 if 条件,执行打印-x 的操作,即打印 5 后跳出循环。第三次判断循环条件时 x 的值为 4,满足循环体中 if 条件。执行打印 x-的操作,即打印 4 后将 x 值减 1,执行 continue 语句,跳出本次循环。第四次判断循环条件时 x 的为 2,满足循环体中 if 条件,打印 x-,即打印 2 后将 x
29、 减 1,执行 continue 语句,跳出本次循环。在进行 for 条件表达式中第三个表达式 x-的操作后 x 的值为 0,不满足条件结束循环。所以打印结果为 8,5,4,2,。3.若有以下程序: #include stdio.h main( ) int a=6,b=0, c=0; for (;a;) b + = a; a - = + + c; printf(“%d,%d,%d/n“,a,b,c); 则程序的输出结果是_。(分数:2.50)A.1,14,3B.0,14,3 C.0,18,3D.0.14,6解析:解析 本循环的条件判断时,只要 a 为 0 就退出循环体,初始 a 的值为 6,满
30、足条件,执行完循环体后 b 的值为 6,a-=+c 即 a=a-(+c),所以 a 的值为 5,c 的值为 1;第二次循环后 b 的值为 11,a 的值为 3,c 的值为 2;第三次也是最后循环后,a 的值为 0,b 的值 14,c 的值为 3。4.若有以下程序: #include stdio.h main( ) int a=6,b=0,c=0; for(;a) b + =a; a- = c+ + ; printf(“%d,%d,%d/n“,a,b,c); 则程序的输出结果是_。(分数:2.50)A.5,6,0B.6,0,0C.6,6,1 D.5,6,1解析:解析 本题重点考查 C 语言中 f
31、or 语句和逻辑表达式,for 语句的一般形式为: fbr(表达式 1;表达式 2;表达式 3)语句 其循环中的“表达式 1(循环变量赋初值)”、“表达式 2(循环条件)”和“表达式 3(循环变量增量)”都是选择项,即可以缺省,但“;”不能缺省。该题目中省略了“表达式 1(循环变量赋初值)”和“表达式3(循环变量增量)”。for(;a)b+=a;a-=c+;相当于 while(aa-=c+;。因此C 选项正确。5.若有以下程序: #include stdio.h main( ) int i, sum; for(i=1; i6; i + + ) sum+ =1; printf(“%d/n“,su
32、m); 则程序运行后的输出结果是_。(分数:2.50)A.随机值 B.0C.15D.16解析:解析 本题重点考查 for 语句,变量没有初始化的情况下,默认值与编译器有关系,不同的编译器有不同的值。因此 A 选项正确。6.若有以下程序: #include stdio.h main( ) int i,j; for(i=1; i4; i + +) for(j=i; j4; j + +) pfinff(“%d*%d=%d“,i,j,i*j); printf(“/n“); 则程序运行后的输出结果是_。(分数:2.50)A.1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9 B.1*1=
33、1 1*2=2 1*3=32*1=2 2*2=43*1=3C.1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9解析:解析 外循环第一次 i 的值为 1,内循环第一次的初值为 1,打印 1*1=1;内循环第二次 j 的值为2,打印 1*2=2;内循环第三次 j 的值为 3,打印 1*3=3,打印回车换行,退出内循环。外循环第二次 i 的值为 2,内循环第一次 j 的初值为 2,打印 2*2=4;内循环第二次 j 的值为 3,打印 2*3=6,打印回车换行,退出内循环。外循环第 3 次,i 的值为 3,内循环第
34、一次 j 的初值为 3,打印 3*3=9,打印回车换行,退出内循环。7.若有以下程序: #include stdio.h main( ) int i=5; do if(i%3= =1) if(i%5= =2) printf(“%*d“,i); break; i+ +; while(i! =0); pnnff(“/n“); 则程序的运行结果是_。(分数:2.50)A.*2*6B.*3*5C.*5D.*7 解析:解析 dowhile 语句是先执行后判断,所以第一次先执行循环体,判断 i%3=1 的条件,由于 i为 5,所以余数为 2,条件不成立,执行 i+,i 的值为 6,判断 while 条件为
35、真,第二次执行循环体,同第一次循环体的执行过程一样,i 的值变为 7,判断 while 条件为真,第三次执行循环体,此时 i%3=1 条件成立,判断 i%5=2 也成立,打印*与 i 的值,即*7,然后执行 break 语句,跳出循环。所以选择 D 选项。8.若有以下程序: #inelude stdio.h main( ) int i,j; for(i=3; i=1; i-) for(j=1; j=2; j+ +) printf(“%d“,i+j); printf(“/n“); 则程序的运行结果是_。(分数:2.50)A.4 32 54 3B.4 53 42 3 C.2 33 42 3D.2
36、33 42 3解析:解析 第一次执行外循环,i 的值为 3;第一次执行内循环,j 的值为 1,j=2 条件成立,打印i+j 的值,即 4。第二次执行内循环,j 的值为 2,j=2 条件成立,打印 i+j 的值,即 5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i 的值为 2,内循环的执行同第一次一样,所以打印 3 和 4,打印回车换行,结束内循环。第三次执行外循环 i 的值为 1,同理内循环中打印 2 和 3,打印回车换行符,结束内循环。9.若有以下程序: #include stdio.h main( ) int i,j,m=1; for(i=1;i3;i+ +) for
37、(j=3;j0;j- -) if(i*j3) break; m*=i*j; printf(“m=%d/n“,m); 则程序运行后的输出结果是_。(分数:2.50)A.m=4B.m=2C.m=6 D.m=5解析:解析 第一次外循环 i 的值为 1,第一次内循环 j 的值为 3,不满足条件,执行 m*=i*j,即 m 的值为 3;第二次 j 的值为 2,不满足条件,执行 m*=i*j,即 m 的值为 6;第三次 j 的值为 1,不满足条件,执行 m*=i*j,即 m 的值仍为 6。第二次外循环 i 的值为 2,j 的值为 3,满足条件,执行 break 语句,跳出循环。10.若有以下程序: #in
38、elude stdio.h main( ) int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+ +) for(j=i;j=i;j+ +) t + = bibji; printf(“%d/n“,t); 则程序运行后的输出结果是_。(分数:2.50)A.3B.4 C.1D.9解析:解析 每次内循环只循环一次就结束,第一次外循环时,t=t+b0b00=1+b00=1+0=1;第二次外循环时 t=t+b1b11=1+b11=1+1=2;第三次外循环时,t=t+b2b22=2+b22=2+2=4。11.若有以下程序: #include stdio.h mai
39、n( ) int i; for(i=1;i=40; i+ +) if(i+ +%5= =0) if(+ +i%8= =0) printf(“%d“,i); printf(“/n“); 则执行后的输出结果是_。(分数:2.50)A.5B.24C.32 D.40解析:解析 本题的含义是在 1-40 的整数的范围中,只有当 i 的值能被 5 整除,且 i+2 的值能被 8 整除时,打印 i 的值,满足这个条件的只有 32,选择 C 选项。12.以下叙述中正确的是_。(分数:2.50)A.continue 语句的作用是使程序的执行流程跳出包含它的所有循环B.break 语句只能用在循环体内和 swit
40、ch 语句体内 C.在循环体内使用 break 语句和 continue 语句的作用相同D.break 语句只能用于 switch 语句体中解析:解析 continue 语句的作用是:跳过循环体中剩余的语句而进行下一次循环,所以 A 选项错误。Break 语句的作用是终止正在执行的 switch 流程,跳出 switch 结构或者强制终止当前循环,从当前执行的循环中跳出所以 C、D 选项错误。13.以下叙述中正确的是_。(分数:2.50)A.continue 语句使得整个循环终止B.break 语句不能用于提前结束 for 语句的本层循环C.使用 break 语句可以使流程跳出 switch
41、语句体 D.在 for 语句中,continue 与 break 的效果是一样的,可以互换解析:解析 break 语句通常用在循环语句和开关语句中。当 break 用手开关语句 switch 中时,可使程序跳出 switch 而执行 switch 以后的语句;当 break 语句用于 dowhile、for、while 循环语句中肘,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue 语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。A、B 和 D 三个选项中均有错误。因此 C 选项正确。14.若有以下定义: int x10, *pt=x; 则对 x 数组元素
42、的正确引用是_。(分数:2.50)A.pt+3B.* for(i=0;i9;i+ =2) a+ =* (t+i); printf(“%d/n“,s); 则程序执行后的输出结果是_。(分数:2.50)A.20B.25 C.45D.36解析:解析 统计 19 中的奇数和,此题考查指向数组的指针。C 语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第 i+1 个元素。程序运行的结果是 1+3+5+7+9=25。16.若有以下程序: #include stdio.h void fun(int *s, int n1, int n2) int i,j,t; i=n1; j
43、=n2; while(ij) t=si; si=sj; sj=t; i+ +; j-; main( ) int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3); fun(a,4,9); fun(a,0,9); for(k=0;k10;k+ +) printf(“%d“,ak); printf(“/n“); 则程序的运行结果是_。(分数:2.50)A.4321098765B.5678901234 C.0987654321D.0987651234解析:解析 该程序首先给一维数组赋值,然后三次调用 fun 函数,其中 fun(a,0,3);的功能是将一维数组中的第 1 个
44、元素和第 4 个元素互换,第 2 个元素和第 3 个元素互换;fun(a,4,9);的功能是将一维数组中的第 5 个元素和第 10 个元素互换,第 6 个元素和第 9 个元素互换,第 7 个元素和第 8 个元素互换;fun(a,0,9);的功能是将将一维数组中的第 1 个元素和第 10 个元素互换,第 2 个元素和第 9 个元素互换依次类推。因此 B 选项正确。17.若有以下程序: #include stdio.h main( ) int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i12;i+ +) csi+ +; for(i=1;i5;i+ +)
45、 printf(“%d“,ci); printf(“/n“); 则程序的运行结果是_。(分数:2.50)A.2 3 4 4B.4 3 3 2 C.1 2 3 4D.1 1 2 3解析:解析 在 for(i=0;i12;i+)csi+;语句中,数组元素 si的值作为数组 c 的下标,当退出循环时,数组 c 的 4 个元素的值分别为 4、3、3、2。因此 B 选项正确。18.若有以下程序: #include stdio.h void fun(int a, int n) int t,i,j; for(i=1;in; i+ =2) for(j=i+2; jn; j + =2) if(ai aj) t=ai; ai=aj;aj=t; main( ) int c10=10,9,8,7,6,5,4,3,2,1,i; fun(c,10); for(i=0;i10;i+ +) printf(“%d,“,ci); printf(“/n“); 则程序的输出结果是_。(分数:2.50)A.1,10,3,8,5,6,7,4,9,2,B.10,9,8,7,6,5,4,3,2,1,C.2,9,4,7,6,5,8,3,10,1,D.10,1,8,3,6