黑马程序员技术交流社区

标题: case穿透的实例 [打印本页]

作者: coding_wang    时间: 2015-9-9 23:49
标题: case穿透的实例
/*题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%,
高于100万元时,超过100万元的部分按1%提成;
从键盘输入当月利润I,求应发放奖金总数?*/

//尝试用switch的case穿透来完成
#include <stdio.h>
void a2()
{
        long int i;
        double money=0;
        printf("请输入利润值:");
        scanf("%ld",&i);
        if (i>1000000)                                                //由于没有上限,无法罗列case的值,所以将大于一百万的数单独计算
        {
                money = (i-1000000)*0.01;
                i=1000000;
        }
        switch(i/100000)                                        //将利润值除以十万,都是int型数字,其结果也是0-10的整数。
        {
        case 10:
        case 9:
        case 8:
        case 7:
        case 6:
                money += (i-600000)*0.015;               
                i=600000;                                                //计算大于六十万的奖金,利用穿透计算低于六十万的奖金值。
        case 5:
        case 4:
                money += (i-400000)*0.03;
                i=400000;                                                //计算大于四十万的奖金,利用穿透计算低于四十万的奖金值。
        case 3:
        case 2:
                money += (i-200000)*0.05;
                i=200000;
        case 1:
                money += (i-100000)*0.075;
                i=100000;
        default:
                money += i*0.03;
        }
        printf("应发放的奖金额度为:%10.0lf.\n",money);
}
//最后证明老板很抠门~!


作者: Music_棍棍    时间: 2015-9-10 00:16
最后一句亮了
作者: 张健康ios0826    时间: 2015-9-10 00:21
学到啦,好厉害啊
作者: 克莱斯勒    时间: 2015-9-10 01:01
学得很好啊,技术不错
作者: 羊口羊口羊    时间: 2015-9-10 10:18
赞一下!!!我以为奖金很高啊
作者: lumangmang    时间: 2015-9-10 10:21
不错啊,加油!
作者: tr2e    时间: 2015-9-10 11:08
顶交流贴




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2