解题思路:
<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语言训练-自由落体问题 (C语言代码)浏览:793 |
Tom数 (C语言代码)浏览:2010 |
C语言考试练习题_保留字母 (C语言代码)浏览:685 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:605 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:734 |
C语言训练-求矩阵的两对角线上的元素之和 (C语言代码)浏览:598 |
矩阵乘法 (C++代码)浏览:1460 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:664 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1815 |
简单的a+b (C语言代码)浏览:335 |