第二十四课 if语句的嵌套
项目一 【分段函数求值】
从键盘输入x的值(要求为实型),根据公式1计算并输出x和y的值。
代码:
#include <stdio.h>
#include <math.h>
int main()
{
double x,y;
scanf ("%lf",&x);
if(x<2)
y=x;
else if(x<6)
y=x*x+1;
else if(x<10)
y=sqrt(x+1);
else
y=1/(x+1);
printf ("y=%lf",y);
return 0;
}
运行结果:
项目二【油量监控】
设计一个程序,用于赛车油量的监控。该程序在赛车油量偏低(少于1/4,即0.25)时,警示车手应该注意;在油箱接近满载(不低于3/4)时,提示提手不要停车。而对于其他情况下,不提示任何信息,以免车手分心。
请设计出这个程序来,输入油量刻度(0-1之内的数,如0.21),提示相应信息,如果需要的话。
提示:下面显示了几种情况,注意对程序的完整测试。
代码
#include <stdio.h>
int main()
{
double r;
printf("请输入油量表读数(0-1):");
scanf ("%lf",&r);
if (r<0.25)
printf ("油量偏低,请注意!");
else if (r<0.75)
printf ("油量正常,不必停车。");
else
printf ("油量充足,不用担心。");
return 0;
}
运行结果
项目三【一元二次方程全解】
(x^2代表x的平方)
有一方程ax^2+bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解。
(1) a=0,b≠0时, 解为-c/b
(2) a=0,b=0,c=0, 解为任意值
(3) a=0,b=0,c≠0, 无解
(4) a≠0,b^2-4ac≥0, 有两个实根
(5) a≠0,b^2-4ac≤0, 有两个虚根
代码
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,d=b*b-4*a*c,x1,x2;
printf("请输入a,b,c的值:");
scanf ("%f %f %f",&a,&b,&c);
if (a==0)
{
if (b!=0)
printf("x1=x2=%f\n",-c/b);
else
{
if(c==0)
printf("x的值为任意值。\n");
else
printf("方程式无解。\n");
}
}
else
{
if ((b*b-4*a*c)>=0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
else
{
x1=-b/(2*a);
x2=sqrt(-d)/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
}
return 0;
}
运行结果
项目四 【个人所得税计算器if语句版】
编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识)。
(1)用if语句的嵌套完成;
(2)可以在下面程序的基本框架基础上完成,如需其他变量自行增加
附:关于个人所得税的有关背景知识
计算方法:个人所得税=(收入总额-3500)*税率-速算扣除数
从2011年9月1日起,我国个人所得税起征点基数为3500元,超出部分按以下7级计算。
序号 | 收入范围 | 税率 | 速算扣除数 |
1 | 超过0至1500 | 3% | 0 |
2 | 超过1500元至4500元的部分 | 10% | 105 |
3 | 超过4500元至9000元的部分 | 20% | 555 |
4 | 超过9,000元至35,000元的部分 | 25% | 1005 |
5 | 超过35,000元至55,000元的部分 | 30% | 2755 |
6 | 超过55,000元至80,000元的部分 | 35% | 5505 |
7 | 超过80,000以上 | 45% | 13505 |
例如:王某月收入总额3600元,个人所得税=(3600-3500)*3%=3元;
再例:李某月收入13500元,个人所得税=(13500-3500)*25%-1005=2500-1005=1495元。
代码
#include <stdio.h>
int main()
{
double dSalary,dTax=0,dNetIncome=0,dValue,dRate;
int dOffset;
printf("请输入您本月的收入总额(元):");
scanf ("%lf",&dSalary);
dValue=dSalary-3500;
if(dValue<=0.0){
dTax=0;
printf("您不需要缴税。\n");
}
else
{
if(dValue<=1500)
dRate=0.03,dOffset=0;
else if(dValue<=4500)
dRate=0.10,dOffset=105;
else if(dValue<=9000)
dRate=0.20,dOffset=555;
else if(dValue<=35000)
dRate=0.25,dOffset=1005;
else if(dValue<=55000)
dRate=0.3,dOffset=2755;
else if(dValue<=80000)
dRate=0.35,dOffset=5505;
else
dRate=0.45,dOffset=13505;
dTax=dValue*dRate-dOffset;
dNetIncome=dSalary-dTax;
printf("您本月应缴个人所得税%0.2lf元,税后收入为:%0.2lf元。\n",dTax,dNetIncome);
}
printf("依法纳税,共享繁荣。谢谢使用!\n");
return 0;
}
运行结果
知识点和心得:
因为条件语句是划分条件的,所以条件非常多的情况下,要明白各条件之间的关系,之间出现的正反逻辑明白原理就好懂了、
116