__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 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试