橙准


私信TA

用户名:chenzhun

访问量:2432

签 名:

等  级
排  名 13565
经  验 933
参赛次数 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 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »