C语言期末复习题及答案(全)_第1页
C语言期末复习题及答案(全)_第2页
C语言期末复习题及答案(全)_第3页
C语言期末复习题及答案(全)_第4页
C语言期末复习题及答案(全)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言期末复习题及答案(全)c语言程序设计复习题及答案第一部分 程序设计基本概念1.1 在trubo c环境中用run命令运行一个c程序时,所运行的程序的后缀是_。答案:.exe1.2 c语言源程序文件的后缀是_,经过编译后,生成文件的后缀是_,经过连接后,生成文件的后缀是_。答案:.c .obj .exe1.3 结构化程序由_、_、_三种基本结构组成。答案:顺序、选择、循环第二部分 c程序设计的初步知识一、选择题2.1 以下选项中正确的整型常量是a)12. b)-20 c)1,000 d)4 5 6 答案:b2.2 以下选项中正确的实型常量是a)0 b)3. 1415 c)0.32910(2

2、)(10的2次方) d).871 答案:d2.3 以下选项中不正确的实型常量是a)2.607e-1 b)0.8103e 2 c)-77.77 d)456e-2 答案:b2.4 以下选项中不合法的用户标识符是a)abc.c b)file c)main d)printf 答案:a2.5 以下选项中不合法的用户标识符是a)_123 b)printf c)a$ d)dim 答案:c2.6 c语言中运算对象必需是整型的运算符是a)% b)/ c)! d)* 答案:a2.7 可在c程序中用作用户标识符的一组标识符是a)void define wordb)as_b3 _123 ifc)for -abc ca

3、sed)2c do sig 答案:b2.8 若变量已正确定义并赋值,符合c语言语法的表达式是a)a=a+7; b)a=7+b+c,a+ c)int(12.3%4) d)a=a+7=c+b 答案:b2.9 以下叙述中正确的是a)a是实型变量,c允许进行以下赋值a=10,因此可以这样说:实型变量中允许存放整型值。b)在赋值表达式中,赋值号右边既可以是变量也可以是任意表达式。c)执行表达式a=b后,在 0。d)已有a=3,b=5。当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3。 答案:b 第三部分、顺序结构一、选择题3.1 若a、b、c、d都是int类型变量且初值为0,以下选项中不

4、正确的赋值语句是a) a=b=c=100; b) d+; c) c+b; d) d=(c=22)-(b+); 答案:c3.2 以下选项中不是c语句的是a) int i; i+; printf("%dn", i); b) ; c) a=5,c=10 d) ; 答案:c3.3 以下合法的c语言赋值语句是a) a=b=58 b) k=int(a+b); c) a=58,b=58 d) -i; 答案:d3.4 以下程序的输出结果是a) 0 b) 1 c) 3 d)不确定的值main()int x=10,y=3;printf("%dn", y=x/y); 答案:c

5、3.5 若变量已正确说明为int类型,要给a、b、c输入数据,以下不正确的输入语句是a) read(a,b,c); b) scanf("%d%d%d",a,b,c);c) scanf("%d%d%d",&a,&b,&c); d) scanf("%d%d%d",&a,&b,&c); 答案:d3.6 若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是a) 10<cr> 22<cr> 33<cr>

6、 b) 10.0,22.0,33.0 c) 10.0<cr> 22.0 33.0 d) 10 22<cr> 33scanf("%f %f %f", &a, &b, &c); 答案:b第1页共17页3.7 若变量以正确定义,要将a和b中的数进行交换,下面不正确的语句组是a) a=a+b,b=a-b,a=a-b; b) t=a,a=b,b=t;c) a=t; t=b; b=a; d) t=b; b=a; a=t; 答案:c3.8 若变量已正确定义,以下程序段的输出结果是a) 输出格式说明与输出项不匹配,输出无定值b) 5.1700

7、0 c) 5.168000 d) 5.169000x=5.16894;printf("%fn",(int)(x*1000+0.5)/(float)1000); 答案:d3.9 若有以下程序段,c3中的值是a) 0 b) 1/2 c) 0.5 d) 1int c1=1,c2=2,c3;c3=c1/c2; 答案:a3.10 若有以下程序段,其输出结果是a) 0,0,-10 b) 0,0,5 c) -10,3,-10 d) 3,3,-10int a=0,b=0,c=0;c=(a-=a-5),(a=b,b+3);printf("%d,%d,%dn",a,b,c)

8、; 答案:b3.11 当运行以下程序时,在键盘上从第一列开始输入9876543210<cr>(此处<cr>代表enter),则程序的输出结果是a) a=98,b=765,c=4321 b) a=10,b=432,c=8765c) a=98,b=765.000000,c=4321.000000 d) a=98,b=765,c=4321.0main()int a; float b,c;scanf("%2d%3f%4f",&a,&b,&c);printf("na=%d,b=%f,c=%fn",a,b,c); 答案

9、:c3.12 以下程序的输出结果是a) a=%2,b=%5 b) a=2,b=5 c) a=%d,b=%d d) a=%d,b=%dmain() int a=2,b=5;printf("a=%d,b=%dn",a,b); 答案:d 第四部分、选择结构一、 选择题4.1 下列运算符中优先级最高的运算符是a) ! b) % c) -= d) && 答案:a4.2 下列运算符中优先级最低的运算符是a) | b) != c) <= d) + 答案:a4.3 为表示关系xyz,应使用的c语言表达式是a) (x>=y)&&(y>=z)

10、b) (x>=y)and(y>=z)c) (x>=y>=z) d) (x>=y)&(y>=z) 答案:a4.4 设a、b和c都是int型变量,且a=3,b=4,c=5;则以下的表达式中,值为0的表达式是a) a&&b b) a<=b c) a|b+c&&b-c d) !(a<b)&&!c|1) 答案:d4.5 以下程序的输出结果是a) 0 b) 1 c) 2 d) 3main() int a=2,b=-1,c=2;if(a<b)if(b<0) c=0;else c+=1;prin

11、tf("%dn",c); 答案:c第2页共17页4.6 以下程序的输出结果是a)1 b) 2 c) 3 d) 4main() int w=4,x=3,y=2,z=1;printf("%dn",(w<x?w:z<y?z:x); 答案:a4.7 若执行以下程序时从键盘上输入3和4,则输出结果是a) 14 b) 16 c) 18 d) 20main() int a,b,s;scanf("%d%d",&a,&b);s=a;if(a<b) s=b;s*=s;printf("%dn",s);

12、答案:b4.8 下面的程序片段所表示的数学函数关系是-1(x<0)a) y= 0(x=0)1(x>0)1(x<0)b) y= -1(x=0)0(x>0)0(x<0)c) y= -1(x=0)1(x>0)-1(x<0)d) y= 1(x=0)0(x>0)y=-1;if(x!=0) y=1;if(x>0) y=1;else y=0; 答案:本题没有正确答案。程序片段所表示的数学函数关系应该是 0(x<0)y= 0(x=0)1(x>0)4.9 运行以下程序后,输出a) * b) &&&&c) #&

13、;&&& d) 有语法错误不能通过编译main() int k=-3;if(k<=0) printf("*n")else printf("&&&&n"); 答案:d4.10 若a和b均是正整型变量,以下正确的switch语句是a) switch(pow(a,2)+pow(b,2) case 1: case 3: y=a+b; break;case 0: case 5: y=a-b;b) switch(a*a+b*b); case 3:case 1: y=a+b; break;case 0: y

14、=b-a; break;c) switch a default: x=a+b;第3页共17页case 10: y=a-b; break;case 11: x=a*d; break;d) switch (a+b) case10 : x=a+b; break;case11 : y=a-b; break;答案:没有正确答案。如果c选项改为: switch(a) default: x=a+b;case 10: y=a-b; break;case 11: x=a*b; break;则答案可以选择c 第五部分、循环结构一、 选择题5.1 以下程序段的输出结果是a) 9 b) 1 c) 11 d) 10 i

15、nt k,j,s;for(k=2; k<6; k+,k+) s=1;for(j=k; j<6; j+) s+=j; printf("%dn", s);答案:d5.2 以下程序段的输出结果是a) 12 b) 15 c) 20 d) 25 int i,j,m=0;for(i=1; i<=15; i+=4)for(j=3; j<=19; j+=4) m+; printf("%dn", m);答案:c5.3 以下程序段的输出结果是a) 1098b) 987c) 10987d) 9876int n=10;while(n>7) n-;p

16、rintf("%dn", n);第4页共17页答案:b5.4 以下程序段的输出结果是a) 1 b) 3 0 c) 1 -2 d) 死循环int x=3;do printf("%3d",x-=2); while(!(-x);答案:c5.5 以下程序段的输出结果是a) 15 b) 14 c) 不确定 d) 0main() int i,sum;for(i=1; i<6; i+) sum+=sum;printf("%dn",sum);答案:c5.6 以下程序段的输出结果是a) 741 b) 852 c) 963 d) 875421mai

17、n() int y=10;for(; y>0; y-)if(y%3=0) printf("%d", -y); continue; 答案:b5.7 若x是int型变量,以下程序段的输出结果是a) *3#4*5b) #3*4#5c) #3*4#5d) *3#4*5for(x=3; x<6; x+)printf(x%2)?("*%d"):(#%dn"),x);答案:d5.8 以下程序的输出结果是a) *#*#*#$ b) #*#*#*$ c) *#*#$ d) #*#*$ main() int i;for(i=1; i<=5; i+

18、) if(i%2) printf("*");else contionue;printf("#");printf("$n");答案:a5.9 以下叙述正确的是第5页共17页a) do_while语句构成的循环不能用其它语句构成的循环来代替。b) do_while语句构成的循环只能用break语句退出。c) 用do_while语句构成循环时,只有在while后的表达式为非零时结束循环。d) 用do_while语句构成循环时,只有在while后的表达式为零时结束循环。 答案:d5.10 以下程序的输出结果是a) 39 81 b) 42 84

19、 c) 26 68 d) 28 70main() int x,i;for(i=1; i<=100; i+) x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)printf("%d ", x);printf("n");答案:d二、 填空题5.11 当执行以下程序段后,i的值是_、j的值是_、k的值是_。 int a,b,c,d,i,j,k;a=10; b=c=d=5; i=j=k=0;for( ; a>b; +b) i+;while(a>+c) j+;do k+; while(a>d+);答案:5、4、65.12

20、以下程序段的输出结果是_。int k,n,m;n=10; m=1; k=1;while(k<=n) m*=2;printf("%dn",m);答案:死循环5.13 以下程序的输出结果是_。main() int x=2;while(x-);printf("%dn",x);答案:-15.14 以下程序段的输出结果是_。int i=0,sum=1;do sum+=i+; while(i<5);printf("%dn",sum);答案:11 第六部分、字符型数据第6页共17页一、选择题6.1 c语言中的简单数据类型有a) 整型、实

21、型、逻辑型 b) 整型、实型、字符型c) 整型、字符型、逻辑型 d) 整型、实型、逻辑型、字符型 答案:b6.2 c语言中,字符(char)型数据在微机 b) 补码 c) ebcdic码 d) ascii码 答案:d6.3 设有语句char a=72;,则变量aa) 包含1个字符 b) 包含2个字符 c) 包含3个字符 d) 说明不合法 答案:a6.4 c语言中不合法的字符常量是a) 0xff b) 65 c) & d) 028答案:本题a)和d)选项都是不合法的字符常量。若a)选项改为xff,则正确。6.5 c语言中不合法的字符串常量是a) "121" b) y=

22、 c) "nn" d) "abcdx6d" 答案:b 第七部分、函数一、选择题7.1 以下说法中正确的是a) c语言程序总是从第一个定义的函数开始执行b) 在c语言程序中,要调用的函数必须在main函数中定义c) c语言程序总是从main函数开始执行d) c语言程序中的main函数必须放在程序的开始部分7.2 以下函数的类型是a) 与参数x的类型相同 b) void类型 c) int类型 d)fff(float x) printf("%dn",x*x); 答案:c7.3 以下函数调用语句中,含有的实参个数是a) 1 b) 2 c) 4

23、 d) 5func( (exp1,exp2),(exp3,exp4,exp5);答案:b7.4 以下程序的输出结果是a) 11 b) 20 c) 21 d) 31fun(int a,int b) int c;c=a+b;return c;main() int x=6,y=7,z=8,r;r=func(x-,y+,x+y),z-);printf("%dn",r);答案:c7.5 以下程序的输出结果是a) -1 b) 0 c) 1 d) 2main() int i=2,p;p=f(i,i+1);printf("%d",p);int f(int a, int

24、b) int c;c=a;if(a>b) c=1;第7页共17页 答案:c 无法确定else if(a=b) c=0;else c=-1;return(c);答案:a7.6 以下程序的输出结果是a) 0 b) 1 c) 6 d) 无定值fun(int a,int b,int c) c=a*b; main() int c;fun(2,3,c);printf("%dn",c);答案:d7.7 以下程序的输出结果是a) 5.500000 b) 3.000000 c) 4.000000 d) 8.25 double f(int n) int i; double s;s=1.0

25、;for(i=1; i<=n; i+) s+=1.0/i;return s;main() int i,m=3; float a=0.0;for(i=0; i<m; i+) a+=f(i);printf("%fn",a);答案:a二、 填空题7.8 以下程序的输出结果是_。unsigned fun6(unsigned num) unsigned k=1;do k*=num%10; num/=10; while(num);return k;main() unsigned n=26;printf("%dn",fun6(n);答案:127.9 以下程

26、序的输出结果是_。double sub(double x,double y,double z) y-=1.0;z=z+x;return z;main() double a=2.5,b=9.0;printf("%fn",sub(b-a,a,a);第8页共17页答案:9.0000007.10 以下程序的输出结果是_。fun1(int a,int b) int c;a+=a; b+=b;c=fun2(a,b);return c*c;fun2(int a,int b) int c;c=a*b%3;return c;main() int x=11,y=19;printf("

27、%dn",fun1(x,y);答案:4 第八部分 指针一、 选择题8.1 若有定义:int x,*pb; 则以下正确的赋值表达式是a) pb=&x b) pb=x c) *pb=&x d) *pb=*x8.2 以下程序的输出结果是a) 因变量无定义输出不定值 b) 0 c) -1 d) 1#include <stdio.h>main() printf("%dn",null); 答案: b8.3 以下程序的输出结果是a) 5,2,3 b) -5,-12,-7 c) -5,-12,-17 d) 5,-2,-7void sub(int x,i

28、nt 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);答案: b8.4 以下程序的输出结果是a) 4 b) 6 c) 8 d) 10 main() int k=2,m=4,n=6;int *pb=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf("%dn",n);答案: c8.5 已知指针p的指向如图8.5所示,则执行语句*p+;

29、后,*p的值是a) 20 b) 30 c) 21 d) 318.6 已知指针p的指向如图8.5所示,则表达式*+p的值是a) 20 b) 30 c) 21 d) 318.7 已知指针p的指向如图8.5所示,则表达式+*p的值是第9页共17页 答案: a 答案: b 答案: ba) 20 b) 30 c) 21 d) 31 答案: c8.8 以下程序的输出结果是a) 23 b) 24 c) 25 d) 26 void prtv(int *x) printf("%dn",+*x); main() int a=25;prtv(&a);答案: d8.9 以下程序的输出结果是

30、a) 运行出错 b) 100 c) a的地址 d) b的地址 main() int *k, *a b=100;a=&b; k=&a;printf("%dn",*k);答案: b8.10 以下程序的输出结果是a) 4,3 b) 2,3 c) 3,4 d) 3,2 void fun(float *a,float *b) float w;*a=*a+*a;w=*a;*a=*b;*b=w;main() float x=2.0,y=3.0;float *px=&x,*py=&y;fun(px,py);printf("%2.0f,%2.0fn&

31、quot;,x,y); 答案: c8.11 以下程序的输出结果是a) 9.000000 b) 1.500000 c) 8.000000 d) 10.500000 void sub(float x,float *y,float *z) *y=*y-1.0;*z=*z+x;main() float a=2.5,b=9.0,*pa,*pb;pa=&a,pb=&b;sub(b-a,pa,pa);printf("%fn",a); 答案: c二、 填空题8.13 以下程序段的输出结果是_。int *var,ab;ab=100; var=&ab; ab=*var+

32、10;printf("%dn",*var); 答案:100 8.14 以下程序的输出结果是_。int ast(int x,int y,int *cp,int *dp) *cp=x+y;*dp=x-y;第10页共17页main() int a,b,c,d;a=4; b=3;ast(a,b,&c,&d);printf("%d %dn",c,d); 答案:7 18.15 若有定义:char ch;(1) 使指针p可以指向变量ch的定义语句是_。 答案:char *p=&ch;(2) 使指针p可以指向变量ch的赋值语句是_。答案:p=&a

33、mp;ch;(3) 通过指针p给变量ch读入字符scanf函数调用语句是_。答案:scanf("%c",*p);(4) 通过指针p给变量ch的赋字符的语句是_。 答案:ch=*p;5) 通过指针p输出ch中字符的语句是_。答案: printf("%c",*p);第九部分 数组一、 选择题9.1 若已定义:int a =0,1,2,3,4,5,6,7,8,9,*p=a,i;其中0i9,则对a数组元素的引用不正确的是a)ap-a b)*(&ai) c)pi d)*(*(a+i) 答案:d9.2 以下程序段给数组所有元素输入数据,应在下划线处填入的是a

34、)a+(i+) b)&a(i+1) c)a+i d)&a+i main()int a10,i=0;while(i<10)scanf("%d",_);. . 答案:d9.3 以下程序的输出结果是a)3 b)4 c)1 d)2 main()int a10=1,2,3,4,5,6,7,8,9,10,*p=a;printf("%dn",*(p+2); 答案:a9.4、 以下程序的输出结果是a)不确定的值 b)3 c)2 d)1 main()int n2=0,i,j,k=2;for(i=0;i<k;i+)for(j=0;j<k;j

35、+) nj=ni+1;printf("%dn",nk); 答案: a9.5 以下程序的输出结果是a)17 b)18 c)19 d)20 main()int a =2,4,6,8,10,y=1,x,*p;p=&a1;for(x=0;x<3;x+) y+=*(p+x);printf("%dn",y); 答案: c9.6 以下程序的输出结果是a)6 b)8 c)4 d)2 main()int a10=2,4,6,8,*p=a,i;for(i=0;i<4;i+)ai=*p+;printf("%dn",a2); 答案:a9.

36、7 以下程序的输出结果是a)720 b)120 c)24 d)6第11页共17页 f(int b ,int n)int i,r=1;for(i=0;i<=n;i+)r=r*bi;return r;main()int x,a=2,3,4,5,6,7,8,9;x=f(a,3);printf("%dn",x); 答案:b9.8 以下程序中若第一个printf语句输出的是194,则第二个printf语句的输出结果是a)212 b)204 c)1a4 d)1a6 main()int a=1,2,3,4,5,6,7,8,9,0,*p;p=a;printf("%xn&qu

37、ot;,p);printf("%xn",p+9); 答案:d9.9 以下程序的输出结果是a)0987654321 b)4321098765 c)5678901234 d)0987651234 fun(int *s,int n1,int n2)int i,j,t;i=n1; j=n2;while(i<j)t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;i+; j-;main()int a10=1,2,3,4,5,6,7,8,9,0,*p=a,i;fun(p,0,3); fun(p,4,9); fun(p,0,9);for(i=0;i<10;i+

38、)printf("%d",*(a+i); 答案: c9.10 以下程序的输出结果是a) 4 4 b) 2 2 c) 2 4 d) 4 6 main() int a5=2,4,6,8,10,*p,*k;p=a; k=&p;printf("%d ",*(p+);printf("%dn",*k); 答案: c9.11 当运行以下程序时输入三行,每行都是在第一列上开始,<cr>代表enter键: a<cr>b<cr>cdef<cr>则程序的输出结果是a) abcdef b) a c) a

39、 d) ab b bc cd cdefdef#include "stdio.h"#define n 6main() char cn; int i=0;for(i=0;i<n;i+) ci=getchar();for(i=0;i<n;i+) putchar(ci); 答案: c9.12 若有定义和语句:int c45, (*cp)5; cp=c;第12页共17页则对c数组元素的引用正确的是a) cp+1 b) *(cp+3) c) *(cp+1)+3 d) *(cp+2) 答案: d9.13 若已定义:int a43=1,2,3,4,5,6,7,8,9,10,11

40、,12,(*prt)3=a,*p=a0;则能正确表示数组元素a12的表达式是a) *(*prt+1)2 b) *(*(p+5) c) (*prt+1)+2 d) *(*(a+1)+2) 答案: d9.14 若有定义和语句:int a43=1,2,3,4,5,6,7,8,9,10,11,12,(*prt)3=a,*p4,i;for(i=0;i<4;i+) pi=ai;则不能够正确表示a数组元素的表达式是a) a43 b) p00 c) prt22 d) (*(p+1)1 答案: a 第十部分 字符串一、选择题10.1 以下能正确进行字符串赋值,赋初值的语句是a) char s5=a,e,i

41、,o,u;b) char *s; s="good!"c) char s5="good!"d) char s5; s="good!" 答案: b10.2 以下程序段的输出结果是a) 68 b) 0 c) 字符d的地址 d) 不确定的值char str="abcd",*p=str;printf("%dn",*(p+4); 答案: b10.3 以下程序段的输出结果是a) 11 b) 10 c) 9 d) 8printf("%dn",strlen("atsn0121&quo

42、t;); 答案: c10.4 以下程序的输出结果是a) abcd b) a c) d d) abcdbcd b c abccd c b abd d a amain() char s="abcd",*p;for(p=s; p<s+4; p+) printf("%sn",p);答案: a10.5 库函数strcpy用以复制字符串。若有以下定义和语句:char str1="string",str28,*str3,*str4="string"则对库函数strcpy的不正确调用是a) strcpy(str1,"

43、;hello1"); b) strcpy(str2,"hello2");c) strcpy(str3,"hello3"); d) strcpy(str4,"hello4"); 答案: c 第十一部分 函数一、选择题11.1 以下叙述不正确的是a) c程序的main函数可以没有参数。b) c程序的main函数可以有参数。c) c程序的main函数若有参数时,第一个参数的值最少是1。d) main函数的第一个参数必须是整型,其名字必须是argv,第二个参数可以定义成:char *argv,名字必须是argv。 答案:d11.2

44、若有以下定义和说明,则对fun函数的正确调用语句是a) a=fun; a(w); b) a=fun; (*a)(&c);c) b=fun; *b(w); d) fun(b);main() int (*a)(int *),*b(),w10,c;.第13页共17页fun(int *c) . 答案:b11.3 以下叙述正确的是a) c程序中各函数之间既允许直接递归调用也允许间接递归调用b) c程序中各函数之间不允许直接递归调用也不允许间接递归调用c) c程序中各函数之间允许直接递归调用不允许间接递归调用d) c程序中各函数之间不允许直接递归调用允许间接递归调用 答案:a 11.4 以下程序的输出结果是a) 8 b) 30 c) 16 d) 2long fib(int n) if(n>2) return (fib(n-1)+fib(n-2);else return (2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论