C语言典型例题46

《C程序设计教程(第四版)——谭浩强》

题目:


习题3.6 企业发放的奖金根据利润提成。利润I低于或等于100 000元的,奖金可提成10%;
                                      利润高于100 000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;
                                      利润高于200 000元,低于400000元(200000<I≤400000)时,低于200000元的部分仍按上述办法提成(下同),高于200000元的部分,可提成5%;
                                      利润高于400 000元,低于600000元(400000<I≤600000)时,高于400000元的部分,可提成3%;
                                      利润高于600 000元,低于1000000元(600000<I≤1000000)时,高于600000元的部分,可提成1.5%;
                                      利润高于1 000 000元,超过1 000 000元的部分按1%提成。
(1)用if语句编程序;
(2)用switch语句编程序。


代码:

(1)使用if语句

#include <stdio.h>
int main()
{
	float fee=0;//奖金 
	float I=0;//利润
	
	printf("请输入你所为公司创造的利润:\n");
	scanf("%f",&I);
	
	if(I<100000)
	{
		fee=I*0.1;
	}
	else if(I>100000 &&I<=200000)
	{
		fee=100000*0.1+((I-100000)*0.075);
	}
	else if(I>200000 &&I<=400000)
	{
		fee=100000*0.1+((200000-100000)*0.075)+((I-200000)*0.05);
	}
	else if(I>400000 &&I<=600000)
	{
		fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
	}
	else if(I>600000 &&I<=1000000)
	{
		fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
	}
	else
	{
		fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
	}
	
	printf("你所应该得到的奖金为%.2f",fee);
	
	return 0;
}

(2)使用switch语句

//(2)用switch语句编程序。
#include <stdio.h>
int main()
{
	float fee=0;//奖金 
	float I=0;//利润
	float ticheng=0;//提成
	int swit=0;//switch语句的判断条件
	
	printf("请输入你所为公司创造的利润:\n");
	scanf("%f",&I);
	
	if(I<100000)
	{
		swit=1;
	}
	else if(I>100000 &&I<=200000)
	{
		swit=2;
	}
	else if(I>200000 &&I<=400000)
	{
		swit=3;
	}
	else if(I>400000 &&I<=600000)
	{
		swit=4;
	}
	else if(I>600000 &&I<=1000000)
	{
		swit=5;
	}
	else
	{
		swit=6;
	}
	
	switch(swit)
	{
		case 1:
			fee=I*0.1;
			break;
		case 2:
			fee=100000*0.1+((I-100000)*0.075);
			break;
		case 3:
			fee=100000*0.1+((200000-100000)*0.075)+((I-200000)*0.05);
			break;
		case 4:
			fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
			break;
		case 5:
			fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
			break;
		case 6:
			fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
			break;
		default:
			printf("!!!您的输入有误!!!");
	}
	
	printf("你所应该得到的奖金为%.2f",fee);
	
	return 0;
}

(3)汇总

//《C程序设计教程(第四版)——谭浩强》
//习题3.6 企业发放的奖金根据利润提成。利润I低于或等于100 000元的,奖金可提成10%;
//									  利润高于100 000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;
//									  利润高于200 000元,低于400000元(200000<I≤400000)时,低于200000元的部分仍按上述办法提成(下同),高于200000元的部分,可提成5%;
//									  利润高于400 000元,低于600000元(400000<I≤600000)时,高于400000元的部分,可提成3%;
//									  利润高于600 000元,低于1000000元(600000<I≤1000000)时,高于600000元的部分,可提成1.5%;
//									  利润高于1 000 000元,超过1 000 000元的部分按1%提成。
//(1)用if语句编程序;
//(2)用switch语句编程序。

//(1)用if语句编程序;
#include <stdio.h>
int main()
{
	float fee=0;//奖金 
	float I=0;//利润
	
	printf("请输入你所为公司创造的利润:\n");
	scanf("%f",&I);
	
	if(I<100000)
	{
		fee=I*0.1;
	}
	else if(I>100000 &&I<=200000)
	{
		fee=100000*0.1+((I-100000)*0.075);
	}
	else if(I>200000 &&I<=400000)
	{
		fee=100000*0.1+((200000-100000)*0.075)+((I-200000)*0.05);
	}
	else if(I>400000 &&I<=600000)
	{
		fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
	}
	else if(I>600000 &&I<=1000000)
	{
		fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
	}
	else
	{
		fee=100000*0.1+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
	}
	
	printf("你所应该得到的奖金为%.2f",fee);
	
	return 0;
}

//(2)用switch语句编程序。
//#include <stdio.h>
//int main()
//{
//	float fee=0;//奖金 
//	float I=0;//利润
//	float ticheng=0;//提成
//	int swit=0;//switch语句的判断条件
//	
//	printf("请输入你所为公司创造的利润:\n");
//	scanf("%f",&I);
//	
//	if(I<100000)
//	{
//		swit=1;
//	}
//	else if(I>100000 &&I<=200000)
//	{
//		swit=2;
//	}
//	else if(I>200000 &&I<=400000)
//	{
//		swit=3;
//	}
//	else if(I>400000 &&I<=600000)
//	{
//		swit=4;
//	}
//	else if(I>600000 &&I<=1000000)
//	{
//		swit=5;
//	}
//	else
//	{
//		swit=6;
//	}
//	
//	switch(swit)
//	{
//		case 1:
//			fee=I*0.10;
//			break;
//		case 2:
//			fee=100000*0.10+((I-100000)*0.075);
//			break;
//		case 3:
//			fee=100000*0.10+((200000-100000)*0.075)+((I-200000)*0.05);
//			break;
//		case 4:
//			fee=100000*0.10+((200000-100000)*0.075)+((400000-200000)*0.05)+((I-400000)*0.03);
//			break;
//		case 5:
//			fee=100000*0.10+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((I-600000)*0.015);
//			break;
//		case 6:
//			fee=100000*0.10+((200000-100000)*0.075)+((400000-200000)*0.05)+((600000-400000)*0.03)+((1000000-600000)*0.015)+((I-1000000)*0.01);
//			break;
//		default:
//			printf("!!!您的输入有误!!!");
//	}
//	
//	printf("你所应该得到的奖金为%.2f",fee);
//	
//	return 0;
//}

运行结果:

(1)编写if语句的方法的运行结果:

(2)编写switch语句的方法的运行结果:

运行结果的验证:(每一中方法只进行一次)

(1)编写if语句的方法的运行结果验证:

(2)编写switch语句的方法的运行结果验证:

代码编写过程中遇到的问题:

(1)奖金的书写

一定要细心,一步一步来,每一个数字都不能放过。

例如:作者就将一步的0少写了一个,导致验证的答案与编译器算出来的答案始终不同。

也不要不会就用chatGDP,因为AI也会犯错,就比如一个简单的计算它都能算错。。。

(2)脑力里要清楚每一步的步骤

(3)如果出现错误要从前到后一步一步来检查代码,这个时候,使用调试或者在代码某些关键部分添加一些代码,会让你更快速的定位到错误(有很多的错误编译器是不会报警告或者错误的)

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值