学习笔记||C语言:if/else if注意事项

看一道题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10% ;
利润高于10万元,低于20万元时,低于10万元的部分按10% 提成,高于10万元的部分,可提成7.5 % ;
20万到40万之间时,高于20万元的部分,可提成5 % ;
40万到60万之间时高于40万元的部分,可提成3 % ;
60万到100万之间时,高于60万元的部分,可提成1.5 % ;
高于100万元时,超过100万元的部分按1 % 提成。
从键盘输入当月利润I,求应发放奖金总数?
程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成双精度浮点(double)型。

int main()  
{
	double a, b;
	printf("当月利润/万元:");
	scanf_s("%lf", &a);
	if (a <= 10)
	{
		b = 0.1 * a;
	}
	if (10 < a && a <= 20)
	{
		b = 10 * 0.1 + (a - 10) * 0.075;
	}
	if (20 < a && a <= 40)
	{
		b = 10 * 0.1 + 10 * 0.075 + (a - 20) * 0.05;
	}
	if (40 < a && a <= 60)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (a - 40) * 0.03;
	}
	if (60 < a && a <= 100)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (a - 60) * 0.015;
	}
	if (a >= 100)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (a - 100) * 0.01;
	}
	printf("应发奖金:%lf", b);
	return 0;
}

错误示例:

int main()   //if后面的表达式写成10<a<=20,就得不到正确的结果是为什么
{
	double a, b;
	printf("当月利润/万元:");
	scanf_s("%lf", &a);
	if (a <= 10)
	{
		b = 0.1 * a;
	}
	if (10 < a <= 20)
	{
		b = 10 * 0.1 + (a - 10) * 0.075;
	}
	if (20 < a <= 40)
	{
		b = 10 * 0.1 + 10 * 0.075 + (a - 20) * 0.05;
	}
	if (40 < a <= 60)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (a - 40) * 0.03;
	}
	if (60 < a <= 100)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (a - 60) * 0.015;
	}
	if (a >= 100)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (a - 100) * 0.01;
	}
	printf("应发奖金:%lf", b);
	return 0;
}

需要注意,if后面需要接条件表达式
正确:a > 10 && a < 20
错误:10 < a < 20

上面的代码只用了if语句实现,如果使用if…else if该怎么实现呢
先看两个例子了解一下if…else if的用法

利用if..else的嵌套
int score = 78;
if (score == 100)
{
	printf("A\n");
}
else
{
	if (score >= 90)
	{
		printf("B\n");
	}
	else
	{
		if (score >= 80)
		{
			printf("C\n");
		}
		else
		{
			if (score >= 70)
			{
				printf("D\n");
			}
			else
			{
				if (score >= 60)
				{
					printf("E\n");
				}
				else
				{
					printf("F\n");
				}
			}
		}
	}
}
int score = 78;
if (score == 100)
{
	printf("A\n");
}
else if (score >= 90)
{
	printf("B\n");
}
else if (score >= 80)
{
	printf("C\n");
}
else if (score >= 70)
{
	printf("D\n");
}
else if (score >= 60)
{
	printf("E\n");
}
else
{
	printf("F\n");
}

因此我们知道了,else if中排除了第一个if中的情况,因此该题目也可以这么写

int main()  
{
	double a, b;
	printf("当月利润/万元:");
	scanf_s("%lf", &a);
	if (a <= 10)
	{
		b = 0.1 * a;
	}
	else if (a <= 20)
	{
		b = 10 * 0.1 + (a - 10) * 0.075;
	}
	else if (a <= 40)
	{
		b = 10 * 0.1 + 10 * 0.075 + (a - 20) * 0.05;
	}
	else if (a <= 60)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (a - 40) * 0.03;
	}
	else if (a <= 100)
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (a - 60) * 0.015;
	}
	else 
	{
		b = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (a - 100) * 0.01;
	}
	printf("应发奖金:%lf", b);
	return 0;
}

根据上面几个例子应该能较好的理解if语句的用法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值