1、C练习题答案一、填空1、C语言规定,在一个源程序中main函数的位置 可以任意 2、C语言中的标识符只能由三种字符组成,它们是 数字 、 字母 和 下划线 3、表达式18/4*sqrt(4.0)/8值的数据类型为 双精度 4、当a=3,b=2,c=1时,表达式f=abc的值是 0 5、在C语言中,char型数据在内存中的存储形式是 ASCII值 6、对应scanf(“a=%d,b=%d”,&a,&b);语句的输入a为3,b为7的键盘输入格式是a=3,b=7 7、C语言提供的三种逻辑运算符是 &、|、! 8、下面程序段的运行结果是 you? char str=“how are you?”; pr
2、intf(“%s”,str+8);9、模块化程序设计要求: 高 内聚、低 偶合。10、已知指针p的指向如图所示,则表达式*p+的值是 21 二、单项选择1、以下运算符中运算级别最高的是(D)(A) % (B)/ (C) (D)!2、以下是字符常量的是 C (A)C (B) (C) W (D) 3、sizeof(float)是B。(A)一个双精度型表达式 (B)一个整型表达式(C)一种函数调用 (D)一个不合法的表达式4、已知i、j、k为int 型变量,若从键盘输入:1,2,3,使i的值为1,j 的值为2,k的值为3,以下选项中正确的输入语句是:(C)(A) scanf(%2d%2d%2d,&i
3、,&j,&k);(A) scanf(%d %d %d,&i,&j,&k);(A) scanf(%d,%d,%d,&i,&j,&k);(A) scanf(i=%d,j=%d,k=%d,&i,&j,&k);5、以下非法的赋值语句是:(C)(A)n=(i=2,+i); (B)j+;(C)+(i+1); (D)x=j0;6、以下四个选项中,均是不合法的用户标识符的是(C)(A)A P_O do (B)float la0 _A (C)b-a goto int (D)_123 temp int7、若有说明语句:char c= /72 ;则变量c(A)(A)包含1个字符 (B)包含2个字符(C)包含3个字符
4、 (D)说明不合法,C的值不确定8、下面不正确的字符串常量是:(A)(A) abc (B) 12 12 (C) 0 (D) 9、执行下列程序段后, a值为: D int a, b; a=15; b=12; a=(a- =b+)? a%5 : a/5; (A) 0 (B)2.8 (C)4 (D) 2 10、判断char型变量ch是否为大写字母的正确表达式是(C)(A)A=ch=A)&(ch=A)&(ch=Z) (D) (A=ch)11、以下程序的运行结果是(C)main()int m=5; if(m+5) printf(“%dn”,m); else printf(“%dn”,m-); (A)4
5、(B) 5 (C) 6 (D) 712、以下程序段的运行结果是:(B) int x=0,s=0;while(!x!=0) s+=+x;printf(“%d”,s);(A)0(B)1(C)无限循环(D)程序段中的控制表达式是非法的13、C语言中while和do-while循环的主要区别是(A)。(A)do-while的循环体至少无条件执行一次(B)while的循环控制条件比do-while的循环控制条件严格(C)do-while允许从外部转到循环体内(D)do-while的循环体不能是复合语句14、有如下程序,该程序的执行结果是( C )main() int num=0;while(num=2)
6、num+;printf(“%d”,num); (A)1 (B)12 (C)123 (D)1 2 3 415、以下程序运行后的输出结果是(A)main() int i=3, j=0;do j=j+(-i); while(i2);printf(“%dn”,j); (A)2 (B)3 (C) 4 (D)无限循环 16、如果char cc=“12345”,做sizeof(cc)后的返回值应为( C )(A)2 (B) 5 (C)6 (D)117、判断字符串a和b是否相等,应当使用(D)。 (A)if(a=b) (B)if(a=b) (C)if(strcpy(a,b) (D)if(strcmp(a,b)
7、18、执行语句for(i=1;i+4;);后变量i的值(C) (A)3 (B) 4 (C) 5 (D)不定19、下面程序行的结果是:(C)func(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);(A)11 (B) 20 (C)21 (D)3120、有以下程序: main()char s=ABCD,*p; for(p=s+1;ps+4;p+)printf(%sn,p);程序运行后的输出结果是( D )A) ABCDB) A C) B D) BCD
8、 BCD B C CD CD C D D D D三、改错题1、 以下程序段求两个数的和:int a,b=4,c;scanf(“%d”,a); c=a+b; printf(“%d”,c);答案:scanf(“%d”,a);有错,应为:scanf(“%d”,&a);2、 以下程序段将输入字符显示到屏幕上:char ch;ch=getchar(ch);putchar(ch);答案:一、ch=getchar(ch);有错改为:ch=getchar()二、putchar(ch);有错改为:putchar(ch);3、 以下程序段输出最大者:int a=5,b=3;if(ab) printf(“%d”,a
9、);else printf(“%d”,b);答案:if(ab) printf(“%d”,a);4、 以下程序段求1-10所有数的和:int sum,i;do sum=sum+i; i+;while(i10);printf(“%d”,sum);答案:int sum,i;有错改为:int sum=0,i=1;while(i10);有错改为while(i=10);5、 以下程序段将输入的字符串显示到屏幕上:char str20;scanf(“%s”,&str);puts(str); 答案:scanf(“%s”,&str);有错改为scanf(“%s”,str);因为数组名本身就表示数组的首地址四、编
10、程题答案:#include stdio.hvoid main() double x,y; printf(请输入X的值:); scanf(%lf,&x); if(x=1 & x10) y=2*x-1; else y=3*x-1; printf(y=%lf,y);2、求十个学生成绩的平均值。答案:#include stdio.hvoid main() double score10,sum=0,avg; int i; printf(请输入10个学生的成绩:); for(i=0; i10; i+) scanf(%lf,&scorei); sum=sum+scorei; avg=sum/10; printf(学生的平均成绩为:%.2lf,avg);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1