#include<stdio.h> #define PAY_OHOUR 10//每小时的工资 #define WORK_OVERTIME 1.5//加班下的时间倍数 #define NET_TAX_ONE 0.15//<=300工资税率 #define NET_TAX_TWO 0.20//下一个150以内工资的税率 #define NET_TAX_THREE 0.25//扣除450后余下工资的税率 int main() { int work_hour=0;//工作小时数 int add_work_time=0;//加班的小时数 int normal_work_pay=0;//正常上班的总工资 int add_work_pay=0;//加班下的总工资 double tax_normal=0;//税金 double tax_normal_two=0; double tax_unnormal_one=0; double tax_unmormal_two=0; normal_work_pay = work_hour*PAY_OHOUR;//正常上班的工资总额 tax_normal = work_hour*PAY_OHOUR*NET_TAX_ONE;//正常上班收取的税金 add_work_pay = 40 * PAY_OHOUR + (work_hour - 40)*WORK_OVERTIME*PAY_OHOUR;//加班下的工资总额 tax_normal_two = 300 * NET_TAX_ONE + (normal_work_pay - 300)*NET_TAX_TWO; tax_unnormal_one = 300 * NET_TAX_ONE + (add_work_pay - 300)*NET_TAX_TWO; tax_unmormal_two = 300 * NET_TAX_ONE + 150 * NET_TAX_TWO + (add_work_pay - 450)*NET_TAX_THREE; printf("请告诉程序您本周的工作时长:"); while (scanf("%d", &work_hour) == 1) { if (work_hour <= 40 && work_hour > 0) //正常工作下的工资信息 { printf("本周您的上班时长为%d,属于正常上班时长\n", work_hour); printf("正常上班时长下您获得的总工资为:%d\n", normal_work_pay); if(normal_work_pay-300<0) { printf("国家将收取%.2f元税金\n", tax_normal); printf("最后您可得净工资为%.2f\n", normal_work_pay - tax_normal); } else if (normal_work_pay - 300 > 0 && normal_work_pay - 300 <= 100) { printf("国家将收取%.2f元税金\n", tax_normal_two); printf("最后您可得净工资为%.2f\n", normal_work_pay - tax_normal_two); } else break; } else { printf("您本周工作时长为%d,其中%d的时长为加班时长\n", work_hour, work_hour - 40); printf("加班下的工资总额为:%d\n", add_work_pay); if (add_work_pay - 300 > 0 && add_work_pay <= 150) { printf("国家将收取%.2f元税金\n", tax_unnormal_one); printf("最后您可得的净工资为%.2f\n", add_work_pay - tax_unnormal_one); } else { printf("国家将收取%.2f元税金\n", tax_unmormal_two); printf("最后您可得的净工资为%.2f\n", add_work_pay - tax_unmormal_two); } } } return 0; }
大致看了下,没装C编译器,小编译工具win8也编译不了、、、
你这个最明显的错误是 计算在前面了,你是通过键盘敲的 工作时长,应该在while 循环里里面调用的你工资计算,或者把你工资计算的修改为宏定义
#include<stdio.h> #define PAY_OHOUR 10//每小时的工资 #define WORK_OVERTIME 1.5//加班下的时间倍数 #define NET_TAX_ONE 0.15//<=300工资税率 #define NET_TAX_TWO 0.20//下一个150以内工资的税率 #define NET_TAX_THREE 0.25//扣除450后余下工资的税率 int main() { int work_hour=0;//工作小时数 int add_work_time=0;//加班的小时数 int normal_work_pay=0;//正常上班的总工资 int add_work_pay=0;//加班下的总工资 double tax_normal=0;//税金 double tax_normal_two=0; double tax_unnormal_one=0; double tax_unmormal_two=0; printf("请告诉程序您本周的工作时长:"); while (scanf("%d", &work_hour) == 1) { normal_work_pay = work_hour*PAY_OHOUR;//正常上班的工资总额 tax_normal = work_hour*PAY_OHOUR*NET_TAX_ONE;//正常上班收取的税金 add_work_pay = 40 * PAY_OHOUR + (work_hour - 40)*WORK_OVERTIME*PAY_OHOUR;//加班下的工资总额 tax_normal_two = 300 * NET_TAX_ONE + (normal_work_pay - 300)*NET_TAX_TWO; tax_unnormal_one = 300 * NET_TAX_ONE + (add_work_pay - 300)*NET_TAX_TWO; tax_unmormal_two = 300 * NET_TAX_ONE + 150 * NET_TAX_TWO + (add_work_pay - 450)*NET_TAX_THREE; if (work_hour <= 40 && work_hour > 0) //正常工作下的工资信息 { printf("本周您的上班时长为%d,属于正常上班时长\n", work_hour); printf("正常上班时长下您获得的总工资为:%d\n", normal_work_pay); if(normal_work_pay-300<0) { printf("国家将收取%.2f元税金\n", tax_normal); printf("最后您可得净工资为%.2f\n", normal_work_pay - tax_normal); } else if (normal_work_pay - 300 > 0 && normal_work_pay - 300 <= 100) { printf("国家将收取%.2f元税金\n", tax_normal_two); printf("最后您可得净工资为%.2f\n", normal_work_pay - tax_normal_two); } else break; } else { printf("您本周工作时长为%d,其中%d的时长为加班时长\n", work_hour, work_hour - 40); printf("加班下的工资总额为:%d\n", add_work_pay); if (add_work_pay - 300 > 0 && add_work_pay <= 150) { printf("国家将收取%.2f元税金\n", tax_unnormal_one); printf("最后您可得的净工资为%.2f\n", add_work_pay - tax_unnormal_one); } else { printf("国家将收取%.2f元税金\n", tax_unmormal_two); printf("最后您可得的净工资为%.2f\n", add_work_pay - tax_unmormal_two); } } } return 0; }
哦哦,你这个问题是工资改为宏定义
先计算再输出obviously是错的