C PRIMER PLUS(第六版编程练习)7.12编程练习_8题

/*
编写一个程序,提示用户输入一周的工作小时数,然后打印工资总额,税金和净收入。做如下假设
a.基本工资=10.00美元/小时
b.加班(超过40小时)=1.5倍的时间
c.税率:前300美元为15%
		续150美元为20%
		余下的为25%
用#define定义符号常量。不用在意是否符合当前的税法

#include<stdio.h>
#define BASIC_SLY 10.00
#define BASIC_TIME 40
#define OVERTIME 1.5
#define RATE1 0.15
#define RATE2 0.2
#define RATE3 0.25
#define BREAK1 300
#define BREAK2 450
int main(void)
{
	float worktime;
	float salary;
	float taxes;
	float net_pay;

	printf("请输入您的工作时间:");
	scanf("%f", &worktime);
	if (worktime <= 40) {
		salary = 10.00 * worktime;
	}
	else {
		salary = 10.00 * worktime * 1.5;
	}
	if (salary <= BREAK1) {
		taxes = salary * RATE1;
	}
	else if (salary <= BREAK2) {
		taxes = BREAK1 * RATE1 + (salary - BREAK1) * RATE2;
	}
	else {
		taxes = BREAK1 * RATE1 + (BREAK2 - BREAK1) * RATE2 + (salary - BREAK2) * RATE3;
	}
	net_pay = salary - taxes;
	printf("您的工资总额为:%.2f\n", salary);
	printf("您的税金为:%.2f\n", taxes);
	printf("您的净收入为:%.2f\n", net_pay);

	return 0;
}

修改练习七(上面),让程序可以给出一个供选择的工资等级菜单。使用switch完成工资等级选择。运行程序后,显示的菜单应该类似这样:
****************************************************************************
*************
Enter the number corresponding to the desired pay rate or action:
1)$8.75/hr         2)$9.33/hr
3)$10.00/hr        4)11.20/hr
5)quit
****************************************************************************
*************
如果选择1-4其中的一个数字,程序应该询问用户工作的小时数。程序要通过循环运行,除非用户输入5。如果用户输入1-5以为的数字,
程序应提醒用户输入正确的选项,然后再重复菜单提示用户输入。使用#define创建符号常量表示各工资等级和税率。
*/
#include<stdio.h>
//#define BASIC_SLY 10.00
#define BASIC_TIME 40
#define OVERTIME 1.5
#define RATE1 0.15
#define RATE2 0.2
#define RATE3 0.25
#define BREAK1 300
#define BREAK2 450
int main(void)
{
	float worktime;
	float salary;
	float taxes;
	float net_pay;
	float basic_sly;
	int choise;
	printf("****************************************************************************\n");
	printf("*************\n");
	printf("1)$8.75/hr \t\t");
	printf("2)$9.33/hr \n");
	printf("3)$10.00/hr \t\t");
	printf("4)$11.2/hr \n");
	printf("5)quit\n");
	printf("****************************************************************************\n");
	printf("*************\n");
	
	//a:
	if (scanf("%d", &choise) == 1) {
	 if (choise != 5) {
		switch (choise) {
		case 1:basic_sly = 8.75;
			break;
		case 2:basic_sly = 9.33;
			break;
		case 3:basic_sly = 10.00;
			break;
		case 4:basic_sly = 11.20;
		default:while (choise > 5) {
			printf("请输入1-5正确的选项!\n");
			printf("****************************************************************************\n");
			printf("*************\n");
			printf("1)$8.75/hr \t\t");
			printf("2)$9.33/hr \n");
			printf("3)$10.00/hr \t\t");
			printf("4)$11.2/hr \n");
			printf("5)quit\n");
			printf("****************************************************************************\n");
			printf("*************\n");
			scanf("%d", &choise);
		}
			   //	goto a;
		}



		printf("请输入您的工作时间:");
		scanf("%f", &worktime);
		if (worktime <= 40) {
			salary = 10.00 * worktime;
		}
		else {
			salary = 10.00 * worktime * 1.5;
		}
		if (salary <= BREAK1) {
			taxes = salary * RATE1;
		}
		else if (salary <= BREAK2) {
			taxes = BREAK1 * RATE1 + (salary - BREAK1) * RATE2;
		}
		else {
			taxes = BREAK1 * RATE1 + (BREAK2 - BREAK1) * RATE2 + (salary - BREAK2) * RATE3;
		}
		net_pay = salary - taxes;
		printf("您的工资总额为:%.2f\n", salary);
		printf("您的税金为:%.2f\n", taxes);
		printf("您的净收入为:%.2f\n", net_pay);
	}
	}
	else 
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值