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

题目描述

植树节又到了,商家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;
}

 

修改数据类型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;
}

 

请描述具体你的程序错在什么地方? 什么地方不符合你的期待?