麻烦大佬们帮我看看这道题的问题

问问大佬们我的代码哪里有问题,输入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