题目描述:
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少瓶汽水
思绪一
- 拿到金额,算出金额可以买多少瓶汽水,同时可得到空瓶数量。
- 拿到空瓶数量,算出所有空瓶可换多少瓶汽水,这时剩余的空瓶数量是没有换的空瓶数量和换了汽水的数量。总共喝的汽水数量为上一步累加喝的数量加上这次换的汽水数量。
- 当空瓶数量满足换汽水条件时,执行步骤2,不满足时,过程结束返回总共喝的汽水数量。
思绪二
- 这个问题含一个情况是可以向老板赊一瓶汽水,最后用剩下的两个空瓶再换一瓶汽水,还给老板。
- 如果不赊汽水的话,最后自己手中还剩下一个空瓶子
扩展为
由自己设定拥有的钱数,一瓶汽水的价值和几个空瓶可以换一瓶汽水。
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
int money, value, n;
int cover = 0, sum = 0;
printf("请输入您拥有多少钱,一瓶汽水多少元和多少个空瓶能换一瓶汽水:");
scanf("%d%d%d", &money, &value, &n);
cover = money / value;//最开始购买的汽水量
sum = cover;//统计喝汽水的瓶数
while (cover >= n) {
sum += cover / n;//统计喝汽水的瓶数
cover = cover / n + cover % n;//空瓶数量
}
if (cover == n - 1){
printf("如果不可以赊账,能喝%d瓶\n", sum);
printf("如果可以赊账,则能喝%d瓶\n", sum + 1);
}
else{
printf("无论能不能赊账,只能喝%d瓶\n", sum);
}
system("pause");
return 0;
}
代码生成图: