橙准


私信TA

用户名:chenzhun

访问量:2352

签 名:

等  级
排  名 12219
经  验 927
参赛次数 1
文章发表 2
年  龄 18
在职情况 学生
学  校 长大
专  业

  自我简介:

TA的其他文章

解题思路:

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

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区