题目描述
植树节又到了,商家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;
}
请描述具体你的程序错在什么地方? 什么地方不符合你的期待?