C语言课后题编程答案
- 格式:docx
- 大小:33.58 KB
- 文档页数:40
C语言课后题编程答案 所有章节的课后习题的选择题和填空题大家必须熟练掌握,编程题掌握到第九章即可。希望大家通过课后的编程题熟悉典型的编程算法,掌握基本的编程思路,注意编程细节。
第3章 3-17 编写程序,把560分钟换算成用小时和分钟表示,然后进行输出。
#include main() {int h,m; h=560/60; m=560%60; printf(“560分钟可转换成%d小时%d分钟” ,h,m); } 程序总结: (1)只要在程序中用到系统提供的库函数,必须把库函数所在的头文件用#include命令包含进来。否则库函数的使用无效。输入输出库函数的头文件是:stdio.h;数学函数的头文件是:math.h;字符处理函数的头文件是:ctype.h;字符串处理函数的头文件是:string.h。
(2)注意C语言中的“/”和“%”两种运算符。“/”的运算结果取决于两操作数的类型。比如:1/2=0(与数学中不同,结果与操作数的类型一致,所以结果只取商值), 1.0/2=0.5(除之前2要自动类型转换成2.0,因为只有同类型的操作数才能进行除运算), 1/2.0=0.5, 1.0/2.0=0.5。“%”的两个操作数都必须是整数。
(3)printf(“560分钟可转换成%d小时%d分钟”,h,m); printf第一个参数要尽量详细,这样可以提高输出结果的可读性,恰当好处的添加提示性信息,可以提高程序的质量。
(4)int h,m;变量起名要有艺术性,尽量做到见名知意。 3-18 编写程序,输入两个整数,1500和350,求出它们的商和余数并进行输出。 #include main() {int a,b,m,n; printf(“请输入两个整数:\n”); scanf(“%d%d”,&a,&b); m=a/b; n=a%b; printf(“%d除以%d商%d余%d” ,a,b,m,n); } 程序总结: (1) printf(“请输入两个整数:\n”);这是一个提示信息,避免用户在看到黑屏后不知所措。 (2)scanf(“%d%d”,&a,&b); scanf的功能是用户要通过键盘输入数据,赋值给各输入项。注意每个输入项前面必须要加&符号。%d与输入项的个数要一致,类型要匹配。%d与int一致,%f与float对应,%lf与double匹配,%c与char对应。
3-19 编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
#include main() {double a,b,c,x; printf(“请输入三个双精度数:\n”); scanf(“%lf%lf%lf”,&a,&b,&c); x=(a+b+c)/3; x=x*10; x=x+0.5; x=(int)x; x=x/10; printf(“x=%.1lf”,x); } 程序总结: (1) double a,b,c,x; 和scanf(“%lf%lf%lf”,&a,&b,&c);有直接联系,%lf与输入项a,b,c在定义时所用的类型double一致。
(2) %.1lf, .1的意思是结果仅保留小数点后一位小数。 3-20 编写程序,读入三个整数给a、b、c,然后交换他们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a,b,c。
#include main() {int a,b,c,t; printf(“请输入三个整数:\n”); scanf(“%d%d%d”,&a,&b,&c); printf(“交换之前:a=%d,b=%d,c=%d”,a,b,c); t=a; a=c; c=b; b=t; printf(“交换之后:a=%d,b=%d,c=%d”,a,b,c); } 程序总结: 交换两个变量的值和三个变量的值,都需要借助另外一个变量。 第4章 4-21 若a的值小于100,请将以下选择结构改写成由switch语句构成的选择结构。 if(a<30) m=1; else if(a<40) m=2; else if(a<50) m=3; else if(a<60) m=4; else m=5; #include main() { int a; printf(“enter a(a<100):\n”); scanf(“%d”,&a); printf(“a=%d\n”,a); switch(a/10) { case 0: case 1: case 2:printf(“m=1\n”);break; case 3: printf(“m=2\n”);break; case 4: printf(“m=3\n”);break; case 5: printf(“m=4\n”);break; default: printf(“m=5\n”); } } 程序总结: (1) 选择结构的实现除了使用if语句以外,还可以使用switch语句来实现。 (2) switch后的表达式和case后的标号的类型要一致,switch后的表达式直接决定了switch语句体的执行入口。执行完入口的case语句后,依次顺序往下执行,直到遇到break语句就彻底跳出switch语句体,转去执行switch 语句体后的语句。
(3) default语句可有可无,位置无所谓,当switch后的表达式和所有case后的标号都不一致时,转去执行default语句,然后依次顺序执行default语句后其他的switch语句,直到遇到break语句,则彻底跳出switch 语句体。
(4) break语句可出现在循环语句体和switch 语句体内,目的是彻底跳出循环体和switch 语句体。
(5) case和其后的标号之间必须要加空格。 4-22编写程序,输入一位学生的生日(年:y0、月m0、日d0),并输入当前的日期(年:y1、月m1、日d1),输出该生的实际年龄。
#include main() {int y0,m0,d0,y1,m1,d1,age; printf(“输入一位学生的生日:\n”); scanf(“%d%d%d”,&y0,&m0,&d0); printf(“输入当前日期:\n”); scanf(“%d%d%d”,&y1,&m1,&d1); age=y1-y0; if(m1age--; printf(“age=%d\n”,age); } 程序总结: (1) if(m1if语句嵌套。
(2) 在printf语句中,要尽量加上\n,这样可以避免黑屏上的结束语press any key to continue 出现在有价值的输出结果的后面,而是换行输出。这样就提高了程序输出结果的可读性。
(3) 通过本设计,要加强对变量起名艺术性的认识。 4-23编写程序,输入一个整数,打印出它是奇数还是偶数。 #include main() {int x,y; printf(“请输入一个整数:\n”) scanf(“%d”,&x); y=x%2; if(y==0) printf(“%d是一个偶数!\n”,x); else printf(“%d是一个奇数!\n”,x); } 程序总结: y=x%2;这是判断一个数是奇数还是偶数的一贯表示方式。计算机中的等号是双等号,与数学中的等号不一样。
4-24编写程序,输入a,b,c三个数,打印出最大者。 方法一: #include main() {int a,b,c,max; printf(“请输入三个数:\n”); scanf(“%d%d%d”,&a,&b,&c); if(a>b) {if(a>c) max=a; else max=c; } else {if(b>c) max=b; else max=c; } printf(“max=%d”,max); } 程序总结: 利用if-else的嵌套,可求出一组数的最大值和最小值。在if-else的嵌套中,要格外注意if和else的配对问题。配对的原则是:从最后一个else开始,寻找与其配对的if,找的原则是离else最近的还没有配对的if就是该else的配对对象。if和else的配对一旦出问题,输出结果全错。
方法二: #include main() {int a,b,c,t; printf(“请输入三个数:\n”); scanf(“%d%d%d”,&a,&b,&c); if(a>b) {t=a; a=b; b=t; } if(a>c) {t=a; a=c; c=t; } if(b>c)