这道题我使用了“switch”判断语句来解决不同金额条件下的求值问题
【题目描述】:
企业发放的奖金根据利润提成。利润低于或等于100000元的,奖金可提10%;
利润高于100000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成 7.5%;
200000<I≤400000时,低于200000元部分仍按上述办法提成,(下同),高于200000元的部分按5%提成;
400000<I≤600000元时,高于400000元的部分按3%提成;
600000<I≤1000000时,高于600000元的部分按1.5%提成;
I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。
【输入格式】:
一个整数,当月利润。
一个整数,奖金。
【注意】:
我这里并没有详解switch语句的用法(我是看别人代码自己一点点摸索的,不懂用法的可以自己百度)
【思路】:
首先创建三个空间i,x,y
把利润的值赋给i和y,最后的奖金用x表示,
由题目看到金额判断是以几十万为单位,真正关键的数字只是最前面的数字(是否在十万位上,是多少),
所以我以这个数字作为判断条件,这里i的作用就是通过/100000来得到这个位置上的数字,而y可以继续保存利润的数值,
接下来就很明了了,因为i/100000了,所以如果结果是case 0,即代表十万位上没有数字(也就说明利润小于100000),
那么接下来就进行奖金的计算并把奖金的值输出,程序例如:printf("%d",x=y*0.1);
记得每一个判断的执行结果后都要加一个break用来结束switch循环(也就是不再看下面的判断语句了),
以此类推写下剩下几种情况下的执行语句,为了缩短字节并提高运算速度,可以把前面固定不变的奖金先算出来再写到程序里面
{
100000前的奖金:10000
200000前的奖金:17500
400000前的奖金:27500
600000前的奖金:33500
1000000前的奖金:39500
}
还有,当十万位上的数字为6或7或8或9时,不用每个数字都给他写一个输出语句,由于它们这几个的运算公式是通用的,就可以通过这种形式:
{
case 6:
case 7:
case 8:
case 9:printf("%d",x=33500+(y-600000)*0.015);break;
}
实现共用一个输出语句。
最后万年不落return 0;
【参考代码】如下:
#include<stdio.h>
int main()
{
int i,x,y;
scanf("%d",&i);
y=i;
i/=100000;
switch(i){
case 0:printf("%d",x=y*0.1);break;
case 1:printf("%d",x=10000+(y-100000)*0.075);break;
case 2:
case 3:printf("%d",x=17500+(y-200000)*0.05);break;
case 4:
case 5:printf("%d",x=27500+(y-400000)*0.03);break;
case 6:
case 7:
case 8:
case 9:printf("%d",x=33500+(y-600000)*0.015);break;
default:printf("%d",x=39500+(y-1000000)*0.01);break;
}
return 0;
}
希望对你有帮助哦awa
0.0分
5 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复