/*
这题有个疑问:
const double BASE1=BREAK1*RATE1; //第二个分界点前总共要缴的税收
const double BASE2=BASE1+(BREAK2-BREAK1)*RATE2; //第三个分界点前总共要缴的税收
为什么只有移到子函数里面有用,放开头提示错误!提示:initializer is not a constant
*/
#include<stdio.h>
const double HOURLYPAID=10; //每个小时的薪水
const double TIMEBREAK=40; //工时的分界点
const double COEFFICIENT=1.5; //工时的系数
const double RATE1=0.15; //税率
const double RATE2=0.2; //税率
const double RATE3=0.25; //税率
const double BREAK1=300; //税收分界点
const double BREAK2=600; //税收分界点
//const double BASE1=BREAK1*RATE1; //第二个分界点前总共要缴的税收
//const double BASE2=BASE1+(BREAK2-BREAK1)*RATE2; //第三个分界点前总共要缴的税收
void choose_1();
void stars();
int choose_screen();
int main(void)
{
int i = 0;
while(i!=5)
{
i = choose_screen();
switch(i)
{
case 1:
case 2:
case 3:
case 4:choose_1();continue;
case 5:printf("谢谢使用
");break;
default:
printf("输入错误,请输入1~5的整数");
}
}
return 1;
}
int choose_screen()
{
int i;
stars();
printf("请选择工资等级,退出请按5
") ;
printf("1)$8.75/hr 2)$9.33/hr
");
printf("3)$10.00/hr 4)$11.20/hr
");
printf("5)quit
");
stars();
scanf("%d",&i);
return i;
}
void stars()
{
printf("*************************************************
");
}
void choose_1()
{
const double BASE1=BREAK1*RATE1; //第二个分界点前总共要缴的税收
const double BASE2=BASE1+(BREAK2-BREAK1)*RATE2; //第三个分界点前总共要缴的税收
double time; //工时
double salary; //总收入
double tax; //税收
double profit; //净利润
printf("请输入一周的工作小时数: ");
scanf("%lf", &time);
if(time>TIMEBREAK) //如果工作时间超过40个小时
time=(time-TIMEBREAK)*COEFFICIENT+TIMEBREAK;
salary=HOURLYPAID*time;
if(salary<=BREAK1)
tax=salary*RATE1;
else if(salary<=BREAK2)
tax=BASE1+(salary-BREAK1)*RATE2;
else
tax=BASE2+(salary-BREAK2)*RATE3;
profit=salary-tax;
printf("工资总额是: %lf
", salary);
printf("税金是: %lf
", tax);
printf("净工资是: %lf
", profit);
}
//******************************************************************
//......................................................
//.....................................................
//编辑器用的是http://www.pc6.com/softview/SoftView_51072.html下载的
因为编辑器不支持c99标准。--之后知道的