《C课后习题参考答案》由会员分享,可在线阅读,更多相关《C课后习题参考答案(35页珍藏版)》请在金锄头文库上搜索。
1、习 题 参 考 答 案习 题 1一、选择题1、B 2、C 3、B 4、D 5、A 6、B 7、C二、填空题1、源程序文件 c 2、obj 3、可执行文件 exe 4、机器语言 汇编语言 高级语言三、解答题略四、编程题1、 main() printf(“Hello! Welcome to China!”);2、 main() int x; scanf(“%d”,&x); if(x=20&x=A&ch1=Z ch1=ch1-32;三、编程题1、从键盘输入三个数,然后按照由小到大的顺序输出。要求,设三个数放在变量a、b、c中,最后仍然按照a、b、c的顺序输出。#include main()int a
2、,b,c,t; scanf(“%d,%d,%d”,&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(“%d,%d,%dn”,a,b,c);2、编写程序根据以下的函数关系,对输入的x值输出相应的y值。xy2x=10x(x+2)-1x=22xX=-1x-1#include main()float x,y; scanf(“%f”,&x); if(x=-1) y=x-1; else if(x=2) y=2*x; else if(x=10) y=x*(x+2);else printf(“
3、Error!n”); printf(“y=%fn”,y);3、求一元二次方程ax2+bx+c=0的解。#include main()float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf(“%f,%f,%f”,&a,&b,&c); if(fabs(a)=1e-6) Printf(is not a quadratic); else disc=b*b-4*a*c; if(fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(“has distinct real r
4、oots:%8.4f and %8.4fn”,x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(“has complex roots:n”); printf(“%8.4f+%8.4fin”, realpart,imagpart); printf(“%8.4f-%8.4fin”, realpart,imagpart); 4、假设工资税率如下,其中s代表工资,r代表税率:s500 r=0%500=s1000 r=5%1000=s2000 r=8%2000=s3000 r=10%3000=3000) r=0.15;
5、g=salary/500; switch(g)case 1: r=0.05; case 2: case 3: r=0.08; case 4: case 5: r=0.10; salary=salary*(1-r); printf(“%dn”,salary);习 题 5一、选择题1、A 2、C 3、C 4、D 5、A 6、A7、A 8、B 9、C 10、B 11、B 12、D二、填空题1、continue2、1n=999或n=0或x=0.0 2xmin或x=min4、1 i10 2 j%3!=05、1t=1 2n=i6、1n 2flag=1 3n7、1ji 21/term8、1sumk 2j-2
6、三、编程题1、#include main()int m,n,p,r,temp; printf(“Please input m,n:”); do scanf(“%d%d”,&m,&n); while(m=0|n=0); if(nm) temp=n; n=m; m=temp; /*确保大数放到n中*/ p=n*m; /*保留n和m的乘积到p中,以便求最小公倍数*/ while(m!=0) /*求n和m的最大公约数*/ r=n%m; n=m; m=r; printf(“最大公约数为:%dn”,n); printf(“最小公倍数为:%dn”,p/n);2、#include main()char c;
7、int letter=0,space=0,digit=0,other=0; printf(“Please input a line character:”); while(c=getchar()!=n) if(c=a&c=A&c=0&c=9) digit+; else other+; printf(“Letter is %d,Space is %d,Digit is %d,Other is %d,”,letter,space,digit,other);3、main()int m,s,i; for(m=2;m1000;m+) s=0; for(i=1; im; i+) if(m%i)=0) s=
8、s+i; if(s=m) printf(“%d its factors are ”,m); for(i=1; im; i+) if(m%i=0) printf(“%d,”,i); printf(“n”); 4、main()int i,a,min,max; scanf(“%d”,&a); min=a;max=a; for(i=2;i=100;i+) scanf(“%d”,&a); if(amax) max=a; printf(“Max=%d,Min=%dn”,max,min);5、#include #define N 20main()int i,t; float a=2,b=1,s=0; for
9、(i=1;i=N;i+) s=s+a/b; t=a; a=a+b; /*将前一项的分子与分母之和作为下一项的分子*/ b=t; /*将前一项的分子作为下一项的分母*/ printf(“Sum=%fn”,s);6、问题分析:设王先生的岁数是x,他夫人的岁数是y,可得到如下方程组:这是一个非线性方程组的求解,无法手算求解,可以用穷举法求解。考虑到实际可能,x、y可以在20100范围内取值,逐一穷兴出x、y所有可能的取值判断是否满足上述方程组,若满足,这一组解就是要求的解。程序如下:main()int x,y; for(x=20;x=100;x+) for(y=20;y=100;y+) if(x*x+y=1053&x+y*y=873) printf(“x=%d y=%dn”,x,y);7、 main() long int k,g,s=0; printf(Please input an integer:); scanf(%ld,&k); do g=k%10; printf(%2d,g); k=k/10; while(k!=0); 8、(1)main()