1 /*輸入一周中的作業小時數,然后列印工資總額、稅金以及凈工資。*/
2 #include <stdio.h>
3 #define HOUR 40 //超過40小時為加班
4 #define HOURRATE 1.5 //超過40小時的時間翻倍數
5 #define RATE1 0.15 //前300美元稅率為15%
6 #define RATE2 0.20 //下一個150美元稅率為20%
7 #define RATE3 0.25 //余下的為25%
8 #define BREAK1 300 //稅率的第一個分界點
9 #define BREAK2 450 //稅率的第二個分界點
10 #define BASE1 (BREAK1 * RATE1) //工資為300美元時應交的稅
11 #define BASE2 (BASE1 + (BREAK2 -BREAK1) * RATE2) //工資為450美元時應交的稅
12 void menu (void);
13 char get_first (void);
14
15 int main (void)
16 {
17 double wage; //工資總額
18 double tax; //稅金
19 double netwage; //凈工資
20 double hours; //本周作業小時數
21 double WAGE_HOUR; //每小時的工資
22 char ch;
23 int done = 0;
24
25 while(done == 0)
26 {
27 menu();
28 get_first ();
29 switch (ch)
30 {
31 case 'a': WAGE_HOUR = 8.75;
32 break;
33 case 'b': WAGE_HOUR = 9.33;
34 break;
35 case 'c': WAGE_HOUR = 10.00;
36 break;
37 case 'd': WAGE_HOUR = 11.20;
38 break;
39 case 'e': done = 1;
40 break;
41 default: printf ("Please enter a number from a to e.\n");
42 continue;
43 }
44
45 if (done == 0)
46 {
47 printf ("How long did you work this week?\n");
48 scanf ("%lf", &hours);
49 if (hours <= HOUR)
50 wage = hours * WAGE_HOUR;
51 else
52 wage = HOUR * WAGE_HOUR + (hours - HOUR) * HOURRATE * WAGE_HOUR;
53 if (wage <= BREAK1)
54 tax = wage * RATE1;
55 else if(wage <= BREAK2)
56 tax = BASE1 + (wage - BREAK1) * RATE2;
57 else
58 tax = BASE2 + (wage - BREAK2) * RATE3;
59 netwage = wage - tax;
60 printf ("Your total wage is %lf dollars.\n", wage);
61 printf ("Your tax is %lf dollars.\n", tax);
62 printf ("Your netwage is %lf dollars.\n", netwage);
63 continue;
64 }
65 else
66 break;
67 }
68 printf ("Done!\n");
69
70 return 0;
71 }
72
73 void menu(void)
74 {
75 printf ("*****************************************************************\n");
76 printf ("Enter the number corresponding to the desired pay rate or action:\n");
77 printf ("a) $8.75/hr b) $9.33/hr\n");
78 printf ("c) $10.00/hr d) $11.20/hr\n");
79 printf ("e) quit\n");
80 printf ("*****************************************************************\n");
81 }
82
83 char get_first (void)
84 {
85 int ch;
86
87 while ((ch = getchar()) != '\n')
88 {
89 if (ch < 33)
90 continue;
91 else
92 break;
93 }
94
95 return ch;
96 }
uj5u.com熱心網友回復:
按f會跳出兩個選單,而且按e 不能退出轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283646.html
標籤:新手樂園
上一篇:C語言程式設計題,幫幫忙。
下一篇:線性表做學生通訊錄