c语言菜鸡,这道题我知道是.多实例.但我真的不会.多实例.,求大佬一个代码,谢谢,如图?

如题所述

按照题目要求编写的计算换瓶数的C语言程序如下

#include<stdio.h>

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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-07
#include <stdio.h>

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; // 返回喝过的瓶数
}追问

大佬,为什么一运行就说“打开文件错误”,这个文件里的数据,不应该是运行时输入的吗,谢谢

追答

题目要求是从文件输入,但是没有定义输入文件的文件名,所以我假定文件名为input.txt。

你需要在 【源代码文件 或者 可执行文件】 的同一个文件夹中,手动新建一个名 input.txt 的文本文件,然后在里面输入:

3

10

81

0

这样的几行数据,再运行程序就可以看到结果了。你也可以随便输入更多行数字来验证。

本回答被提问者采纳