m0_53355897
2021-05-13 20:58
采纳率: 100%
浏览 77

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

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 已采纳

    你最后一个月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;
    }

    已采纳该答案
    打赏 评论
  • 蛋糕店筹备中 2021-05-13 21:09

    没有看出错误,我用你的代码运行结果是正确的,可以改成函数调用试试

    #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;
    }
    
    打赏 评论
  • 有问必答小助手 2021-05-14 15:32

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    打赏 评论

相关推荐 更多相似问题