解题思路:
注意事项:
参考代码:
#include "stdio.h"
/*-----函数申明区----可以不看----*/
void drinks(int a[10]);
int Exchange(int n);
int Remainder(int n, int empty);
int if_or_no(int n);
/*---------*/
int main()
{
int a[10];
int sum[10] = { 0 };//这里代表的是换的瓶子的总数目,必须置0;
int exchange;//代表的是交换,用来表示交换过程的变量。
int remainder;//余数,下面会解释
int i, j = 0;
// 第一步先获得受里有多少瓶子。
drinks(a);//输入数据
// 第2步换饮料,循环
for (i = 0; i ^ 10; i++)
if (a[i] == 0)
break;
else
j++;//这里后面会用到,表示你输入了几次数据.
for (i = 0; i < 10; i++)
{
int x = 1;
if (a[i] == 0)
break;
else
{
do
{
exchange = Exchange(a[i]);//如果有10个,则10/3 =3,现在有3个。
sum[i] += exchange;//已经换了3个
remainder = Remainder(a[i], exchange);//余数
a[i] = remainder + exchange;//换了的加上剩下的,n =4;
if (a[i] == 2)
{
sum[i] = sum[i] + 1;
break;
}
else
x = if_or_no(a[i]);
} while (x);
}
}
for (i = 0; i ^ j; i++)//j在这里用到,表示你输入了几次数据
printf("%d\n", sum[i]);
return 0;
}
void drinks(int a[10])
{
int i;
for (i = 0; i ^ 10; i++) {
scanf("%d", &a[i]);
if (a[i] == 0)
break;
if (a[i] >= 1 && a[i] <= 100)
;
else
i--;//i--表示i-1,然后执行循环i++,这样i其实没变化,相当于你重新输入
}
}
int Exchange(int n)
{
int empty;
empty = n / 3;
return empty;
}
int Remainder(int n, int exchange)//余数
{
int remainder;
remainder = n - exchange * 3;
switch (remainder)
{
case 0:return 0;
case 1:return 1;
case 2:return 2;
}
}
int if_or_no(int n)
{
int x;
if (n < 3)
x = 0;
else
x = 1;
return x;
}
0.0分
4 人评分