按照题目要求编写的计算换瓶数的C语言程序如下
#include
void cal_bottle(int m){
int total=0;//total表示换瓶总数
while(m>=3){
total=total+m/3;
m=m/3+m%3;
}
if(m==2) {total++;}
printf("%d\n",total);
}
int main()
{
int n;//n表示空瓶数
scanf("%d",&n);
while(n!=0){
cal_bottle(n);
scanf("%d",&n);
}
return 0;
}
#include
int Drinks(int n); // 函数声明
int main(void)
{
int n; // n 为输入值
FILE* fIn; // 文件指针
// 这里假定输入文件名为 input.txt
fIn = fopen("input.txt", "r");
if (fIn == NULL)
{
printf("打开输入文件错误.");
return -1;
}
// 从输入文件中逐行读取输入值、计算并输出结果
while (fscanf(fIn, "%d", &n) != EOF)
{
if (n == 0) // 输入值为0表示输入结束,退出while循环
break;
printf("%d\n", Drinks(n)); // 计算并输出结果
}
fclose(fIn);
return 0;
}
// 定义一个函数,输入空瓶数 n,返回喝过的瓶数 d
int Drinks(int n)
{
int d = 0;
// n 为剩余的空瓶,d 为累计喝过的瓶数
while (n >= 3) //当剩余空瓶数多于3个时,循环执行以下操作
{
d += n / 3; // n 整除 3 为当前可以喝到的瓶数,累加到 d 中
n = n / 3 + n % 3; // 更新兑换以后剩下的空瓶数
}
if (n == 2) // 按规则剩下 2 瓶 时可先借后还再多喝 1 瓶
d++;
return d; // 返回喝过的瓶数
}