G.R.I.T. 2021-02-21 16:29 采纳率: 40%
浏览 143
已采纳

宁波OJ平台 1115 橘子问题

#include<stdio.h>
#include<math.h>

int main()
{
    int n,y,i=1,sum=0;
    double avg=0.0;

    scanf("%d",&n);
    while(sum<=n)
    {
        sum += pow(2,i);
        i++;
    }
    avg = 0.4 * sum / i;
    printf("%.2lf\n",avg);
    return 0;
}

展开全部

  • 写回答

2条回答 默认 最新

  • 蒟蒻一枚 2021-02-22 01:23
    关注

    因为while循环的顺序是:先判断,再执行,再判断,再执行...也就是说,如果在这一轮跳出,上一轮执行的结果还是保存的。所以应该先减掉最后加的i,在让sum和i恢复上上次的状态。

    改后代码:

    --i;
    avg = 0.4 * (sum - pow(2, i)) / (i - 1);
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部