C语言练习作业(二)

又是一个费了不少劲的难题,主要是数据类型比较麻烦,一直在翻资料,还好最后做到了无警告。

  1. 应该用“%f”输出的,用成了“%d”;
  2. 改成“%.2f”后,输出结果只剩两个小数点;
  3. long fuck = (long)lirun / 100000;,一开始没有用显式的类型转换,所以会有警告;
  4. 有些要点还是查看答案才想明白的,不能完全算是独立完成;
  5. 代码还有改进的余地,不过懒得改了。

题目: 企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元(100000< I≤200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5% ;200000< I≤400000时,其中20万元仍按上述办法提成(下同),高于20万元的部分按5%提成;400000< I≤600000时,高于40万元的部分按3%提成;600000< I≤1000000时,高于60万的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发放奖金总数。要求:(1)用if语句编程序;(2)用switch语句编程序。

#include<stdio.h>
int main()
{
    double lirun = 0;//当年利润
    double jiangjin = 0;//应发奖金
    printf_s("请输入当年利润:\n");
    scanf_s("%lf", &lirun);
    /*if (lirun <= 100000)
    {
        jiangjin = lirun*0.1;
        printf_s("应发奖金为:%d", jiangjin);
    }
    else if (lirun > 100000 && lirun <= 200000)
    {
        jiangjin = 10000 + (lirun - 10000)*0.075;
        printf_s("应发奖金为:%d", jiangjin);
    }
    else if (lirun > 200000 && lirun <= 400000)
    {
        jiangjin = 10000 + 100000 * 0.075 + (lirun - 200000)*0.05;
        printf_s("应发奖金为:%d", jiangjin);
    }
    else if (lirun > 400000 && lirun <= 600000)
    {
        jiangjin = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (lirun - 400000)*0.03;
        printf_s("应发奖金为:%d", jiangjin);
    }
    else if (lirun > 600000 && lirun <= 1000000)
    {
        jiangjin = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (lirun - 600000)*0.015;
        printf_s("应发奖金为:%d", jiangjin);
    }
    else
    {
        jiangjin = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (lirun - 1000000)*0.01;
        printf_s("应发奖金为:%d", jiangjin);
    }*/

    long fuck = (long)lirun / 100000;
    if (fuck > 10)
        fuck = 10;
    switch (fuck)
    {
    case 0:
        jiangjin = lirun*0.1;
        printf_s("应发奖金为:%.2f", jiangjin);
        break;
    case 1:
        jiangjin = 10000 + (lirun - 10000)*0.075;
        printf_s("应发奖金为:%.2f", jiangjin);
        break;
    case 2:
    case 3:
        jiangjin = 10000 + 100000 * 0.075 + (lirun - 200000)*0.05;
        printf_s("应发奖金为:%.2f", jiangjin);
        break;
    case 4:
    case 5:
        jiangjin = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (lirun - 400000)*0.03;
        printf_s("应发奖金为:%.2f", jiangjin);
        break;
    case 6:
    case 7:
    case 8:
    case 9:
        jiangjin = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (lirun - 600000)*0.015;
        printf_s("应发奖金为:%.2f", jiangjin);
        break;
    case 10:
        jiangjin = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (lirun - 1000000)*0.01;
        printf_s("应发奖金为:%.2f", jiangjin);
        break;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值