《C Primer Plus(第5版)中文版》第7章编程练习第8题

来源:互联网 发布:最新在线报名系统源码 编辑:程序博客网 时间:2024/04/25 11:32

  修改练习7中的假设a,使程序提供一个选择工资等级的菜单。用switch选择工资等级。程序运行的开头应该像这样:
  
    Enter the number corresponding to the desired pay rate or action:
    1) $8.75/hr           2)$9.33/hr
    3) $l0.00/hr           4)$11.20/hr
    5) Quit
    
  如果选择1到4.那么程序应该请求输入工作小时数。程序应该一直循环运行,直到输入5。如果输入1到5以外的选项,那么程序应该提醒用户合适的选项是哪些,然后再循环。用#define为各种工资等级和税率定义常量。
  
*( 第7题原题如下:
  编写程序,要求输入一周中的工作小时数,然后打印工资总额、税金以及净工资。作如下假设:
  a.基本工资等级=10.00单位/小时
  b.加班(超过40小时)=1.5倍的时间
  c.税率 前300单位为15%
  下一个150单位为20%
  余下的为25%
  用#define定义常量,不必关心本例是否符合当前的税法。)*

#include <stdio.h>#define C1 8.75         //时薪选项1 #define C2 9.33         //时薪选项1 #define C3 10.00        //时薪选项1 #define C4 11.20        //时薪选项1 #define OVERTIME 40     //超时阈值 #define OTRATE 1.5      //加班工资倍率#define LV0 300         //基本税率阈值#define LV0RATE 0.15    //基本税率#define LV1 150         //第一阶梯阈值 #define LV1RATE 0.20    //第一阶梯税率 #define LVUPRATE 0.25   //更高阶梯税率void clearbuffered(void);int main(void){    float hour,salary,tax,pay,hourly;    int choose;    printf("*****************************************************************\n\n");    printf("1)$%.2f/hr\t\t\t\t2)$%.2f/hr\n\n3)$%.2f/hr\t\t\t\t4)$%.2f/hr\n\n5)Quit\n\n",C1,C2,C3,C4);    printf("*****************************************************************\n\n");    while(printf("请输入序号:"),(choose=getchar())!='5'){        switch(choose){            case '1':hourly=C1;break;            case '2':hourly=C2;break;            case '3':hourly=C3;break;            case '4':hourly=C4;break;            default:clearbuffered();                    printf("输入有误,请输入1~5。\n");                    continue;        }        clearbuffered();        while(printf("请输入工作时间:")){            if(scanf("%f",&hour)&&hour>0){                if(OVERTIME>=hour){                    pay=hourly*hour;                }else{                    pay=hourly*OVERTIME+(hour-OVERTIME)*hourly*OTRATE;                }                salary=pay;                if(pay<=LV0){                    tax=pay*LV0RATE;                }else if(pay<=LV0+LV1){                    tax=LV0*LV0RATE+(pay-LV0)*LV1RATE;                }else{                    tax=LV0*LV0RATE+LV1*LV1RATE+(pay-LV0-LV1)*LVUPRATE;                }                pay-=tax;                printf("工资总额:%.2f\t税金:%.2f\t净工资:%.2f\n\n",salary,tax,pay);                clearbuffered();                break;            }else{                printf("工作时间输入有误,请输入正确的值.\n");                clearbuffered();                continue;            }        }    }    printf("感谢使用,程序退出!\n");    return 0;}void clearbuffered(void){    while(getchar()!='\n')continue;}
0 0
原创粉丝点击