c primer plus 第七章

  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美元)。编写一个程序,让用户指定税金种类和应征税收入,然后计算税金。使用循环以便用户可以多次输入。
#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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值