c语言第五六章课后题Word文件下载.docx
《c语言第五六章课后题Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言第五六章课后题Word文件下载.docx(27页珍藏版)》请在冰点文库上搜索。
else
%d是奇数\n"
else/*提示输入为负数*/
输入错误,%d为负数\n"
5-3、
math.h>
floata,b,c,l,s;
inputthreesides:
%f,%f,%f"
a,&
b,&
c);
if(a+b>
c&
&
a+c>
b&
b+c>
a)/*构成三角形的条件*/
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
printf("
三角形的面积是%.3f\n"
s);
else
不能构成三角形\n"
5-4、
floatm,s;
/*定义本金,利息和*/
intn;
/*定义期限*/
输入本金、期限:
%f,%d"
m,&
n);
switch(n)
case1:
/*存储年限为1年*/
s=m*pow(1+0.0225,n);
printf("
本金和=%.3f\n"
break;
case2:
/*存储年限为2年*/
s=m*pow(1+0.0243,n);
case3:
/*存储年限为3年*/
s=m*pow(1+0.0270,n);
case5:
/*存储年限为5年*/
s=m*pow(1+0.0288,n);
case8:
/*存储年限为8年*/
s=m*pow(1+0.03,n);
default:
/*提示输入错误*/
输入的期限有误"
5-5、
intyear,flag;
Entertheyear:
year);
if(year%100==0&
year%400==0||year%4==0)
flag=1;
flag=0;
if(flag==1)
%disaleapyear!
\n"
year);
%disnotaleapyear!
5-6、
(year%100==0&
year%400==0||year%4==0)?
(flag=1):
(flag=0);
5-7、
charch;
/*定义输入的字符*/
intm;
/*定义该字符的ASCII值*/
inputastringandpressEnter:
ch=getchar();
/*获取该字符*/
if(ch>
='
A'
&
ch<
Z'
)/*若为大写字符,则转化为小写*/
m=ch+32;
%c的小写字母:
%c\n"
ch,m);
elseif(ch>
a'
z'
)/*若为小写字符,则转化为大写并算出ASCII值*/
m=ch-32;
%c的大写字母为:
%c,其ASCII值为:
%d\n"
ch,m,m);
else/*若输入的不是字母,则只输出ASCII值*/
%c的ASCII值为:
ch,ch);
5-8、
/*获取该字符*/
)/*判断为大写*/
%c为大写字母\n"
ch);
)/*判断为小写*/
%c为小写字母\n"
elseif(ch=='
'
)/*判断为空格*/
%c为空格\n"
0'
9'
)/*判断为数字*/
%c是数字字符\n"
else/*判断为其他字符*/
%c是其他字符\n"
5-9
intscore;
inputthescore:
score);
if(score>
100||score<
0)/*判断师傅输入大于100的数或负数*/
成绩输入错误\n"
if(score>
=90)
score:
%d-------grade:
score,'
elseif(score>
=80)
B'
=70)
C'
=60)
D'
E'
5-10、
intyear,month,flag=1;
/*定义年份、月份、标识变量flag*/
输入年份:
if(year%400==0||year%100!
=0&
year%4==0)/*若为润年,flag=0,平年,flag=1*/
{flag=0;
输入月份:
month);
switch(month)
/*1,3,5,7,8,10,12月为31天*/
case7:
case10:
case12:
%d年的%d月有31天\n"
year,month);
/*2月需要判断润年和平年的情况*/
if(0==flag)
{printf("
%d年的%d月有29天\n"
else
%d年的%d月有28天\n"
case4:
/*4,6,9,11月为30天*/
case6:
case9:
case11:
/*若输入非1~12的月份,提示输入错误*/
月份输入错误\n"
第六章作业
6-1
(1)
分析:
这是一个二重嵌套循环,
I=1,j=1,打出1个空格和6个*
I=2,j=1和2,做2次循环打出2个空格和6个*
I=3,j=1,2,3,做3次循环打出3个空格和6个*
I=4,j=1,2,3,4,做4次循环打出4个空格和6个*
结果
6-1
(2)
开始:
k=4,n=0
第一次循环n<
4,n%2==0,n=n+1=1;
第二次循环n<
k,1%2==1,k=k-1=3,n=n+1=2;
第三次循环n<
k,2%2==0,n=n+1=3;
第四次循环n<
k不成立
结束:
输出n=3,k=3
6-1(3)
开始:
k=4,n=0;
第一次循环:
0<
4,0%2==0,break,
输出k=4,n=0;
6-2
(1)计算1+3+5+7+.......+99+101的值
inti,sum=0;
for(i=1;
i<
=101;
i=i+2)
sum=sum+i;
sum=%d\n"
sum);
(2)计算1*2*3+3*4*5+……+99*100*101
longi;
longterm,sum=0;
=99;
term=i*(i+1)*(i+2);
sum=sum+term;
sum=%ld\n"
(3)计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入
longterm=0,sum=0;
inta,i,n;
inputa,n:
%d,%d"
for(i=1;
=n;
i++)
term=10*term+a;
/*将相邻的数乘以10,再加上之前的数*/
(4)计算1-1/2+1/3-1/4+…+1/99-1/100+…,直到最后一项的绝对值小于1e-4为止
intn=1;
floatterm=1.0,sign=1,sum=0;
while(sign>
=1e-4)
term=pow(-1,n-1)*sign;
/*计算每项因子*/
sign=(float)1/(n+1);
/*强制类型转换*/
n++;
sum=%f\n"
(5)利用sinx=x-x^3/3!
+x^5/5!
-x^7/7!
+….,计算最后一项的绝对值小于10(-5)时为止,输出e的值并统计累加的项数
intn=1,count=1;
floatx;
doublesum,term;
inputx:
sum=x;
term=x;
do{
term=(-1)*x*x*term/((n+1)*(n+2));
n=n+2;
count=count+1;
}while(fabs(term)>
1e-5);
sin(x)=%f,count=%d\n"
sum,count);
6-3
intx=1,find=0;
while(!
find)
if(x%2==1&
x%3==2&
x%5==4&
x%6==5&
x%7==0)
{
x=%d\n"
find=1;
}
x++;
错误分析:
1、while后不能加分号,否则进入死循环;
2、判等运算用的是双等号,不是单等号;
3、不管是否找,x都要自增运算,所以x++放在if语句的外面。
6-5、
伪代码:
定义华氏温度f,摄氏温度c
for(f=0;
f<
=300;
f=f+10)
输出华氏温度f;
c=5.0/9*(f-32);
输出摄氏温度;
intf=0;
/*定义华氏温度f*/
floatc=0;
/**定义摄氏温度c/
华氏温度--------摄氏温度\n"
f=f+10)/*产生0~300,并以10为间隔的温度值*/
%dF"
f);
-----"
c=5.0/9*(f-32);
/*将5写成5.0,防止发生整除运算*/
%.2fC\n"
c);
6-11、
intm=0;
/*定义最终输出的整数个数为m*/
floatn;
/*输入的数为n*/
longp=1,sum=0;
/*p为阶乘每次阶乘结果,sum为所有阶乘加和*/
pleaseinputthenumber:
m++;
/*m做自增运算*/
p=p*m;
/*每次阶乘结果*/
sum=sum+p;
}while(sum<
=n);
/*循环截止条件*/
m=%d\n"
m-1);
/*当不满足sum<
=n时,m已经多加了一次1,所以输出m-1*/
6-15、
intchicken;
intrabbit;
鸡--------兔\n"
for(chicken=1;
chicken<
98;
chicken++)/*鸡的数量从1~98中取*/
for(rabbit=1;
rabbit<
rabbit++)/*兔子的数量从1~98中取*/
if(2*chicken+4*rabbit==386&
chicken+rabbit==98)/*满足头为98,腿为386*/
{printf("
%d只%d只\n"
chicken,rabbit);
6-18、
类型一、
inti=1,j=1;
/*定义外部循环变量i,内部循环变量j*/
=9;
i++)/*输出表头1~9,每个数字占4位*/
{printf("
%-4d"
i);
/*换行*/
for(j=1;
j<
j++)/*输出‘-’,每个占4位*/
%-4c"
'
-'
i++)/*外部循环9次*/
for(j=1;
j++)/*内部循环9次*/
i*j);
/*输出结果,每个数字占4位*/
/*每行结束,要换行输出*/
类型二、
=i;
j++)/*内部循环i次*/
类型三、
intp=1;
for(p=1;
p<
=i-1;
p++)/*先打印每行的空格*/
/*定义占4位*/
for(j=i;
j++)/*内部循环9-i次*/
/*在空格后输出结果,每个数字占4位*/
6-20、
伪代码描述:
定义4位车号abcd;
for(a=0;
a<
a++)
令b=a;
for(c=0;
c<
c++)
令d=c;
if(c==a)重新产生c;
sum=1000*a+100*b+10*c+d
for(m=0;
m<
100;
m++)
if(sum==m*m)
输出abcd
inta=0,b=0,c=0,d=0;
/*定义4位车号为a,b,c,d*/
/*定义一个在0~100之间的整数,用于判断车号与m*m*/
intsum=0;
/*4位车号abcd*/
intp;
/*p=m*m*/
for(a=0;
a++)/*a在0~9中寻找*/
b=a;
/*b=a*/
for(c=0;
c++)/*c在0~9中寻找*/
d=c;
/*d=c*/
if(c==a)continue;
/*使产生的前两位车号与后两位车号不同*/
sum=1000*a+100*b+10*c+d;
/*计算abcd*/
for(m=0;
m++)/*在0~100的范围内寻找m*/
{
p=m*m;
if(sum==p)/*满足的丙的条件:
4位车号是一个整数的平方*/
{
printf("
4位车号:
%d%d%d%d\n"
a,b,c,d);
}
}
成绩
批阅教师
批阅日期