C语言课后题编程答案Word文档格式.docx
《C语言课后题编程答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课后题编程答案Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
“/”的运算结果取决于两操作数的类型。
比如:
1/2=0(与数学中不同,结果与操作数的类型一致,所以结果只取商值),2=(除之前2要自动类型转换成,因为只有同类型的操作数才能进行除运算),1/=,=。
“%”的两个操作数都必须是整数。
(3)printf(“560分钟可转换成%d小时%d分钟”,h,m);
printf第一个参数要尽量详细,这样可以提高输出结果的可读性,恰当好处的添加提示性信息,可以提高程序的质量。
(4)inth,m;
变量起名要有艺术性,尽量做到见名知意。
3-18编写程序,输入两个整数,1500和350,求出它们的商和余数并进行输出。
{inta,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(“请输入两个整数:
这是一个提示信息,避免用户在看到黑屏后不知所措。
(2)scanf(“%d%d”,&
scanf的功能是用户要通过键盘输入数据,赋值给各输入项。
注意每个输入项前面必须要加&
符号。
%d与输入项的个数要一致,类型要匹配。
%d与int一致,%f与float对应,%lf与double匹配,%c与char对应。
3-19编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
{doublea,b,c,x;
printf(“请输入三个双精度数:
scanf(“%lf%lf%lf”,&
b,&
c);
x=(a+b+c)/3;
x=x*10;
x=x+;
x=(int)x;
x=x/10;
printf(“x=%.1lf”,x);
(1)doublea,b,c,x;
和scanf(“%lf%lf%lf”,&
有直接联系,%lf与输入项a,b,c在定义时所用的类型double一致。
(2)%.1lf,.1的意思是结果仅保留小数点后一位小数。
3-20编写程序,读入三个整数给a、b、c,然后交换他们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a,b,c。
{inta,b,c,t;
printf(“请输入三个整数:
scanf(“%d%d%d”,&
printf(“交换之前:
a=%d,b=%d,c=%d”,a,b,c);
t=a;
a=c;
c=b;
b=t;
printf(“交换之后:
交换两个变量的值和三个变量的值,都需要借助另外一个变量。
第4章
4-21若a的值小于100,请将以下选择结构改写成由switch语句构成的选择结构。
if(a<
30)m=1;
elseif(a<
40)m=2;
50)m=3;
60)m=4;
elsem=5;
{inta;
printf(“entera(a<
100):
scanf(“%d”,&
a);
printf(“a=%d\n”,a);
switch(a/10)
{case0:
case1:
case2:
printf(“m=1\n”);
break;
case3:
printf(“m=2\n”);
case4:
printf(“m=3\n”);
case5:
printf(“m=4\n”);
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),输出该生的实际年龄。
{inty0,m0,d0,y1,m1,d1,age;
printf(“输入一位学生的生日:
y0,&
m0,&
d0);
printf(“输入当前日期:
y1,&
m1,&
d1);
age=y1-y0;
if(m1<
m0||m0==m1&
&
d1<
d0)
age--;
printf(“age=%d\n”,age);
程序总结:
(1)if(m1<
d0<
d1),在程序设计中,要学会用逻辑与、或、非代替复杂的if语句嵌套。
(2)在printf语句中,要尽量加上\n,这样可以避免黑屏上的结束语pressanykeytocontinue出现在有价值的输出结果的后面,而是换行输出。
这样就提高了程序输出结果的可读性。
(3)通过本设计,要加强对变量起名艺术性的认识。
4-23编写程序,输入一个整数,打印出它是奇数还是偶数。
{intx,y;
printf(“请输入一个整数:
\n”)
scanf(“%d”,&
x);
y=x%2;
if(y==0)
printf(“%d是一个偶数!
\n”,x);
else
printf(“%d是一个奇数!
这是判断一个数是奇数还是偶数的一贯表示方式。
计算机中的等号是双等号,与数学中的等号不一样。
4-24编写程序,输入a,b,c三个数,打印出最大者。
方法一:
{inta,b,c,max;
printf(“请输入三个数:
if(a>
b)
{if(a>
c)
max=a;
max=c;
{if(b>
max=b;
else
printf(“max=%d”,max);
利用if-else的嵌套,可求出一组数的最大值和最小值。
在if-else的嵌套中,要格外注意if和else的配对问题。
配对的原则是:
从最后一个else开始,寻找与其配对的if,找的原则是离else最近的还没有配对的if就是该else的配对对象。
if和else的配对一旦出问题,输出结果全错。
方法二:
{t=a;
a=b;
b=t;
c=t;
if(b>
{t=b;
b=c;
printf(“最大值为:
%d”,c);
(1)方法一利用if-else的嵌套来进行程序设计,极易容易出错。
而方法二采用三个if语句的并列来实现,同样可以求出最大值。
(2)方法二算法分析:
第一个if语句结束后,b中保存a和b中的较大值;
第二个if语句结束后,c中保存a和c中的较大值;
第三个if语句结束后,c中保存b和c中的较大值;
三次比较后,c中的值就是三个数中最大的。
(3)现实生活中,交换两盆水必须要借助第三个盆子;
在程序设计中,要想实现两个变量中值的交换,就必须借助第三个变量。
4-25对于以下函数:
Y=x(-5<
x<
0),y=x-1(x=0),y=x+1(0<
10),编写程序,要求输入x的值,输出y的值。
分别用:
(1)不嵌套的if语句
(2)嵌套的if语句(3)if-else语句(4)switch语句
(1)#include<
printf(“请输入x的值:
if(x==0)
y=x-1;
if(x>
-5&
0)
y=x;
0&
10)
y=x+1;
printf(“y=%d\n”,y);
(2)#include<
-5)
if(x<
y=x;
y=x+1;
y=x-1;
Printf(“y=%d\n”,y);
(3)#include<
y=x;
elseif(x==0)
(4)#include<
{intx,y,i;
0)i=1;
if(x==0)i=2;
10)i=3;
switch(i)
{case1:
printf(“x=%d,y=%d\n”,x,y);
case2:
printf(“x=%d,y=%d\n”,x,y);
对于这个程序设计我建议大家采用第一种方法,因为第一种方法是大众化的思路,鉴于上机