C语言喝汽水问题的错误分析以及解决方法

喝汽水问题描述

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水

错误分析

思路:

一开始可以喝20瓶,然后20个空瓶可以换10瓶,然后10个空瓶可以换5瓶,以此类推,因而错写代码如下,得到的结果是30瓶(正确结果是39瓶)

#include<stdio.h>
int main()
{
    int a = 20,add=0;
    while (a != 0) {
        add += a;
        a = a / 2;
    }
    printf("可以喝%d瓶汽水", add);
    return 0;
}

错因:

5个空瓶换2瓶汽水时,剩下了一个空瓶,可以与最后一次的空瓶一起再换一瓶汽水

解决方法

用for循环

#include<stdio.h>
int main()
{
    int a = 20,add=0;
    int m = 0;
    while (a != 0) {
        add += a;
        m += a % 2;
        a = a / 2;
    }
    add += m / 2;
    printf("可以喝%d瓶汽水", add);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值