初莫M 发表于 2023-9-28 22:38:29

为什么我的输出总少1啊

题目是
小明带着N
元钱去买酱油。酱油10块钱一瓶,商家进行促销,每买3瓶送1瓶,或者每买5瓶送2瓶。请问小明最多可以得到多少瓶酱油。

输入描述
一行,包含一个正整数N
,表示小明可用于买酱油的钱数。N
是10的整数倍,N
不超过300。

输出描述
一行,包含一个整数,表示小明最多可以得到多少瓶酱油。
我的代码是
#include<stdio.h>
int main()
{
    int n;scanf("%d",&n);
    int a,b,c;
    c=n/10;
    a=c/3;b=c/5;
    int d,e;
    d=a;e=b*2;
    if(d>e) printf("%d",c+d);
    else printf("%d",c+e);
}
错在哪了啊

isdkz 发表于 2023-9-28 22:38:42

题目中提到“每买3瓶送1瓶”和“每买5瓶送2瓶”,但是在代码中没有考虑到这些情况,导致输出结果总是少1。正确的代码应该考虑到这些情况,例如:

#include <stdio.h>

int main() {
    int n, bottles;
    scanf("%d", &n);
    bottles = n / 10;
    int remainder = bottles % 5;
    int bonus = bottles / 5 * 2;
    if (remainder >= 3) {
      bonus++;
    }
    printf("%d\n", bottles + bonus);
    return 0;
}

这个代码中,我们首先计算出小明可以买多少瓶酱油,然后计算出他可以获得的赠品数量。注意到赠品的规则是每买5瓶送2瓶或者每买3瓶送1瓶,因此我们需要计算出小明购买的瓶数对5取余数,判断他是否可以获得额外的1瓶赠品。最后将购买的瓶数和赠品数量相加即可。

Mike_python小 发表于 2023-9-28 22:39:23

代码问题分析与解决方法

你的代码中出现了输出少一瓶酱油的问题。这个问题是因为你没有正确处理促销活动中赠送的酱油瓶数。

以下是修改后的代码:


#include <stdio.h>

int main()
{
    int n;
    scanf("%d", &n);

    int c = n / 10; // 可以买到的酱油瓶数
    int a = c / 3;// 根据每买3瓶送1瓶计算得到的赠送的瓶数
    int b = c / 5;// 根据每买5瓶送2瓶计算得到的赠送的瓶数

    int d = a;               // 按照每买3瓶送1瓶计算得到的总赠送瓶数
    int e = b * 2;         // 按照每买5瓶送2瓶计算得到的总赠送瓶数

    int total = c + d + e;   // 总共可以得到的酱油瓶数

    printf("%d", total);

    return 0;
}


在这个改进后的代码中,我们计算了每种促销活动所赠送的酱油瓶数,并将它们累加到总共可以得到的酱油瓶数中。

希望以上解决方法对您有帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 为什么我的输出总少1啊