moocC语言第七周答案.docx
《moocC语言第七周答案.docx》由会员分享,可在线阅读,更多相关《moocC语言第七周答案.docx(8页珍藏版)》请在冰豆网上搜索。
moocC语言第七周答案
ThelatestrevisiononNovember22,2020
moocC语言第七周答案
n层嵌套平方根的计算(4分)
题目内容:
编写程序利用递归法实现如下所示n层嵌套平方根的计算:
递归函数原型:
doubleY(doublex,intn);
程序运行结果示例1:
Pleaseinputxandn:
16,1↙
Result=
程序运行结果示例2:
Pleaseinputxandn:
16,2↙
Result=
程序运行结果示例3:
Pleaseinputxandn:
16,3↙
Result=
程序运行结果示例4:
Pleaseinputxandn:
16,0↙
Result=
输入提示信息:
"Pleaseinputxandn:
"
输入格式:
"%lf,%d"
输出格式:
"Result=%.2f\n"
#include<>
#include<>
doubleY(doublex,intn)
{
if(n==0)
return0;
else
return(sqrt(x+Y(x,n-1)));
}
intmain()
{
doublea;
intb;
doubleresult;
printf("Pleaseinputxandn:
");
scanf("%lf,%d",&a,&b);
result=Y(a,b);
printf("Result=%.2f\n",result);
return0;
}递归法求和(4分)
题目内容:
用递归方法计算如下求和计算
sum=1+2+3+....+n
递归函数原型:
intSum(intn);
程序运行结果示例1:
Pleaseinputn:
5↙
sum=15
程序运行结果示例2:
Pleaseinputn:
0↙
dataerror!
程序运行结果示例3:
Pleaseinputn:
-3↙
dataerror!
输入提示信息:
"Pleaseinputn:
"
输入错误提示信息:
"dataerror!
\n"
输入格式:
"%d"
输出格式:
"sum=%d\n"
#include""
intsum(intn)
{
if(n>1)
returnn+sum(n-1);
else
return1;
}
intmain()
{
intn;
printf("Pleaseinputn:
");
scanf("%d",&n);
if(n>0)
{
printf("sum=%d\n",sum(n));
}
else
{
printf("dataerror!
\n");
}
}
猴子吃桃程序_扩展3(4分)
题目内容:
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。
第二天早上将剩余的桃子又吃掉一半,并且又多吃了1个。
此后每天都是吃掉前一天剩下的一半零一个。
到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子为了加强交互性,由用户输入天数n,即假设第n天的桃子数为1。
要求采用递归法求解。
递归函数原型:
intMonkey(intn,intx);
函数功能:
从第n天只剩下一个桃子反向逆推出第1天的桃子数
程序运行结果示例1:
Inputdaysn:
5↙
x=46
程序运行结果示例2:
Inputdaysn:
10↙
x=1534
输入提示信息:
"Inputdaysn:
"
输入格式:
"%d"
输出格式:
"x=%d\n"
#include<>
main()
{
intsum=1,n,i;
printf("Inputdaysn:
");
scanf("%d",&n);
for(i=1;i{
sum=(sum+1)*2;
}
printf("x=%d\n",sum);
}网购打折商品(5分)
题目内容:
某网上购物网站对用户实行优惠,买家购物货款p越多,则折扣越多。
标准如下:
p<100元没有折扣
100元≤p<200元5%折扣
200元≤p<500元8%折扣
500元≤p<1000元10%折扣
1000元≤p15%折扣
【提示】:
从题意可以看出,折扣的变化是有规律的。
当购物金额达到“100元”的2倍、5倍、10倍时,折扣值就会发生变化。
假如一个变量c代表100的倍数,则当c<1时,无折扣;当1≤c<2时,折扣d=5%;当2≤c<5时,折扣d=8%;当5≤c<10时,折扣d=10%;当10≤c时,折扣d=15%。
注:
程序中与价格相关的数据类型为float
程序运行结果示例1:
Inputpayment:
90↙
price=
程序运行结果示例2:
Inputpayment:
100↙
price=
程序运行结果示例3:
Inputpayment:
300↙
price=
程序运行结果示例4:
Inputpayment:
1000↙
price=
程序运行结果示例5:
Inputpayment:
↙
price=
输入提示:
"Inputpayment:
"
输入格式:
"%f"
输出格式:
"price=%.1f\n"(注:
等号左右均有空格)
#include<>
intmain()
{
intc;
floatb;
printf("Inputpayment:
");
scanf("%f",&b);
c=b/100;
if(c<1)
{
printf("price=%.1f\n",b);
}
elseif(1<=c&&c<2)
{
printf("price=%.1f\n",b*;
}
elseif(2<=c&&c<5)
{
printf("price=%.1f\n",b*;
}
elseif(5<=c&&c<10)
{
printf("price=%.1f\n",b*;
}
else
{
printf("price=%.1f\n",b*;
}
}