1、复习题一一、单项选择题.以下选项中,均符合C常量形式的是 (1) OA)123, 0123 B) Oxffce, 46789 C) 0246, e-5 D) i()2, 123.假定有 char a=,Ab=,Bc,那么执行 printf(%d”,(c=ab-?a+b:a-b);的值是 (2)。A) 130B) 131C)0D)都不是特别说明:根据c=avb-?a+b:a-b计算得到c的整数值为130,但常用字符的ASCII值最 大为127, 130超过了 127, 130的二进制形式是:10000010,最高位为1,因此可以肯定它 是一个负数,根据负数二进制补码的求法可以得出它是-126的补
2、码值。1 .假定 int a=l, b=2, c=0,表达式:c=(a= b|a,a+b+1.0/2)的值是 (3)。A) 1B)2C) 1.5D) 2.5.表达三个变量a、b、c中有一个为0,两个为非。的正确表达式是 (4)。A)a*b*c= =0B)a*b!=O|a*c!二O|b*c!=OC)(a*b|a*c|b*c)&!(a*b*c)D)!(a*b*c)&(a+b+c).在以下表达式中,与a=0 & b!=0不说价的是 (5)。A)!a&bB)!(a!=0 | b=0)C) ! (a=0 | | b!=0)D) ! (a*b) & b.上机运行以下程序会出现一个错误,这个错误的性质是(6
3、)。main() int i,j,a=3,2,l,b=6,4,2,0);float s=0;for(i=0;i3;i+) j=bai; s+=1.0/j; printf(n %fs);)A)数组说明语法错B)分母为0运算错C)数组元素引用语法错D)数组元素引用下标超界错.设 char a尸xyn01238(T;那么数组 a 的长度是 (7)。A) 7B) 8C) 9D) 13.以下程序的功能是一(8) omain() int a33= 1,2,34,5,6,7,8,9, i,*p=a,s=0;for(i=0; i3; i+) for(; pai+3; p+) s+=*p; p+=i; prin
4、tf(nn %d”,s);)A)求矩阵a的所有元素之和B)求矩阵a的上三角元素之和C)求矩阵a的下三角元素之和D)都不是.以下程序的功能是(9) omain() int a10= 3,529,8,0,2,4,6 ,i,p=0,q=0;for(i=0;ip) p=ai;if(ai=0 & av=9B) a=,0, & a=48+0 & a=0 & a-0v=9printf ( %5d , a&b);printf ( %5dn,r , b15最小的N值并输出。1 .为二维数组int输入数据后,计算并输出周边元素的和。一、填空1. -162. 04. a%3=0&a%56.问号9. ab.b答案3.
5、 x20&x30|x-1005. int a16 , *p=a;7. 18. 5010 .结构体类型相同二.选择BDCBA DADCD BDDDB BDCCA三、程序阅读题01 ( 0 1 1 2 302 ( d=1003 ( 20 3504 ( ABCDECDEE05 ( 5 1 2 3 206 ( 0 1 2 1 28四.程序设计main () float sum=0;int n=0;do n+;sum+=l. 0/n; While(sum=15);printf( n=%dn M , n-l);)1. main ()int i, j, sum=0, a10 10;for(i=0; i10;
6、 i+)for(j=0;j10;j+)scanf( a%dv ,&aij);for(i=0; i10; i+)sum+= ai0+ a9i;for(i=0; ia | a+l=b-, a+b 的值是 (3)。A)0B) 1C)4D)5.假定 int a=2, b=3, c=0,表达式:(a=bl)+(a&!c)+b/a*2.0 的值是(4).A) 2.0B)3.0C) 4.0D) 5.0.以下表达式中,不能正确表达两个非。变量a和b的绝对值相等,但互为异号的是*LB) a*b0 | b0) D) !(a+b) & a*b0 | b0)C) !abs(a+b) & (a0 | b0).以下各程序
7、语句中,有语法错误的选项是A)int x=Ay=2,z,a2*n;B) z=x+y;C) z=x+y-;D) z=(x+l)+-y;不正确的选项是.A) s=0;for(i=0;i3;i+)for(j=0;j4;j+) s+=aij;C)s=0;for(i=0;i4;i+)for(j=0;j3;j+) s+=aji;8.假定a是10个元素的一维数组, 那么正确的操作是.不正确的选项是.A) s=0;for(i=0;i3;i+)for(j=0;j4;j+) s+=aij;C)s=0;for(i=0;i4;i+)for(j=0;j3;j+) s+=aji;8.假定a是10个元素的一维数组, 那么正
8、确的操作是.7.假定a是3行4列的矩阵(inta34),那么对于以下求矩阵元素之和的程序段中,B)s=0;for(j=0;j4;j+)for(i=0;i3;i+) s+=aij;D) s=0;for(i=0;iv3;i+)for(j=0;j4;j+) s+=aji;假设要将后9个数往前移一个位置挤掉最前面的一个数,A) for(j=l;j0; j-) aj=aj+l;C) B) for(j=9;j0;j-) aj-l=aj; D) for(j=0; j10; j+) aj=aj+l;9.以下各循环语句中,不是无限循环的是(9).A) for(k=-l; -10k0; k+);10.字符串 ”
9、ab 1 12803” 的长度是(10).D) 13A) 8B)9C) 10.假定有如下求最大值和最小值的程序:main() int i,a, max-32768, min=32767;for (i=0; i10; i+) scanf(d”,&a);if (a max ) max=a;)printf (n max,min= %d,%d, max, min);)那么以下各结论中正确的选项是(11) oA) 程序完全正确B)当输入递增数据时结果不正确C)当输入递减数据时结果不正确D)输入任何数据结果都不正确.假设希望当字符变量a中为数字字符时,表达式的值为“真。为非数字字符时,表达式 的值为“假二
10、那么以下不能满足要求的表达式是( OA) a=0 & a=0 & a=48+o & a=0 & a0v=9.上机运行以下程序会出现一个错误,这个错误的性质是一(13). main()intij,a=3,2,l,b=6A2,0;float s=0;for(i=0;i3;i+) j=bai; s+=l.O/j; printf(n %fs);)A)数组说明语法错B)数组元素引用语法错C)分母为0运算错D)数组元素引用下标超界错11 .以下求矩阵a中主对角元素之和的各程序段中,不正确的选项是(14)A) int a33= 1,2,3,4,5,6,7,8,9, s=0, *p=a;for ( p=a;
11、pa+3; p+=3 ) s+=*p+;B) int a33= 1,2,34,5,6,7,8,9, s=0, i;for (i=0; i3; i+ ) s+=aii;C) int a33= 1,2,34,5,6,7,8,9, s=0, *p=a, i;for (i=0; i3; i+ ) s+=pii;D) int a33= 1,2,345,6,7,8,9, s=0, *p=a;for ( p=a; pa+3; p+=4 ) s+=*p;12 .在以下表达式中,与!(a+b)&a*b不等价的是 (15)。A) a+b=0 & a*b!=0B) a0 | b0C) a!=0 &b!=0 & !(
12、a+b)D) !(a+b) & a二、程序阅读题13 .以下程序的运行结果是(16)main() int i, n=0;for( i=l; i=A & *c=A & *cak) k=j;j=aO; aO=ak; ak=j;printf (“s”, a);)A) ZbcXYa789 B) cbaXYZ789.以下程序的运行结果是)o#include nstdio.hC) 7bcXYZa89 D) 9bcXYZ78amain() int i; char a=nabl2n;for (i=0; aij; i+)switch (ai)case 1 : printf (n%dn, ai); break;c
13、ase 2 : printf (d,ai); break;default: if (& ai-z*) putchar ( ai);else printf (n%dai+l );)A)ab23B)abl2C)ab4950D)ab5051.以下程序的运行结果是(22) oint a=3, b=5;f (int a ) a+;b+=a;main() int a=6; f (a-1); printf(Hn %d,%dn,a,b); A) 3,8B)3,llC) 6,8.以下程序的运行结果是(23) omain() int i,s=0;for(i=3;i8;i+) s+=f(i);printf(nn%d
14、n,s);)A) 3B)5C) 15.以下程序的运行结果是(24) omain() int i,b,k=0;for (i=l; i=0) k+; printf (d,%d”,k,b);)A) 3, - 1B) 8, - 1C) 3,025.以下程序的运行结果是(25) o#define F x+ymain() int x=4, y=5, z;if(x+y) z=2*F; else z=F/2;printfn %d”,z);)A) 5B)7C) 15D) 6,11int f(int m) int i;for(i=2;im;i+)if(!(m%i) return 0;return 1;)D) 25
15、D) 6,11int f(int m) int i;for(i=2;im;i+)if(!(m%i) return 0;return 1;)D) 25D) 8,-2D) 20三、程序填充题选择适当的内容填在以下各程序的下划线处,以使程序完整。找出矩阵中的所有鞍点(位置)。所谓鞍点,即该点的数在行上最小,列上最大。 main() int i,j,k,p,m=4,n=5,a45;for(i=0;im;i+)for(j=0;jn;j+) scanf(H%dn,&aij);for(i=0; im; i+) P=aiO;for(j=0; jn; j+) if( (26) p=aij;for(j=0;jn;
16、j+) if(aij=p) for(k=0; kpD) ajipC) akjpB) printf (nn%3d,%3d,i,j )D) printf (nn%3d; akj)(26) A) aiUpB)aiUp(27) A) aiUp(28) A) printf(nn%3d,%3dn,kj )C) printf (nn%3dn, aij)将两个有序的数组合并到另一个数组中,要求合并后仍有序。main() int i=0,m=5,a5= 1,3,7,9,13);int j=0,n=6,b6= 2,4,8,16,20,24;int k=0,cll;while( i+jvm+n) if( (29)c
17、k+司i+;else if(30) ck+=bj+;else if()ck+=ai+;else ck+=bj+;for(i=0;i=m(30) A) i=m(31) A) i=mB) im B)im B)j=nC)j=n C)j=n C) ainD)jnD) bjai文本文件filel.txt中存放有假设干学生(不超过1000个)的姓名及班号,读出所有学 生的内容并按以下要求整理后存入文本文件file2.txt中。要求:每个班只保存一个学生。#include stdio.h*#include string.h” typedef struct student (char name 10;char
18、 class10;STU;main() int i,j,m=l,n;(32)fp=fopen(nfilel.txtn;,rH);for(i=0; (33); i+) fscanf(fp,n%s%d%sn,ai.name, ai.class); n=i;)fclose(fp);for (i=l; in; i+ )(for (j=0; jm; j+ ) if (34) break;if( (35) am+4-=ai;)fp=fopen (“file2.txt“,);for (i=0; im; i+ )fpnntf ( fp, n %10s%4d%10s ,ai.name, aij.class );
19、fclose(fp);(32) A) STU a1000;C) FILE *fp;A) in B) i=n(33) A) ai.class=aj.classC) ai.class!=aj.class (35)A)jmB) STU a1000; FILE *fp;D) char a1000; FILE *fp;C) feof(fp)D) !feof(fp)B) strcmp( ai.class,aj.class)! =0D) strcmp( afi.class,aj.class)=OB) j=mD)j=n四、程序设计1 .输入10个数用冒泡排序将它们按升序排列,并输出。2 .编写程序,求两个自然
20、数m和n的最大公约数和最小公倍数。实现。)答案一.单项选择题I. B 2. DII. C 12. A二.程序阅读题16. B 17. A三.程序填充题26. B 27. D3. D 4. B13. C 14. C18. B 19. A28. B 29. C5. B 6. D15. B20. B 21. D30. A 31. C7. D 8. A 9. D22.D23.A24.D32.B33.D34.D(用函数调用来10. C25. C35. B四、程序设计1. ttinclude “stdio. h#define N 10main () int aN, i, j, t;printf (inpu
21、t %d number:n, N);for(i=0;iN;i+) scanf(%d”, &ai);for(i=0;iN;i+) printf (“%4d”, ai);printf (“rT);for(i=0;iN-l;i+)for(j=0;jaj+l) t=aj;aj=aj+l;aj+l=t;for(i=0;iN;i+) printf(“%4d,ai);printf (rT); 2. #include unsigned int yue(unsigned int x,unsigned int y); void main () unsigned int m,n,b,y;scanf (n%u%uH,
22、&m,&n);b = m*n;y=yue(n,m);printf (n%u,%uny,b/y); unsigned int yue(unsigned int x, unsigned int y) int t;C)jny=t;x=y; y=t;y=t;x=y; y=t;if (x=A )&(ch二 V )C. (ch=A )&(ch= Z ) D. ( A b) & (n=cd)后的n值为A. 0 B. 1C. 2D. 37 .以下程序运行结果是main() int a, b, d=341;a=d/100 %9;b=(-l)& (-2);printf ( %d, %d”,a, b);A. 6,
23、1 B. 3, 1C. 6, 0D. 3,08 .int x=己,y=20, z=30;以下语句执行后,x、y、z的结果是if (xy) z=x; x=y; y=z;B. x=20, y=30, z=30D. x=20, y=30, z=20A. x=10, y=20, z=30C. x=20, y=30, z=109 .以下程序的运行结果是 main () int m=5;if (m+5) printf( %dn,m);else )else )printf( u%dn , m-);A. 4B. 5C. 6D. 7.以下程序的输出结果是:main () int x=2,y=_l,z=2;if
24、(xy)if (y0) z=0;else z=z+l;printf( %dn”,z);)A. 3B. 2C. 1D. 0.以下程序的运行结果是main() int k=4, a=3, b=2, c= 1;printf( un%dnv , ka?k:cb?c:a);)A. 4B. 3C.12 .以下程序的运行结果是x=y二0;While(x15)y+,x+=+y;printf ( d, %d,y, x);A. 20, 7 B. 6, 20 C.13 .以下程序的运行结果是main () int num=0;While (num=2)num+; printf(,num);)A. 1B. 1,2C.
25、14 .以下程序段x=-l;dox=x*x; While (!x);A.是死循环B.循环执行两次A. 4B. 3C.15 .以下程序的运行结果是x=y二0;While(x15)y+,x+=+y;printf ( d, %d,y, x);A. 20, 7 B. 6, 20 C.16 .以下程序的运行结果是main () int num=0;While (num=2)num+; printf(,num);)A. 1B. 1,2C.17 .以下程序段x=-l;dox=x*x; While (!x);A.是死循环B.循环执行两次2D. 120, 8D. 8, 201,2,3D.1,2, 3, 4C.循
26、环执行1次 D.有语法错误15 .假设有说明:int i;那么以下循环执行次数是for(i=2;i= =0;) printf ( d”,i-);A.无限次 B. 0次C. 1次D. 2次16 .假设有说明:int a10;那么对a数组元素的正确引用是A. a10B. a3.5C. a(5)D. a10-1017 .以下的二维数组a的正确说明是A. int a0 1; B. float a(3,4); C. double al4; D. float a(3) (4);18 .假设有说明:int a3 4;那么对a数组元素的非法引用是A. a0 L2*l B. aLUL3j C. a4-2J 0j
27、 D. aLOj L4j19 .以下正确的说法是A.定义函数时,形参的类型说明可以放在函数体内B. return后边的值不能为表达式C.如果函数值的类型与返回值类型不一致,以函数值类型为准D.如果形参与实参的类型不一致,以实参类型为准20 .假设用数组名作为函数调用的实参,传递给形参的是A.数组的首地址;A.数组的首地址;B.数组第一个元素的值;C.数组全部元素的值;D.数组元素的个数。21 .以下程序的正确的运行结果是voi d num() extern int x, y; int a=15, b=10;x=a-b;y=a+b;)int x, y;main () int a=7,b=5;x=
28、a+b;y=a-b;num();printf ( %d, %dn”,x, y);)A. 12,2B.不确定22.以下程序的正确的运行结果是 int x;main() x=5;cs ( ) ; printf ( dn” , x);)cs() X=x*x*x;A. 0B. 2523.以下程序的正确的运行结果是sub (int x, int y, int *z) *z=y-x;main ()int a, b, c;sub (10, 5, &a);sub (7, a, &b);sub (a, b, &c);printf ( %d, %d, %dn”,a, b, c);A. 5,2,3 B. -5,-1
29、2, -724.以下程序:C. 5,25C. 125C.-5,-12,-17D. 1, 12D. 5D. 5, -2, -7main() int a10 = 2, 4, 6,8, 10, 12, 14, 16, 18, 20),*p;P二a;printf( %xn,p);printf( %xn” ,p+9);)假设假设第一个printf语句输出的是ffca,那么第二个printf语句输出的是:A. ffddB. ffdcC. ffdeD. ffcd三.程序阅读题1 .以下程序的运行结果是main() int x = 0, 1,2, 3,4, 5, 6, 7, 8, 9);int s, i, *
30、p;s=0;P=&xO;for (i=l;i10;i+二2)s+=*(p+i);printf( sum=%d”,s);)2 .以下两个程序分别运行后DI中的结果和显示结果是#include stdio. hmain () FILE *f1; int n; fl=fopen( w)for (n=l;n=5;n+)fprintf (f 1, ” %d, %d, %dn”,n, n+n, n+n+n);fclose(fl);)# include” stdio. hmain() FILE *f2; int x, i, j, k;f2=fopen( “DI”, r)for(x=l;x=5;n+) fsc
31、anf (f2, w %d,%d,%dn,;printf ( %d, %d, %dn”,i, j*j, k*k*k);)3 .以下程序的运行结果是int *pmain() int a=l, b=2, c=3p=&b;ab(a+c, &b);printf ( (l)%d, %d, %dnw , a, b, *p);)ab (int a, int *b) int c=4;*p=*b+c;a二*pc;printf ( (2)%d, %d, %dn” , a, *b, *p) ;.以下程序的运行结果是 nt a=5, b=7;main() int a=4, b=5, c;=plus (a, b);pr
32、intf( A+B=%dn”,c) ;plus (int x, int y) int z;z=x+y, return(z);4 .以下程序的运行结果是int xl=30, x2=40;main() int x3=10, x4=20;sub (x3,x4);sub(x2,xl);11 .在C语言中,if语句后的一对圆括号中,用以决定分支的流程的表达式(11)。A)只能用逻辑表达式B)只能用关系表达式C)只能用逻辑表达式或关系表达式D)可用任意表达式12 .以下论述中正确的选项是一 (12)。A)在同一个函数中不能定义多个同名的变量B)结构体变量的名字可以与其所属的成员的名字相同C)局部变量的名字
33、不能与函数名相同D)局部变量的名字不能与全局变量的名字相同.在以下各循环语句中,不能正确计算自然数1-100中所有数之和的是一(13)。A) for(s=0, i=l; i=100 ;) s+=+i;for(s= 100, n=100; n;) s+=n;B) fdr(s=0,i=l J=100; i=j; i+, j ) s+=i+j;for(s=0, i=0; i=100 ;) s+=i+;13 .假定要使以下程序的输出结果第一行都是1,第二行都是2,第三行都是3,那么正确的 数据输入格式是一 (14) omain() int i,jX33;for(j=0;j3;j+)fbr( i=0;
34、i3; i+) scanf (d”, &aij);for( i=0; i3; i+) printfCAn); for (j=0; j3; j+) printf aij); )A) 1 2 3 1 2 3 1 2 3B) 1 1 1 2223 3 3C) 1,2,3,2,3/23D) 1/22,2,3,3,314 .以下各程序段中,不能正确输入10个数到数组a中的是 (15)。A) int i,a10;for(i=0;ii);B) int i,a10|;for(i=0;i10;i+) scanf(%d”,a+i);C) int a10,*p;fbr(p=a;i10;p+) scanf(u%d9p
35、);D) int i,a10,*p=a;fbr(i=0;i10;i+) scanf(%d”,p+);二、程序阅读题15 .以下程序的运行结果是一 (16) omain() int i, n=0;for( i=l; i20; i+) if (i%3=0&i%5) n+;printf (n %d”, n);)A) 1B)5C)6D)7.以下程序的运行结果是一 (17) omain() int i,n=0;for(i=2;i5;i+) do if(i%3) continue; n+; while(!i);n+;printf(”n%d”,n);)A) 2B)3C)4D)5.以下程序的运行结果是一 (18) o nt a=2;int f (int *a) return (*a)+; main() int s=0;int a=5; s+=f ( &a ); +=f ( &a);printf ( %d, %d, %d, %dnw , x3, x4, xl, x2);)sub (int x,int y) xl=x;x=y, y=xl;6 .以下程序的运行结果是 main() int a5 = 5, 10,-7, 3, 7),i,t, j;sort(a);for (i=0; i=4; i+
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100