__Wu__ 2021-02-15 14:29 采纳率: 75%
浏览 31
已采纳

大佬帮我这个小小小新手看一下这道题,我的代码为什么错了?

题目描述

植树节又到了,商家A和商家B为了卖出更多的树苗。
商家A有了新的决定:
购买树苗数量小于等于10棵,所有树苗按正常价格10元一棵收费;
购买树苗数量大于10且小于等于20棵,超出10棵以上的树苗按8.2元一棵收费,其余树苗按正常价格收费;
购买树苗数量大于20棵,超出20棵以上的树苗按7.5元一棵收费,10至20棵部分树苗按8.2元一棵收费,其余树苗按正常价格收费。
商家B决定:
所有树苗12元一棵,但是均打七折卖出。


图图要代表班级去买树苗,要求输入图图需要购买的树苗棵数,输出在哪家商家购买更加划算及其所要花费的钱数。

输入要求

1 行,一个整数,表示图图需要购买的树苗数量。

输出要求

1 行,如果商家A的树苗比较划算,输出:A,否则输出:B,同时输出图图购买树苗最优惠的钱数(文字和数字间用空格隔开)。

样例输入 复制

30

样例输出 复制

B 252
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,A,B;
    cin>>n;
    B=12*0.7*n;
    if(n <= 10){
        A=10*n;
    }else if(n>10&&n<=20){
        A=10*10+(n-10)*8.2;
    }else{
        A=10*8.2+(n-20)*7.5+10*10;
    }
    if(A<B){
        cout<<"A "<<A;
    }else{
        cout<<"B "<<B;
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 书山客 2021-02-15 14:43
    关注

    修改数据类型int为double。在计算过程中多是浮点计算,所以如果使用int系统会对计算结果进行取整,多次执行会有误差

    #include <iostream>
    using namespace std;
    int main() {
        double n, A, B;    //数据类型用double,保证计算精度
        cin >> n;
        B = 12 * 0.7 * n;
        if (n <= 10) {
            A = 10 * n;
        }
        else if (n > 10 && n <= 20) {
            A = 10 * 10 + (n - 10) * 8.2;
        }
        else {
            A = 10 * 8.2 + (n - 20) * 7.5 + 10 * 10;
        }
        if (A < B) {
            cout << "A " << A;
        }
        else {
            cout << "B " << B;
        }
        return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?