企业发放的奖金根据利润提成。利润低于或等于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分
8 人评分
C语言考试练习题_排列 (C语言代码)浏览:1373 |
C二级辅导-进制转换 (C语言代码)浏览:657 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:631 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:565 |
本人酷爱递归实现很多问题,这里也是浏览:632 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:672 |
C语言训练-自由落体问题 (C语言代码)浏览:650 |
1157题解浏览:769 |
矩形面积交 (C++代码)浏览:1204 |
勾股数 (C语言代码)浏览:830 |
李超凡 2022-10-13 16:53:20 |
着实勤奋