解题思路:
<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语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:884 |
1124题解浏览:595 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:664 |
最好的,浏览:563 |
上车人数 (C语言代码)浏览:713 |
1162答案错误,为什么浏览:644 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:806 |
10月月赛题解浏览:536 |
C语言程序设计教程(第三版)课后习题4.9 (Java代码)浏览:613 |
C语言程序设计教程(第三版)课后习题6.11 (C++代码)浏览:521 |