解题思路:
用一系列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语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:599 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:891 |
大神老白 (C语言代码)浏览:642 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:1420 |
WU-字符串比较 (C++代码)浏览:756 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:633 |
DNA (C语言描述,蓝桥杯)浏览:1553 |
文科生的悲哀 (C语言代码)浏览:1400 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:699 |
GC的苦恼 (C语言代码)浏览:620 |
林惜城 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 嗷这样子呀我懂了谢谢