喝汽水问题描述
喝汽水,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;
}