为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言习题解答(教材)

2011-07-23 49页 pdf 209KB 27阅读

用户头像

is_997112

暂无简介

举报
C语言习题解答(教材) 1 《计算机程序设计基础》 习题解答 第 1 章 C 语言程序设计基础知识 习题答案 一、 1.A 2. B 3. A 4. A 5. C 6. D 7. A 8. A 9. C 10. A 二、 1. 编译 2. 补码 3. ASCII 4. 8 5. 255 6. –1 7. z 8. 16 9. –128 到 127 10. 32 三、略 附加题答案 一、 1. D 2. C 3. A 4. B 5. A 6. D 7.A 8. A 9. ...
C语言习题解答(教材)
1 《计算机程序设计基础》 习解答 第 1 章 C 语言程序设计基础知识 习题 一、 1.A 2. B 3. A 4. A 5. C 6. D 7. A 8. A 9. C 10. A 二、 1. 编译 2. 补码 3. ASCII 4. 8 5. 255 6. –1 7. z 8. 16 9. –128 到 127 10. 32 三、略 附加题答案 一、 1. D 2. C 3. A 4. B 5. A 6. D 7.A 8. A 9. D 10. 二、 1. COMMAND.COM 2. 树型或层次型 3. CD .. 4. REN MY.TXT MY.C 5. DIR A:\TC\*.C/P 6. DOS\FORMAT A:/S 或\DOS\FORMAT A:/S 或 C:\DOS\FORMAT A:/S 7. 2 8. 10100.111 9. 路径 10. 64 三、略 第 2 章 基本数据类型及其运算 习题答案 一、单选题 1.D 2.B 3.C 4.C 5.D 6.D 7.B 8.-12 9.B 10.B 二、填空题 1.字母或下划线 2.单引号 或 ' ' 3.\ 4. ASCII 5.初始化 6. 5 7. sqrt((sin(30*3.14/180)+1)*(sin(30*3.14/180)+1)/cos(30*3.14/180)); 8. fabs(1-pow(x,3.6)); 9. (exp(1.2)+exp(-1.2))/2.0; 10. cos(30*3.14/180)/sin(30*3.14/180)+log(7)/log(2); 三、简答题 1. 01、195、0xff21、'\ff'、-0.e5、"123" 2. year、123、ABC、e、pi、int_ 3. 字符是用单引号括起来的一个字符,其长度为 1,而字符串是用双引号括起来的多个字符 且在其尾部有一个空字符‘\0’,其长度为字符个数加 1。 4. 因为在 C 语言中,定义变量即通知系统按变量的类型分配一个单元,并建立意义对应的 关系,以后程序中引用该变量名即引用该变量对应单元的内容。如果一个变量没有定义而被 2 引用,由于系统没有为该变量分配内存单元,故对其引用是无意义的。所以要“先定义,后 使用”。 5. 相同类型数据间的运算,其结果的类型不变。不同类型数据间的运算,其结果类型变化 如图 2-11 所示。 附加题解答 一、单选题 1. A 2. B 3. C 4. D 5.C 6. A 7.A 8.C 9. D 10.B 二、填空题 1. 1 2.不同 3. #define 4. 2 5. double 6. 0 7.无符号 8. 0 9. 高 10. 2 三、简答题 略 第 3 章 顺序结构程序设计 习题答案 一、单选题 1.D 2.A 3.C 4.D 二、填空题 1. 输入输出函数 2. ; 3.printf() , scanf() 4.将 x 原来的值加上 3 以后重新赋给变量 x 三.、阅读题 1. a=98 x=45.78 c=9 2. m=12,n=9 9.34 17.2b,G 或 m=12,n=9 9.34 17.2b,G 3. int m=10,10 , 12 unsigned u=42315, -23221,a54b long k=600000, 10176 float x=34.500000,3.45000e+01,34.5 double y= 76.100,8e+01 char a=′0′,b=a ,c=65 string,abcd , 123 4. a=4 b=9 a=9 b=4 四、编程题 3 1. #include #define PI 3.14159 main() { float a,b,c,alfa,p,area; printf(″\n 请输入三角形的两条边的边长及夹角: ″); scanf(″%f%f%f″,&a,&b,&alfa); c=sqrt(a*a+b*b-2*a*b*cos(alfa*PI/180)); p=(a+b+c)/2; area=sqrt(p*(p-a)*(p-b)*(p-c)); printf(″\n 该三角形的第三条边边长为:%6.1f″,c); printf(″\n 该三角形的面积为:%6.2f″,area); } 2. #include main() { float x,y; printf(″\n 请输入 x 的值:″); scanf(″%f″,&x); y=((((3.0/4*x+12)*x-7.5)*x-8.0/3)*x+2)*x-4; printf(″\n 多项式的值为:%f″,y); } 或者 /*3.4.2. 2 y=3/4*x**5+12*x**4-7.5*x**3-8/3*x**2+2*x-4 */ #include main() { float x,y; printf(″\n 请输入 x 的值:″); scanf(″%f″,&x); y=3.0/4*pow(x,5)+12*pow(x,4)-7.5*pow(x,3)-8.0/3*x*x+2*x-4; printf(″\n 多项式的值为:%f″,y); } 3. main() { int m,a,b,c,n; printf(″\n 请输入一个三位正整数:″); scanf(″%d″,&m); a=m/100; b=m%100/10; c=m%10; n=c*100+b*10+a; printf(″\n 逆序的整数为:%d″,n); } 或者 /* 3431 123---->321 */ main() 4 { int a,b,c; printf(″\n 请输入一个三位正整数:″); scanf(″%c%c%c″,&a,&b,&c); printf(″\n 逆序的整数为:%c%c%c″,c,b,a); } 4. main() { int m,num1,num2,num5; float x; printf(″\n 请输入钱的数目:″); scanf(″%f″,&x); m=(int)(x*100); num5=m/5; m=m%5; num2=m/2; m=m%2; num1=m; printf(″\n 最少的硬币数为:″); printf(″\n 需要 1 分硬币%d 个,2 分硬币%d 个,5 分硬币%d 个″,num1,num2,num5); } 附加题答案 一、单选题 1.A 2.B 3.A 4.B 5.C 6.B 7.A 8.B 9.D 10.B 11.D 二、填空题 1. 9,5 2. 4.4 3. 6 6 6.000000 6.000000 4. a=98,b=765.000000,c=4321.000000 5. 5.0,4,c=3 6.|98 |,|00098|,|98 | 三、阅读题 1. (1)i=178,178,92930226 (2)i=| +178|178|178 |00000178| (3)j=-34,65502,92995550 (4)j=| -34|-34|-0000034| 2. (1)k=178, 178, 91488434 (2)k=| +178|262 | b2| (3)n=-34, 65502, 91553758 3. (1)a=178, (0)262, (0x)b2 (2)a=| 178|(0)262 |(0x)000000b2| 4. (1)x=12.374000, 1.23740e+01, 12.374 5 (2)x=| 12.374000| 12.37|12| (3)y=0.000001, 6.72000e-07, 6.72e-07 (4)y=| 6.72000e-07| 6.7e-07|7e-07| 5. (1)ch1=E, (ASCII)69:(0)105:(0x)45 (2)e, (ASCII)101 (3)ch2=8, (ASCII)56 (4)8, 9 6. (1)12345| 12345|12345 | (2)| 12|123| 四、编程题 1. main() { float r,h,v; printf(″\n 请输入圆锥体的底部圆的半径和锥体的高度:″); scanf(″%f%f″,&r,&h); v=1.0/3*3.14*r*r*h; printf(″\n 圆锥体的体积为:%f″,v); } 2. main() { int m,a,b,c,d; printf(″\n 请输入一个四位正整数:″) scanf(″%d″,&m); a=m/1000; m=m%1000; b=m/100; m=m%100; c=m/10; m=m%10; d=m printf(″\n%8d%8d%8d%8d″,a,b,c,d); printf(″\n%8d%8d%8d%8d″,a+′0′,b+′0′,c+′0′,d+′0′); } 3. #include main() { int n; float a,r,t; printf(″\n 请输入本钱(元)和年利率:″); scanf(″%f%f″,&a,&r); printf(″\请输入存储年数:″); 6 scanf(″%d″,&n); t=a*pow((100+r)/100,n); printf(″\nt=%.2f″,t); } 4. main() { char ch; printf(″\n 请输入一个小写英文字母:″); scanf(″%c″,&ch); printf(″\n%5c%5d″,ch,ch); ch-=′a′-′A′; printf(″\n%5c%5d″,ch,ch); } 5. #include main() { char ch1,ch2,ch3,ch4; int m=′a′-′A′; printf(″\n 请输入英文单词(GOOD) ″); ch1=getchar(); ch2=getchar(); ch3=getchar(); ch4=getchar(); putchar(′\n′); putchar(ch1+m); putchar(ch2+m); putchar(ch3+m); putchar(ch4+m); } 6. main() { int m; float x,y; printf(″\n 请输入一个实数:″); scanf(″%f″,&x); m=x; y=x-m; printf(″\n%d,%f″,m,y); } 第 4 章 选择结构程序设计 习题答案 一、单选题 1.B 2.A 3.B 4.B 7 二、填空题 1.1 0 2.!、%、>、&&、||、?:、= 3.1 4.(x==100 && y>80 || y==100 && x>80) && z>80 三、阅读题 1.a=1,b=0,c=0 2.a=8,b=8,c=10 3.y=0.500000 4.2 3 四、编程题 1. #include main() {float x,y; scanf("%f",&x); if(x>0) y=x+exp(x); if(x= =0) y=0; if(x<0) y=log10(abs(x))+pow(x,4); printf("y=%f\n",y); } 2. #include "stdio.h" main() { char c; c=getchar(); if (c= ='k' || c= ='K') printf("KOREA WORLD CUP"); else if (c= ='j' || c= ='J') printf("JAPAN WORLD CUP"); else if (c= ='c' || c= ='C') printf("BEIJIN OLYMPIC GAMES"); else printf("%c\n",c); } 3.一:main() {int a,b,c,max,min; scanf("%d%d",&a,&b); min=(a=b) ? a:b; scanf("%d",&c); if(cmax) printf("%d,%d,%d\n",min,max,c); if(c>min && cb) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf("%d,%d,%d\n",a,b,c); } 4.main() {int e=0; float score; char grade; printf("input score:"); scanf("%f",&score); if (score>100||score<0) {printf("\ndata error");e=1;} switch (score/10) {case 10: case 9:grade='A';break; case 8:grade='B';break; case 7:grade='C';break; case 6:grade='D';break; case 5: case 4: case 3: case 2: case 1: case 0:grade='E';} if (e= =0) printf("score is%6.2f, grade is %c\n",score,grade); } 若将 switchz 中的条件稍作改动,程序可写为: main() {int e=0; float score; char grade; printf("input score:"); scanf("%f",&score); if (score>100||score<0) {printf("\ndata error");e=1;} switch (score/10-5) {case 5:grade='A';break; case 4:grade='A';break; 9 case 3:grade='B';break; case 2:grade='C';break; case 1:grade='D';break; default:grade='E'; } if (e= =0) printf("score is%6.2f, grade is %c\n",score,grade); } 附加题答案 一、单选题 1.B 2.A 3.C 4.B 5.C 6.D 一、填空题 1.1 0 2. 1 3.非 0 4. 0 5.p%q!=0 6. a%2!=0 三、阅读题 1. a=1,b=0,c=1 2. a=2,b=6 3 a=0,b=1 4. y=10 5. a=4,b=6 6. sum=91 二、编程题 1.#include main() {char x; x=getchar(); if('a'<=x && x<='z') putchar(x); else if('A'<=x && x<='Z') putchar(x+32); else printf("cuo le"); } 2.分析:对 a≠0 应考虑下面的情况: (1)b2-4ac>0 时,方程有两个不等的实根 (2)b2-4ac=0 时,方程有两个相等的实根 (3)b2-4ac<0 时,方程有两个复数根 方法一:用嵌套的 if 语句 #include main() {float a,b,c,disc,x1,x2,real,imag; scanf("%f%f%f",&a,&b,&c); disc=b*b-4*a*c; if(disc>=0) if(disc>0) {x1=(-b+sqrt(disc))/(2*a); 10 x2=(-b-sqrt(disc))/(2*a); printf("x1=%0.2f\tx2=%0.2f\n",x1,x2); } else {x1=x2=(-b)/(2*a); printf("x1=x2=%0.2f\n",x1); } else {real=(-b)/(2*a); imag=sqrt(fabs(disc))/(2*a); printf("x1=%.2f+%.2fi\tx2=%.2f-%.2fi\n",real,imag,real,imag); } } 方法二:用 if-else if 语句 #include main() {float a,b,c,disc,x1,x2,real,imag; scanf("%f%f%f",&a,&b,&c); disc=b*b-4*a*c; if(disc>0) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("x1=%0.2f\tx2=%0.2f\n",x1,x2); } else if(disc==0) {x1=x2=(-b)/(2*a); printf("x1=x2=%0.2f\n",x1); } else if(disc<0) {real=(-b)/(2*a); imag=sqrt(fabs(disc))/(2*a); printf("x1=%.2f+%.2fi\tx2=%.2f-%.2fi\n",real,imag,real,imag); } } 3.#include main() {float x,y,z; scanf("%f",&x); z=1*(x>0)+2*(x==0)+3*(x<0); switch(z) {case 1: y=x+exp(x);break; case 2: y=0;break; case 3: y=log10(abs(x))+pow(x,4); } 11 printf("y=%f\n",y); } 4.main() {int year,month,days,leap; scanf("%d%d",&year,&month); switch(month) {case 1: case 3: case 5: case 7: case 8: case 10: case 12:days=31;break; case 4: case 6: case 9: case 11:days=30;break; case 2: if(year%4==0 && year%100!=0 || year%400==0) days=29; else days=28; } printf("%d %d days:%d\n",year,month,days); } 5.main() {int n,i=1; long s=1; scanf("%d",&n); loop: if(i<=n) {s*=i; ++i; goto loop; } printf("n!=%ld\n",s); } 6.main() {int a=0,b=0,c=0,d=0,e=0; float score; loop1: printf("input score:"); scanf("%f",&score); if(score= =-999) goto loop2; if (score>100||score<0) {printf("\ndata error");goto loop1;} switch (score/10-5) 12 {case 5:a=a+1;goto loop1; case 4:a=a+1;goto loop1; case 3:b=b+1;goto loop1; case 2:c=c+1;goto loop1; case 1:d=d+1;goto loop1; default:e=e+1;goto loop1; } loop2: printf("A=%d,B=%d,C=%d,D=%d,E=%d\n",a,b,c,d,e); } 第 5 章 循环结构程序设计 习题答案 一、单选题 1.A 2.D 3.B 4.C 二、填空题 1.e2 等于 0 2.switch、循环 或 循环、switch 3.0 4.0 30 执行结果为:k=61 三、阅读题 1.&# # #@ 2.61 3.2,1,2,1,3,1,1,0 4.668977 四、编程题 1. main() {long s=0,t=1; int i; for(i=1;i<5;i++) {t*=i+1; s+=i*t; } printf("s=%ld\n",s); } 2. main() {long s=0,a,b=0; int n,i; scanf("%ld%d",&a,&n); for(i=0;i main() {char c; int i,dx=0,xx=0,sz=0,qt=0; for(i=0;i<20;i++) {c=getchar(); if('A'<=c && c<='Z') dx+=1; else if('a'<=c && c<='z') xx+=1; else if('0'<=c && c<='9') sz+=1; else qt+=1; } printf("dx=%d,xx=%d,sz=%d,qt=%d\n",dx,xx,sz,qt); } 4.main() {int a,b,c,d,x,y,z; for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=1;c<=9;c++) for(d=0;d<=9;d++) {x=1000*a+100*b+10*c+d; y=100*c+10*d+c; z=100*a+10*b+c; if(x-y= =z) goto loop; } loop: printf("A=%d,B=%d,C=%d,D=%d\n",a,b,c,d); printf("%d-%d=%d\n",x,y,z); } 附加题答案 一、单选题 1.C 2.D 3.B 4.A 5.D 6.B 二、填空题 1.if goto 2.goto 3.5 4.5 5.9 1 6.0 20 三、阅读题 1.$ $$ $$$ $$$$ 14 $$$$$ 2.s=28 3.0 1 1 2 15 3 4.y=876 5.10 11 6. 1 2 3 4 5 6 7 8 9 - - - - - - - - - 1 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 9 12 15 18 21 24 27 4 16 20 24 28 32 36 5 25 30 35 40 45 6 36 42 48 54 7 49 56 63 8 64 72 9 81 四、编程题 1. main() {int a,b,r,m; scanf("%d%d",&a,&b); m=a*b; r=a%b; while (r!=0) {a=b;b=r;r=a%b;} printf("%d,%d\n",b,m/b); } 2. #include main() {int i,j,a,m; for (j=100;j<=300;j++) {m=sqrt(j); for(i=2;i<=m;i++) {if (j%i==0) break; continue; } if(i>m) printf("%5d",j); } } 3.main() {int i,j,k,n; for (n=100;n<1000;n++) {i=n/100; j=(n-100*i)/10; /* 或 j=n/10-i/10; */ 15 k=n-100*i-10*j; /* 或 k=n%10; */ if (n==i*i*i+j*j*j+k*k*k) printf("%d\n",n); } } 执行结果为: 153 370 371 407 4. main() {char ch; for(ch='Z';ch>='A';ch--) printf("%c%c",ch,ch+32); } 5.main() {int n=1000,i; float a=0.0,b=2.0,h,x,f0,f1,s=0.0,s1; x=a; h=(b-a)/n; f0=x*x+x+1.0; for(i=1;i<=n;i++) {s1=f0*h; s+=s1; x+=h; f0=x*x+x+1.0; } printf("n=%d,a=%5.2f,b=%5.2f,s=%8.2f\n",n,a,b,s); } 6.#include main() {float x,x0,f,f1; x=1.5; do {x0=x; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x=x0-f/f1; } while(fabs(x0-x)>=1e-5); printf("%5.2f\n",x); } 第 6 章 数 组 16 习题答案 一、单选题 1.B 2.C 3.B 4.B 二、填空题 1.0 2.地址 起始 3.char str[16]= “I am a teacher”; 4.答案:a[1][2] 三、阅读题 1.sum=1234 2.–1 –4 –6 –4 –1 3. 2 2 0 0 0 2 2 0 1 4.将按所输入的字符按从大到小的次序排列出来。 四、编程题 1. main() {float a[10],max,t; int i,j,k; for(i=0;i<10;i++) scanf("%f",&a[i]); for(i=0;i<9;i++) {max=a[i]; k=i; for(j=i+1;j<10;j++) if(max=a[j][3]) continue; {t=a[i][0];a[i][0]=a[j][0];a[j][0]=t; t=a[i][1];a[i][1]=a[j][1];a[j][1]=t; t=a[i][2];a[i][2]=a[j][2];a[j][2]=t; t=a[i][3];a[i][3]=a[j][3];a[j][3]=t; } } for (i=0;i<30;i++) {for (j=0;j<4;j++) printf("%5d",a[i][j]); printf("\n"); } } 4. #include "string.h" main() {char a[80],b[80]; int i=0,j,k=0; gets(a); while(a[i]!='x') i++; for (j=i+1;a[j]!='x';j++) {b[k]=a[j]; k++;} b[k]='\0'; puts(b); printf("%d\n",strlen(b);); } 附加题答案 一、单选题 1.2.3.4.5.6. 二、填空题 1.不确定的 2.连续的 3.行 4.取整 5.答案:将回车符转换成'\0' 6.换行符 三、阅读题 18 1.5 4 3 2 1 2.0 –1 1 1 2 3 3.s1=12 s2=12 4.1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 5.COMPUTER 6.pen paper 四、编程题 1.main() {int a[8],i,k=0,x,y; scanf("%d",&x); while(x!=0) {y=x/2; a[k]=x-2*y; k+=1;x=y; } for (i=k-1;i>=0;i--) printf("%d",a[i]); } 2.main() {int a[10]={0},i,j,x; for (i=0;i<10;i++) {scanf("%d",&x); j=x-(x/10)*10; a[j]=a[j]+1; } for (i=0;i<10;i++) printf("%3d",a[i]); } 3. # define M 20 # define L 30 # define N 20 main() { int a[M][L],b[L][N],c[M][N],i,j,k; int m,l,n; scanf("%d%d%d",&m,&l,&n); for(i=0;i
/
本文档为【C语言习题解答(教材)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索