解题思路:

<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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论