1、C语言教材习题答案习 题 11.1 C语言的主要优点有哪些?它与其他程序设计语言的区别是什么?答:(略)1.2 什么是程序?程序设计的目的是什么?程序设计的步骤有哪些?答:(略)1.3 简要叙述C程序的上机调试过程。答:(略)1.4 冯诺依曼结构指的是什么?计算机有哪些组成部分?各部分的功能是什么?答:(略)习 题 22.1 简答题(1)C语言为什么要规定对所有用到的变量要“先定义,后使用”?这样做有什么好处?答:凡未被事先定义的,不作为变量名,这就能保证程序中变量名使用得正确; 每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元;指定每一变量属于一个类型;这就便于在编译时;据此
2、检查该变量所进行的运算是否合法。(2)下列符号中,你可以选用哪些做标识符?哪些不可以?为什么?A3B 3aB -b if next_ day e_2 OK? i*j $答:可用作标识符的是:A3B、next_、day、e_2;其余的不可以,因为标识符是由字母或下划线开始的,由字母、下划线、数字组成的字符串,另外,关键字是不能够作为标识符的。(3)字符常量与字符串常量有什么区别?答:在C语言当中,通过“0”这个特殊字符作为判断字符串结尾的标志,所以,即使一个空字符串,也要占用一个字符;另外,值得注意的是,在字符串中“0”这个字符是不显示的。而字符常量在内存空间中,只占用一个字节的空间来存放字符说
3、对应的ASCII码值。2.2 填空题(1)以下程序的运行结果是 。#include void main ( ) char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctc%ctabcn,c1,c2,c3); printf(tb%c %cn,c4,c5);运行结果为:aa bb cc abc A N(2)下面程序的运行结果是 。#include void main( ) char a=2,b=a; int c; c=a+b; a=c; printf(%d,%d,%dn,a,b,c); printf(%c,%c,%cn,a,b,c);运行结果为:99,9
4、7,99 c,a,c(3)求下面算术表达式的值。 设x=2.5,a=7,y=4.7,表达式x+a%3*(int)(x+y)%2/4的值是 2.500000 。 设a=2,b=3,x=3.5,y=2.5,表达式(float)(a+b)/2+(int)x%(int)y的值是 3.500000 。2.3 编程题(1)要将“China”译成密码,密码规律是,用原来的字母后第4个字母代替原来的字母。例如,字母a后面第4个字母为e。因此,“China”应译为“Glmre”。请编写程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为C、h、i、n、a,经过运算,使c1、c2、c3、c4、c
5、5分别变为G、l、m、r、e,并输出。答: #include void main() char c1=C,c2=h,c3=i,c4=n,c5=a; c1=c1+4;c2=c2+4; c3=c3+4;c4=c4+4; c5=c5+4; printf(“%c%c%c%c%cn”,c1,c2,c3,c4,c5); (2)从键盘输入一个小写英文字母,将其转换成大写字母输出结果。如小写字母c,转换成大写字母时用小写字母的ASCII-32即可。答: #include void main() char c; scanf(“%c”,&c); if(ca&c8+2 Ba&d C(a*2-c)|d Da-bc4)
6、后,s,t的值为( D )。A1,2 B1,1 C0,1 D1,0(11)设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是( A )。A(!a=1)&(!b=0); B(a=Y=Z C(X=Y)(Y=Z) D(X=Y)&(Y=Z)(13)表达式 (int)3.6*3的值为( A )。A9 B. 10 C. 10.8 D. 18(14)以下语句的输出结果是( D )。int a=-1,b=4,k;k=(+a0)&!(b-0?p/10:p%3); (7)设y是int型变量,请写出判断y为奇数的关系表达式 (y%2) = =1 。习 题 44.1 单项选择题(1)若以下选项中
7、的变量已正确定义,则正确的赋值语句是_C_。Ax1=26.8%3 B1+2=x2 Cx3=0x12 Dx4=1+2=3;(2)以下程序输出结果是_D_。void main() int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf(%d,%d,%d,%dn,a,b,c,d);A0,1,2,0 B0,0,0,3 C1,1,2,0 D编译有错(3)下列叙述中正确的是_D_。Abreak语句只能用于switch语句B在switch语句中必须使用defaultCbreak语句必须与switch语句中的case配对使用D在switch语句中,不一定使
8、用break语句(4)若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是_C_。Aswitch(x) Bswitch(int)x); case 1.0:printf(*n); case 1:printf(*n);case 2.0:printf(*n); case 2:printf(*n);Cswitch(a+b) Dswitch(a+b) case 1:printf(*n); case 1:printf(*n);case 2+1:printf(*n); case c:printf(*n);(5)在以下给出的表达式中,与while(E)中的(E)不等价的
9、表达式是 C 。A(!E=0) B(E0E0) C(E=0) D(E!=0)(6)若执行下面的程序时,从键盘上输入5和2,则输出结果是 C 。void main() int a,b,k; scanf(%d,%d,&a,&b); k=a; if(ab)k=a%b; else k=b%a; printf(%dn,k);A5 B3 C2 D0(7)以下程序执行后的输出结果是 B 。#include void main() int y=10; while(y-); printf(y=%dn,y);Ay=0 By=-1 Cy=1 Dwhile构成无限循环(8)C语言中while 和dowhile循环的主
10、要区别是 A 。Adowhile的循环体至少无条件执行一次Bwhile的循环控制条件比dowhile的循环控制条件更严格Cdowhile允许从外部转到循环体内Ddowhile 的循环体不能是复合语句(9)以下程序段的输出结果是 A 。void main() int x=3; do printf(%3d,x-=2); while(!(- -x);A1 B3 0 C1 -2 D死循环 (10)若i和j已定义为int类型,则以下程序段中内循环体的总的执行次数是 A 。for (i=5;i;i-) for(j=0;j4;j+) A20 B25 C24 D30 (11)以下程序执行后,sum的值是 D
11、。void main( ) int i,sum;for(i=1; i6; i+) sum+=i; printf(“%d”,sum);A15 B14 C0 D不确定 (12)执行下面程序后,a的值为 B 。#include void main() int a,b; for(a=1,b=1; a=20) break; if(b%3=1) b+=3; continue; b-=5; printf(%d,a);A7 B8 C9 D10(13)下面程序输出的是 B 。#include void main() int y=9; for( ; y0; y-) if(y%3=0) printf(%d,-y);
12、 continue; A741 B852 C963 D875421(14)以下程序的输出结果是 A 。#include void main() int i; for(i=1;i=5;i+) if(i%2) printf(*); else continue; printf(#); printf($n);A*#*#*#$ B#*#*#*$ C*#*#$ D*#*#*$(15)以下程序中,while次数是 C 。void main()inti=0; while(i10) if(i1) continue; if(i=5)break; i+;A1 B10 C6 D死循环,不能确定次数(16)以下程序的输
13、出结果是 B 。#include void main() int x=23;do printf(%d,x-); while(!x);A321 B23 C不输出任何内容 D陷入死循环(17)以下程序的输出结果是 D 。#include void main() int k=4,n=4; for( ; nk ; ) n+; if(n%3!=0) continue; k-; printf(%d,%dn,k,n);A1,1 B2,2 C3,3 D4,4(18)以下程序的输出结果是 B 。#include void main() int i=0,a=0; while(i50)printf(%d,a); i
14、f(a40)printf(%d,a); if(a30)printf(%d,a);(2)以下程序输出结果是 6 。#include void main() int m=5; if(m+5) printf(%dn,m); else printf(%dn,m-);(3)以下程序运行时若从键盘上输入:10 20 30。输出结果是 10 30 0 。#include void main() int i=0,j=0,k=0;scanf(%d%*d%d,&i,&j,&k); printf(%d %d %dn,i,j,k);(4)下列程序的运行结果是 9 。void main() int x=-9,y=5,z
15、=8; if(xy) if(y0)z=0; else z+=1; printf(%dn,z);(5)以下程序的输出结果是 1 3 2 。#include void main() int i,m=0,n=0,k=0; for(i=9;i=11;i+) switch(i/10) case 0: m+; n+; break; case 10: n+; break; default: k+; n+; printf(%d %d %dn,m,n,k);(6)以下程序的输出结果是 10 。#include void main() int i,j; for(j=10;j11;j+) for(i=9;i=j-1
16、) printf(%d,j); (7)以下程序的输出结果是 4 。#include void main() int a,b; for(a=1,b=1;a=10) break; if(b%3=1) b+=3; continue; printf(%d,a);(8)运行以下程序后,从键盘上输入65 14,再回车,输出结果为 m=1 。#include void main() int m,n; scanf(%d%d,&m,&n); while(m!=n) while(mn) m-=n; while(nm) n-=m; printf(m=%d,m);4.3 编程题(1)已知华氏温度与摄氏温度的转换公式为
17、:C=(F-32)*5/9,编写程序,当输入华氏温度F时,输出对应的摄氏温度。答:#includevoid main()float c,f;scanf(“%f”,&f);printf(“%f”,c=(f-32)*5/9);(2)请为如下分段函数编写程序,当输入一个x值,计算输出y的数值:答:#includevoid main()int x,y;scanf(“%d”,&x);if(x=1)y=x;else if(x10)y=2*x-1; else y=3*x-11;printf(“y=%d”,y);(3)输入三个数a、b、c,按照大小顺序排序输出。答:#includevoid main()flo
18、at a,b,c,t;scanf(“%f, %f, %f”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“%f, %f, %f”,a,b,c);(4)输入一个字符, 请判断是字母、数字还是特殊字符?答:#includevoid main()char c;scanf(“%c”, &c);if(c=0&c=a&c=A&c=Z)printf(“字母”); else printf(“数字”);(5)编写程序,从键盘输入一个字符,若为大写则转换为小写输出,若为小写则转换为大写输出,其他输入则输出Error。
19、答:#includevoid main()char c;scanf(“%c”, &c);if(c=a&c=A&c=Z)printf(“%c”,c+32); else printf(“Error”);(6)编程序按下列公式计算e的值(精度为1e-6)。e=1+1/1!+1/2!+1/3!+1/n!答:#include#includelong ni(int x1) long x2=1; int i; for(i=1;i=1e-6); printf(e=%fn,t); (7)求s=a+aa+aaa+aaaa+aaa的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加
20、),相加数的个数由键盘控制。答:#includevoid main()int a,n,i=1,sn=0,tn=0;printf(“a,n=:”);scanf(“%d,%d”,&a,&n);while(i=n)tn=tn+a;sn=sn+tn;a=a*10;i+printf(“a+aa+aaa+=%dn”,sn);(8)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?答:#includevoid main() float sn=100,hn=sn/2; int n; for(n=2;n=10;n+) sn=sn+2*hn; hn=hn/2; printf(第十次落地时共经过%fm.n,sn); printf(第十次反弹%fm.n,hn);(9)输入十进制整数,将其转变为十六进制数输出。答:#includevoid main() int a; scanf(%d,&a); printf(十六进制为%x,a); (10)编程实现正弦函数,输入一个角度数值,输出对应的正弦数值,已知
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1