10. 1988年United States Federal Tax Schedule是近期最基本的。它分为4类,每类有两个等级。下面是其摘要;美元数为应征税的收入。
┏━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ 种 类 ┃ 税 金 ┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃单身 ┃前17·850美元按15%,超出部分按28% ┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃户主 ┃前23,900美元按15%,超出部分按28%┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃已婚,共有 ┃前29,750美元按15%,超出部分按28% ┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃已婚,离异 ┃前14,875美元按l5%,超出部分按28% ┃
┗━━━━━━┻━━━━━━━━━━━━━━━━━━┛
例如,有20 000美元应征税收入的单身雇佣劳动者应缴税金0.15×17 850美元+0.28×(20 000美元-17 850美元)。编写一个程序,让用户指定税金种类和应征税收入,然后计算税金。使用循环以便用户可以多次输入。
┏━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ 种 类 ┃ 税 金 ┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃单身 ┃前17·850美元按15%,超出部分按28% ┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃户主 ┃前23,900美元按15%,超出部分按28%┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃已婚,共有 ┃前29,750美元按15%,超出部分按28% ┃
┣━━━━━━╋━━━━━━━━━━━━━━━━━━┫
┃已婚,离异 ┃前14,875美元按l5%,超出部分按28% ┃
┗━━━━━━┻━━━━━━━━━━━━━━━━━━┛
例如,有20 000美元应征税收入的单身雇佣劳动者应缴税金0.15×17 850美元+0.28×(20 000美元-17 850美元)。编写一个程序,让用户指定税金种类和应征税收入,然后计算税金。使用循环以便用户可以多次输入。
#include <stdio.h>
#define SINGLE 17850
#define HOST 23900
#define MARRIED 29750
#define MARRIED_DIVORCE 14875
#define RATE1 0.15
#define RATE2 0.28
int main(void)
{
char choice;
int threshold;
double salary,tax;
while(1)
{
printf("Please input your choice\n");
printf("1)SINGLE\t\t2)HOST\n");
printf("3)MARRIED\t\t4)MARRIED_DIVORCE\n");
printf("5)quit\n");
scanf("%c",&choice); //或者改成scanf(" %c",&choice) %c前加个空格表示读取第一个遇到的非空格字符
switch(choice)
{
case '1':threshold=SINGLE;break;
case '2':threshold= HOST;break;
case '3':threshold=MARRIED;break;
case '4':threshold=MARRIED_DIVORCE;break;
case '5':printf("quit\n");return 0;
default:continue;
}
printf("You have chose %c\n",choice);
printf("Please input your salary\n");
scanf("%lf",&salary);
getchar(); //过滤回车
if(salary<= threshold) tax=salary* RATE1;
else tax= threshold* RATE1+(salary-threshold)* RATE2;
printf("Tax is %lf\n",tax);
printf("hello world\n");
}
}
因为回车符被scanf接收了,所以第二次循环时就直接赋值给choice, 在switch语句中直接进入default分支,然后continue了