文章目录
-
- 问题
- 思路
- 运行代码
问题
喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水。
思路
1. 20元首先可以喝20瓶,此时手中有20个空瓶子 2. 两个空瓶子可以喝一瓶,喝完之后,空瓶子剩余:empty/2(两个空瓶子换的喝完后产生的瓶子) + empty%2(不够换的瓶子) 3. 如果瓶子个数超过1个,可以继续换,即重复小结。
运行代码
方法一:
int main()
{
int money = 0;
int total = 0;
int empty = 0;
scanf("%d", &money);
total = money;
empty = money;
while(empty>1)
{
total += empty/2;
empty = empty/2+empty%2;
}
printf("total = %d\n", total);
return 0;
}
方法二:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int a = 0; printf("你有多少钱:"); scanf("%d", &a); int c = 0;/*可以喝多少瓶*/ c = a; /*喝完剩余20个空瓶子*/ int empty = a; while (a--) { if (empty > 1) { c += empty / 2; empty = empty / 2 + empty % 2; } else { break; } } //2个空瓶子=1瓶饮料 printf("可以喝到%d瓶\n", c); return 0; }