目前为止写的最长的程序了...虽然很简单...
程序代码:
/* 编写程序, 要求输入一周中的工作小时数,然后打印工资总额,税金以及净工资 * 作如下假设: * a. 基本工资等级 使用switch选择工资等级 * 1. 8.75美元/小时 * 2. 9.33美元/小时 * 3. 10.00美元/小时 * 4. 11.20美元/小时 * b. 加班 (超过40小时) = 1.5 倍的时间 * c. 税率 * 前300美元为15% 下一个 150 美元为20% 余下的为25% */ /*程序目标: 打印工资总额,税金,净工资 */ /* 分析: 用户输入基本工资等级 判断是否有效 无效:(返回继续输入) 有效: 用户输入每周工作的小时数 判断是否是数字 不是(继续输入) 是 基本工资 : 工资等级 * 小时数 加班 :基本工资 + ((小时数 - 40) * 1.5) 总工资 = 基本工资 + 加班费 计算税率: 0 < 总工资 < 300, 基本税: 总工资 * 0.15 300 < 总工资 < 450 第一档加税: 基本税 + (总工资 - 300) * 0.20 总工资 > 450 : 基本税 + 第一档加税 + (总工资 - 450) * 0.25 打印 工资总额, 税金 , 净工资 */ #include <stdio.h> #define BASE_T 40 //基本工作时间 #define OVER_T 1.5F //加班时间倍数 #define RATE1 0.15F //第一档税率 #define RATE2 0.20F //第二档税率 #define RATE3 0.25F //第三档税率 #define TAX1 300 //第二档税起征点 #define TAX2 450 //第三档税起征点 #define BASE_TAX1 (TAX1 * RATE1) //第一档税费最大值 #define BASE_TAX2 ((TAX2-TAX1) * RATE2) //第二档税费最大值 void menu(void); int main(void) { float salary; //工资总额 float tax; //税费 int hour; //每周工作小时数 char select; //菜单选项 float BASE_D; //每小时基本工资 int flag = 1; menu(); //打印菜单 while(flag) { select = getchar(); while(getchar() != '\n') //清空缓存 continue; switch(select) //选择税率 { case '1':BASE_D = 8.75F; break; case '2':BASE_D = 9.33F; break; case '3':BASE_D = 10.00F; break; case '4':BASE_D = 11.20F; break; case '5':flag = 5; break; default:flag = 0; } if(flag == 5) break; //选择 5 退出程序 if(!flag) { flag = 1; printf("Please enter a number between 1~5 : "); continue; } printf("Input the weekly working time(hours): "); while(scanf("%d", &hour) != 1) //用户输入每周工作时间 { printf("Invalid character.\nPlease enter a number: "); //非数字重新输入 while(getchar() != '\n') //清空缓存 continue; } salary = 0; //工资总额清零 tax = 0; //税费清零 if(hour < BASE_T) //工作时间小于40小时 salary += hour * BASE_D; else //工作时间大于40小时, 40小时基本工资 + 超出40小时部分的工资 salary += BASE_D * BASE_T + ((hour - BASE_T) * OVER_T) * BASE_D; if(salary <= TAX1) //总工资在300以内, 应交税款 tax += salary * RATE1; else if(salary <= TAX2) //总工资在300~450之间, 应交税款 tax += BASE_TAX1 + (salary - TAX1) * RATE2; else tax += BASE_TAX1 + BASE_TAX2 + (salary - TAX2) * RATE3; //总工资超过450部分, 应交税款 printf("工资总额: %10.2f\n税 金: %10.2f\n净 工 资: %10.2f\n", salary, tax, salary - tax); while(getchar() != '\n') //清空缓存 continue; menu(); //本次计算结束,重新打印菜单 } printf("\nBye~"); return 0; } void menu(void) { printf("*****************************************************************\n"); printf("Enter the number corresponding to the desired pay rate or action:\n"); printf("1) $8.75/hr 2) $9.33/hr\n"); printf("3) $10.00/hr 4) $11.20/hr\n"); printf("5) quit\n"); printf("*****************************************************************\n"); printf("Please select(1 ~ 5): "); }
[ 本帖最后由 Ryker 于 2013-5-3 17:44 编辑 ]