/* 7-7-07-24-12.04.c -- 第七章第七题 */
#include
#define GZXH 40// 基本工作小时
#define CHGZXH 1.5 // 超过基本工作小时的部分的时间比例
#define GZFJ1 300 // 工资分界1
#define GZFJ2 450 // 工资分界2
#define SHUILV1 0.15 // 税率1
#define SHUILV2 0.20 // 税率2
#define SHUILV3 0.25 // 税率3
int main (void)
{
float xiaoshi ;
float gongzi ;
float shui ;
float jinggongzi ;
float gzdj ;
int xuanze ;
printf ("Enter the number corresponding to the desired pay rate or action:\n"
"1) $8.75/hr
2) $9.33/hr\n"
"3) $10.00/hr
4) $11.20/hr\n"
"5) quit\n( )\b\b") ;
while (scanf("%d", &xuanze) == 1 && xuanze != 5)
{
switch (xuanze)
{
case 1 : gzdj = 8.78 ;
break ;
// 跳过其余switch标签
case 2 : gzdj = 9.33 ;
break ;
case 3 : gzdj = 10.00 ;
break ;
case 4 : gzdj = 11.20 ;
break ;
default : printf ("请选择1 - 4.选择5退出程序.\n") ;
printf ("Enter the number corresponding to the desired pay rate or action:\n"
"1) $8.75/hr
2) $9.33/hr\n"
"3) $10.00/hr
4) $11.20/hr\n"
"5) quit\n( )\b\b") ;
continue ;
// switch在while循环中,continue跳过while循环余下部分
// 重新开始下一次循环
}
printf ("请输入小时数:___\b\b\b") ;
while (scanf ("%f", &xiaoshi) == 1 && xiaoshi > 0)
{
if (xiaoshi400)
shui = (float) GZFJ1 * SHUILV1 + (GZFJ2 - GZFJ1) * SHUILV2 + (gongzi - GZFJ1 - GZFJ2) * 0.25 ;
jinggongzi = gongzi - shui ;
}
else if (xiaoshi > GZXH)
{
xiaoshi = GZXH + (xiaoshi - GZXH) * CHGZXH ;
gongzi = xiaoshi * gzdj ;
if (gongzi400)
shui = (float) GZFJ1 * SHUILV1 + (GZFJ2 - GZFJ1) * SHUILV2 + (gongzi - GZFJ1 - GZFJ2) * 0.25 ;
jinggongzi = gongzi - shui ;
}
printf ("工资总额:%.2f美元,税金:%.2f美元,净工资:%.2f美元\n", gongzi, shui, jinggongzi) ;
printf ("Enter the number corresponding to the desired pay rate or action:\n"
"1) $8.75/hr
2) $9.33/hr\n"
"3) $10.00/hr
4) $11.20/hr\n"
"5) quit\n( )\b\b") ;
break ;
// 跳过本次循环余下部分,即回到上级循环
}
// 没有此处的break则反复得到xiaoshi
}
printf ("再见,光荣的劳动者!\n") ;
return 0 ;
}
|