解题思路:
本题共有六种情况,分别是:
低于等于100000
高于100000,低于等于200000
高于200000,低于等于400000
高于400000,低于等于600000
高于600000,低于等于1000000
高于1000000
而本题难点主要在于,每阶段都需要计算
意思就是就算输入400000,也要计算完高于100000,低于200000的利润得出的奖金,然后再加上高于200000,低于等于400000的利润得出的奖金
如果每阶段连着之前的利润一起算的话,容易出错(我觉得qw
而从第二种情况开始,有一部分的奖金是固定的,意思就是你只要达到了这个部分,那么是绝对满足前面一部分的利润的
如高于100000,低于等于200000
高于100000的部分是绝对满足的,而多出来多少我们不知道也不确定
这时候就可以提前计算高于100000部分的奖金,然后后面等多出来部分的奖金计算出来后直接相加即可
我们可以使用#define,将那些每阶段固定的部分提前计算,然后整合即可
我将第二阶段的固定奖金命名为L1
第三阶段为L2
第四阶段为L3
第五阶段为L4
……
这样,只需要用获取到的的利润减去每阶段的定值,然后计算出多出部分的奖金再和之前我们用#define整合的对应阶段的奖金相加即可
注意事项:
先后顺序
每阶段的固定奖金
参考代码:
#include<stdio.h> #define L1 (100000*0.1)//高于100000,低于等于200000的奖金 #define L2 ((100000*0.1)+(100000*0.075))//高于200000,低于等于400000的奖金 #define L3 ((100000*0.1)+(100000*0.075)+(200000*0.05))//高于400000,低于等于600000的奖金 #define L4 ((100000*0.1)+(100000*0.075)+(200000*0.05)+(200000*0.03))//高于600000,低于等于1000000的奖金 #define L5 ((100000*0.1)+(100000*0.075)+(200000*0.05)+(200000*0.03)+(400000*0.015))//高于1000000的奖金 int main(void) { int i; scanf("%d", &i);//获取输入 if (i <= 100000) { i = i * 0.1; } else if (i > 100000 && i <= 200000) { i -= 100000;//减去该阶段的定值 i *= 0.075;//计算除定值外多余利润的奖金 i += L1;//多余利润的奖金加上该阶段的固定奖金 } else if (i > 200000 && i <= 400000) { i -= 200000;//同上 i *= 0.05; i += L2; } else if (i > 400000 && i <= 600000) { i -= 400000;//同上 i *= 0.03; i += L3; } else if (i > 600000 && i <= 1000000) { i -= 600000;//同上 i *= 0.015; i += L4; } else if (i > 1000000) { i -= 1000000;//同上 i *= 0.01; i += L5; } printf("%d", i);//输出总奖金 return 0; }
0.0分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复