FM.002 2024-11-14 01:38 采纳率: 100%
浏览 7
已结题

c,为什么for循环会多运算一次?

1、请你去买苹果,每斤苹果5.8元,第一天买2斤苹果,第二天开始每天买前一天的两倍,直到购买的苹果的总重量不超过100斤的最大值。编程求你平均每天花多少钱?输出结果保留2位小数部分。答案71.92

我写的:

#include <stdio.h>

int main()
{
    double a=1,b,c=0;
    for(b=0;b<=100;b=b+a)
    {
        c++;
        a=a*2;
    }
    b=b-a;
    c--;
    b=b*5.8;
    b=b/c;
    printf("%.2lf",b);
}

  • 写回答

2条回答 默认 最新

  • 阿白 2024-11-14 01:52
    关注

    在循环内b逐渐增加,但是因为每a(并且每a 都是前一天的两b 会在
    此时,你应该结束循环,但你没有进行额外的判断,因此循环多执行了一次
    你可以在每次循环后检查b是否超过

    #include <stdio.h>
    
    int main()
    {
        double a = 2, b = 0, c = 0;
        while (b + a <= 100)
        {
            b += a;
            a *= 2;
            c++;
        }
    
        b *= 5.8;
        b /= c;
        printf("%.2lf\n", b);
    
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月14日
  • 已采纳回答 11月14日
  • 创建了问题 11月14日