第二部分C程序设计 、选择题(每题1分,共10分) 21.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是 A)abs(x-y)<10B)x-y>-10&kx-y<10 C)e(x-y)<-10!(y-x)>10D)(x-y)*(x-y)<100 22.有以下程序 { inta=3,b=4,c=5,d=2 if(a>b) if(b>c) printf(%d", d++ +1) printf("%d,++d +1) printf(%d\n", d) 程序运行后的输出结果是 A)2B)3C)43D)44 23.下列条件语句中,功能与其他语句不同的是 A) if(a) printf(%d\n", x): else printf (%d\n", y) 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) 24.有以下程序 I int i=0, X=0 for(::) if(i==3||i==5) continu (i==6)break printf(%d\n", s) 程序运行后的输出结果是 A)10B)13C)21D)程序进入死循环 25.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是B A)for(i=l B)for(i=l C)i=1;p=1; while(i<=5){p*=i;i++;} D)i=l: p=l: do p*=i; i++; while(i<=5) 6.有以下程序
16 第二部分 C 程序设计 一、选择题(每题 1 分,共 10 分) 21.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系|x-y|<10 的是 A)abs(x-y)<10 B)x-y>-10&& x-y<10 C)@(x-y)<-10||!(y-x)>10 D)(x-y)*(x-y)<100 22.有以下程序 main() { int a=3,b=4,c=5,d=2; if(a>b) if(b>c) printf("%d",d++ +1); else printf("%d",++d +1); printf("%d\n",d); } 程序运行后的输出结果是 A)2 B)3 C)43 D)44 23.下列条件语句中,功能与其他语句不同的是 A) if(a) printf("%d\n",x); else printf("%d\n",y); 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); 24.有以下程序 main() { int i=0,x=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i++; s+=i; }; printf("%d\n",s); } 程序运行后的输出结果是 A)10 B)13 C)21 D)程序进入死循环 25.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是 B A)for(i=1,p=1;i<=5;i++) p*=i; B)for(i=1;i<=5;i++){ p=1; p*=i;} C)i=1;p=1;while(i<=5){p*=i; i++;} D)i=1;p=1;do{p*=i; i++; }while(i<=5); 26.有以下程序 main()
i char a, b, c, d: scanf("%c,%c,%d,%d",&a,&b,&c,&d); printf("c, %c, %c, %c\n", a, b, c, d): 若运行时从键盘上输入:6,5,65,66。则输出结果是 A)6,5,A,BB)6,5,65,66C)6,5,6,5D)6,5,6,6 27)以下能正确定义二维数组的是 A)inta[][3];B)inta[][3]=2{2*3} C)inta[][3]={};D)inta[2][3]={{1},{2},{3,4}} 28.有以下程序 int f(int a return a%2: mal ints[8]={1,3,5,2,4,6},i,d=0; (i=0;f(s);i++)d+=s printf(%\n", d) 程序运行后的输出结果是 A)9B)11C)19D)21 29.若有以下说明和语句,intc[4][5],(*p)[5];p=c;能正确引用c数组元素的是 A)p+1B)*(p+3) C)*(p+1)+3D)*(p[0]+2)) 0.有以下程序 maino i int a=7, b=8, *p, *g, r p=&a; g=& r→p;p=q:q-r printf("%d, %d, %d, %d\n", *p " g, a, b) 程序运行后的输出结果是 A)8,7,8,7B)7,8,7,8C)8,7,7,8D)7,8,8,7 二、填空题(每空1分,共30分) 请将每一个空的正确答案写在答题卡【31】至【60】序号的横线上,答在试卷上不得分 (一)基本概念题(共5分) (1)格式符%3d表示输出3位整型数,不够3位时 对齐。 (2)若用方括号中的整数n来表示数组元素的总数,则数组的第一个元素的下标为0,最 后一个为 (3)在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。总是以 作为串的结束符 (4)maino Int x, y =x>70?100:0
17 { char a,b,c,d; scanf("%c,%c,%d,%d",&a,&b,&c,&d); printf("c,%c,%c,%c\n",a,b,c,d); } 若运行时从键盘上输入:6,5,65,66。则输出结果是 A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6 27)以下能正确定义二维数组的是 A)int a[][3]; B)int a[][3]=2{2*3}; C)int a[][3]={}; D)int a[2][3]={{1},{2},{3,4}}; 28. 有以下程序 int f(int a) { return a%2; } main() { int s[8]={1,3,5,2,4,6},i,d=0; for (i=0;f(s);i++) d+=s; printf("%d\n",d); } 程序运行后的输出结果是 A)9 B)11 C)19 D)21 29.若有以下说明和语句,int c[4][5],(*p)[5];p=c;能正确引用 c 数组元素的是 A)p+1 B)*(p+3) C)*(p+1)+3 D)*(p[0]+2)) 30.有以下程序 main() { int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=p; p=q;q=r; printf("%d,%d,%d,%d\n",*p,"q,a,b); } 程序运行后的输出结果是 A)8,7,8,7 B)7,8,7,8 C)8,7,7,8 D)7,8,8,7 二、填空题(每空 1 分,共 30 分) 请将每一个空的正确答案写在答题卡【31】至【60】序号的横线上, 答在试卷上不得分. (一)基本概念题(共 5 分) (1) 格式符%3d 表示输出 3 位整型数, 不够 3 位时________对齐。 (2) 若用方括号中的整数 n 来表示数组元素的总数,则数组的第一个元素的下标为 0,最 后一个为________。 (3) 在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串。总是以 ________作为串的结束符 (4) main() { int x, y; x=50; y=x>70?100:0;
本例中,y将被赋值0。如果x=80,y将被赋值 (5)关系运算和逻辑运算表达式的结果只能是 (二)阅读程序,写出运行结果(共10分) 6.以下程序段的输出结果是 printf("%o\n", i 7.以下程序运行后的输出结果是 mal int a, b,c: b=025 c=0x25; printf("%d%d%dⅦn’,a,b,c) 8.以下程序运行后的输出结果是 intp[7]={11,13,14,15,16,17,18} int 1=0, j=0 while(i<7 & p%2==1)j+=p[i++ printf(%d\n, j) 9.以下程序运行后的输出结果是 mal intx=1,y=0,a=0,b=0 switch(x) Icase 1: switch(y) case 0 case 1: b++ break case 2: a++: b++: break printf(%d %d\n", a, b) 10.以下程序运行后的输出结果是 inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18} int i=0, j=0, S=0 while(i++<4) if(i==2 i==4)continue do( s+= a[j]: j++; while(j<4)
18 } 本例中, y 将被赋值 0。如果 x=80, y 将被赋值________。 (5) 关系运算和逻辑运算表达式的结果只能是________。 (二)阅读程序,写出运行结果(共 10 分) 6.以下程序段的输出结果是 _____ int i=9; printf("%o\n",i); 7.以下程序运行后的输出结果是 _______ 。 main() { int a,b,c; a=25; b=025; c=0x25; printf("%d %d %d\n',a,b,c); } 8.以下程序运行后的输出结果是 ______ 。 main() { int p[7]={11,13,14,15,16,17,18}; int i=0,j=0; while(i<7 && p%2==1) j+=p[i++]; printf("%d\n",j); } 9.以下程序运行后的输出结果是 _______ 。 main() { int x=1,y=0,a=0,b=0; switch(x) {case 1:switch(y) { case 0:a++; break; case 1:b++; break; } case 2:a++;b++; break; } printf("%d %d\n",a,b); } 10.以下程序运行后的输出结果是 _______ 。 main() { int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}}; int i=0,j=0,s=0; while(i++<4) { if(i==2||i==4) continue; j=0; do{ s+= a[j]; j++; } while(j<4);
printf("%d\n", s) 11.以下程序运行后的输出结果是 char a[="language",b[="Programe char *pl, *kp2: int k for(k=0;k<=7;k++) if(*p1+k)==k(p2+k)) printf (%c", *(p1+k)) 12.以下程序运行后的输出结果是 mal char a[]="123456789″,*p;inti=0 while(*p) if(i%2=0)*p=* p++;i++ puts(a) 13.以下程序中,for循环体执行的次数是 #define m ntl # define K m+1米M/2 int 1 for(i=l: i<K: 1++) 14、以下程序的输出结果为 #define pi 3.14 #define S(x)PI*X*x I int a=2 pr intf("%4.1fn",6.28/S(a); 15.以下程序运行时输出结果为 nt func(int a) c-=a: return c
19 } printf("%d\n",s); } 11.以下程序运行后的输出结果是 _____ 。 main () { char a[]="Language",b[]="Programe"; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if(*p1+k)==*(p2+k)} printf("%c",*(p1+k)); } 12.以下程序运行后的输出结果是 _______ 。 main() { char a[]="123456789",*p; int i=0; p=a; while(*p) { if(i%2==0) *p='*"; p++;i++; } puts(a); } 13.以下程序中, for 循环体执行的次数是 _____ 。 #define N 2 #define M N+1 #define K M+1*M/2 main() { int i; for(i=1;i<K;I++) { ... } ... } 14、以下程序的输出结果为 。 #define PI 3.14 #define S(x) PI*x*x main() { int a=2; printf("%4.1f\n",6.28/S(a)); } 15. 以下程序运行时输出结果为 。 #include<stdio.h> int func(int a) { static int c=1; c*=a; return c; }
void maino b=b+func(i) printf("In%d", b) (三)完普程序(共15分) 1.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 程序分析:见下面注释 程序源代码 main o float sn=100. 0, hn=sn/2 int n for(【16】) 【17】/*第n次落地时共经过的米数*/ 【18】/*第n次反跳高度*/ printf( the total of road is %f\n", sn) printf( the tenth is %f meter\n, hn 2.对10个数进行排序(从小到大) 程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交 换 下次类推,即用第二个元素与后8个进行比较,并进行交换 程序源代码 #define 10 fint i,j, min, tem, aNI /*input data*/ printf("please input ten num: \n"); for(i=0; K<N 1++) printf("a[%d]=, i), canf("%d",【19】);} printf("n") printf("%5d",【20】) /*sort ten num* for(i=0; K<N-1; 1++) nin-l for(【21】)
20 void main() { int b=1,i; for(i=2;i<4;i++) b=b+func(i); printf("\n%d",b); } (三)完善程序(共 15 分) 1.一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,共经过多少米?第 10 次反弹多高? 程序分析:见下面注释 程序源代码: main() { float sn=100.0,hn=sn/2; int n; for(【16】) { 【17】/*第 n 次落地时共经过的米数*/ 【18】/*第 n 次反跳高度*/ } printf("the total of road is %f\n",sn); printf("the tenth is %f meter\n",hn); } 2. 对 10 个数进行排序(从小到大) 程序分析:可以利用选择法,即从后 9 个比较过程中,选择一个最小的与第一个元素交 换, 下次类推,即用第二个元素与后 8 个进行比较,并进行交换。 程序源代码: #define N 10 main() {int i,j,min,tem,a[N]; /*input data*/ printf("please input ten num:\n"); for(i=0;i<N;i++) { printf("a[%d]=",i); scanf("%d",【19】);} printf("\n"); for(i=0;i<N;i++) printf("%5d",【20】); printf("\n"); /*sort ten num*/ for(i=0;i<N-1;i++) {min=i; for(【21】)