解题思路:
用一系列if else语句来处理多种情况。因为分段不太方便所以没用switch语句,不过用除以200000的余数来作为case应该也可以。
注意事项:
奖金应为浮点数,因为可能有小数。数额比较大,计算比较繁琐。
参考代码:
#include <iostream> using namespace std; int main() { int profit = 0; float award = 0; cin >> profit; if(profit < 0) { return -1; } else if(profit <= 100000) { award = 0.1 * profit; } else if(profit <= 200000) { award = 0.075 * (profit - 100000) + 10000; } else if(profit <= 400000) { award = 0.05 * (profit - 200000) + 17500; } else if(profit <= 600000) { award = 0.03 * (profit - 400000) + 27500; } else if(profit <= 1000000) { award = 0.015 * (profit - 600000) + 33500; } else { award = 0.01 * (profit - 1000000) + 39500; } cout << award << endl; return 0; }
0.0分
3 人评分
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1055 |
C二级辅导-等差数列 (C语言代码)浏览:1315 |
C语言训练-排序问题<2> (C++代码)浏览:935 |
C语言训练-计算一个整数N的阶乘 (C语言代码)浏览:986 |
A+B for Input-Output Practice (IV) (C++代码)浏览:713 |
【明明的随机数】 (C++代码)浏览:834 |
【绝对值排序】 (C++代码)浏览:720 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:909 |
程序员的表白 (C语言代码)浏览:706 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:573 |
林惜城 2022-04-12 16:05:32 |
可以贴一下你的代码,不然我也不知道哪里有问题。我对输入负数的情况是return -1
qss 2022-04-13 00:08:26 |
@reminder #include<iostream> using namespace std; int main(){ int x=0; float y=0; int x, y; cin >> x; if(x<0){ return -1; } else if(x <= 100000) y = x * 0.1; else if(x < 200000) y = (x - 100000) * 0.075 + 100000 * 0.1; else if(x < 400000) y = (x - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; else if(x < 600000) y = (x - 400000) * 0.03 + (400000 - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; else if(x < 1000000) y = (x - 600000) * 0.015 + (600000 - 400000) * 0.03 + (400000 - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; else y = (x - 1000000) * 0.01 + (1000000 - 600000) * 0.015 + (600000 - 400000) * 0.03 + (400000 - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; cout << y; return 0; }
qss 2022-04-13 00:10:43 |
@reminder #include<iostream> using namespace std; int main(){ int x=0; float y=0; int x, y; cin >> x; if(x<0){ return -1; } else if(x <= 100000) y = x * 0.1; else if(x < 200000) y = (x - 100000) * 0.075 + 100000 * 0.1; else if(x < 400000) y = (x - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; else if(x < 600000) y = (x - 400000) * 0.03 + (400000 - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; else if(x < 1000000) y = (x - 600000) * 0.015 + (600000 - 400000) * 0.03 + (400000 - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; else y = (x - 1000000) * 0.01 + (1000000 - 600000) * 0.015 + (600000 - 400000) * 0.03 + (400000 - 200000) * 0.05 + (200000 - 100000) * 0.075 + 100000 * 0.1; cout << y; return 0; }
qss 2022-04-13 00:11:03 |
@reminder 不知道为什么换不了行
林惜城 2022-04-14 21:31:14 |
@qianss 利润的区间应该是左开右闭的,比如if (100000 < x && x < 200000)实际应该是if (100000 <= x && x < 200000),你的代码如果输入100000这种临界值就不符合任何一个判断条件了,所以我估计你报的错是答案错误
qss 2022-04-15 08:39:18 |
@reminder 嗷这样子呀我懂了谢谢