问问大佬们我的代码哪里有问题,输入3000数据是对的,但是输入2000数据是错的
#include<stdio.h>
int main()
{
int m;
while(scanf("%d",&m)!=EOF)
{
double sum=m;
for(int i=47;i>0;i--)
{
sum= (sum+m)/(1 + 0.0171/12);
}
printf("%.2lf\n",sum);
}
return 0;
}
原题是这样:
题目描述
父母为儿子大学四年生活费存了一笔钱,方式是整存零取, 规定儿子每月月底取走下月的生活费 M 元。现在假设银行的年利率是 1.71%,现在计算母亲至少存多少钱?(保留 2 位小数)
输入描述
多组输入,每组一个整数 M,代表每月的生活费。
输出描述
父母亲一次性要存入的生活费(保留 2 位小数)
样例输入
3000
2000
样例输出
139089.86
92726.58
你最后一个月sum=m是直接赋值给sum了,没有算利息。
你输入3000数据是139093.86也不对,
样例输出是 139089.86
正确应该是:
#include<stdio.h>
int main()
{
int m;
while(scanf("%d",&m)!=EOF)
{
double sum=0;
for(int i=48;i>0;i--)
{
sum= (sum+m)/(1 + 0.0171/12);
}
printf("%.2lf\n",sum);
}
return 0;
}
没有看出错误,我用你的代码运行结果是正确的,可以改成函数调用试试
#include<stdio.h>
void print(int m){
double sum=m;
for(int i=47;i>0;i--)
{
sum= (sum+m)/(1 + 0.0171/12);
}
printf("%.2lf ",sum);
}
int main()
{
int m,n;
scanf("%d %d",&m,&n)
print(m);
print(n);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632