喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。
方法一:函数
#include<stdio.h>
#include<stdlib.h>
int func(int m)
{
int n = 1, s; //n:这次新换的,s:上一次换过之后剩余的
int sum = m; //初始化总换取的数量为所给钱数
while (n != 0)
{
n = m / 2;//新换水的瓶数
s = m % 2;//换汽水后剩余的瓶盖数
m = n + s;//下次换汽水的瓶盖数
sum = sum + n;//更新喝了几瓶汽水
}
return sum;
}
int main()
{
int i = func(20);
printf("%d", i);
system("pause");
return 0;
}
方法二:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;//i表示钱
int j = 0;//j表示空瓶子
int sum = 0;//sum喝汽水总瓶数
scanf("%d", &i);
sum = i;
j = i;
while (j >= 2)
{
sum = sum + j / 2;
j = j % 2 + j / 2;
}
printf("%d\n", sum);
system("pause");
return 0;
}
同时,该问题可以扩展到3个空瓶可以换一瓶汽水,4个空瓶可以换一瓶汽水等,是一样的思路,
下面是4个空瓶可以换一瓶汽水的代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;//i表示money
int j = 0;//j表示空瓶子
int sum = 0;//sum喝汽水总瓶数
scanf("%d", &i);
sum = i;
j = i;
while (j >= 4)
{
sum = sum + j / 4;
j = j % 4 + j / 4;
}
printf("%d\n", sum);
system("pause");
return 0;
}