看一道题目:企业发放的奖金根据利润提成。
利润(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语句的用法。