解题思路:
<1>.写一个函数来求一个测试数据得出的兑换到的汽水数量;
<2>.用三个变量来分别记录空瓶数和当前手里的空瓶兑换得到的汽水数和总共兑换到的汽水数
注意事项:
<1>.当空瓶剩余2时还可以兑换一瓶;
<2>.题意本身不是特别清楚,我试了几次后发现超出1<=n<=100这个范围时scanf输入也应当结束不只是0可以作为结尾输入;
<3>.10组测试数据我不确定包不包括预想输入结尾0,我使用了10个位置存储有效输入1个位置用来存储预想的结尾0,这样是可以运行通过的;
参考代码:
#include<stdio.h>
int exchangedSoda(int num) //计算兑换到的汽水数量的函数
{
int exchangedSoda = 0; //记录兑换到的汽水的总数
if (num < 2) //初始空瓶数小于2时直接返回可以兑换的汽水数0
return 0;
else
{
int emptyBottle = num, gottaSodaNum = 0; //记录现有的空瓶数和手头里空瓶兑换到的汽水数
while (emptyBottle >= 3)
{
gottaSodaNum = emptyBottle / 3;
exchangedSoda = exchangedSoda + gottaSodaNum;
emptyBottle = emptyBottle % 3 + gottaSodaNum; //喝完汽水后空瓶数
}
if (emptyBottle == 2) //还剩2个空瓶子时向老板借一瓶喝完还三个瓶子
{
exchangedSoda += 1;
}
}
return exchangedSoda;
}
void main()
{
int num[11];
int i=0;
while(i<11)
{
scanf_s("%d", &num[i]);
if (num[i] < 1 || num[i]>100) //注意:输入数据不在此范围内时就要结束输入
break;
i++;
}
int j = 0;
while(num[j]>=1&&num[j]<=100)
{
printf("%d\n", exchangedSoda(num[j]));
j++;
}
}
0.0分
0 人评分
输出正反三角形 (C语言代码)浏览:860 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:913 |
sizeof的大作用 (C语言代码)浏览:1598 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:627 |
简单的a+b (C语言代码)浏览:600 |
JAM计数法 (C语言代码)浏览:721 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:489 |
买不到的数目 (C语言代码)浏览:3135 |
1202题解浏览:690 |
C语言程序设计教程(第三版)课后习题6.5 (C语言代码)浏览:548 |