多分支选择结构就是在 if 和 else 之间多了若干 else if ,你可以把 else if 理解成否则如果的意思。
还是用我们学过的知识来对比学习新知识吧。
例题是这样的,从键盘输入一个成绩,成绩在90~100之间输出优秀,成绩在80~89之间输出良好,成绩在60~79之间输出及格,成绩在0~59之间输出不及格,成绩不在0~100之间则给出提示
多个if语句实现如下:
void main()
{
int a;//存储成绩
printf("请输入你的成绩:");
scanf("%d",&a);
if(a>=90&&a<=100)
{
printf("优秀\n");
}
if(a>=80&&a<90)
{
printf("良好\n");
}
if(a>=60&&a<80)
{
printf("及格\n");
}
if(a>=0&&a<60)
{
printf("不及格\n");
}
if(a<0||a>100)
{
printf("成绩应在0~100之间\n");
}
}
这样写可以实现上面的问题,但他们并不是一个if语句实现的,当一个成绩是优秀后,程序还会判断它是不是良好,接着判断是不是几个,再判断是不是不及格还要判断是不是0~100之间,增加了没必要的判断次数,我们写的if条件也有一些啰嗦,好的逻辑是对于这种有多种情况,但只需要选择一种的时候,应该是程序成功走了一条通路后,下面的通路就不用再判断了也不用走了。下面请看多分支版本:
void main()
{
int a;//存储成绩
printf("请输入你的成绩:");
scanf("%d",&a);
if(a<0||a>100)
{
printf("成绩应在0~100之间\n");
}
else if(a>=90)
{
printf("优秀\n");
}
else if(a>=80)
{
printf("良好\n");
}
else if(a>=60)
{
printf("及格\n");
}
else
{
printf("不及格\n");
}
}
首先你还是要明确这是一条if语句。
假如a的值为120时满足if里的条件,输出成绩应在0~100之间,程序执行了这条通路后if语句就结束了,所以下面的else if里的条件程序压根就不会去判断当然else也不会执行。
假如a的值是95时不满足if里的条件,那程序往下走,满足第一个else if 里的条件输出优秀,此时if语句结束,后面的条件就不再判断了else也不执行。这里的条件之所以没写a<=100是因为程序如果能执行到这的话那a肯定是0~100之间的,要是大于100的话那if里的条件就成立了就不会执行到这个else if。
当if和所有的else if里的条件都不满足时才会执行else里的内容。
多分支其实很简单就是向if语句里添加else if ,只不过多分支的条件你需要好好组织一下看看怎么写的更简洁,这需要你多练习一些题目来提高。
值得强调的是多分支结构里的else是对它之前的所有else if 里的条件 和 if里的条件的否定。
在多分支结构里你也可以不加else ,也就是说只有if 和若干个 else if也是可以的。
例如
if(a==1)
{
printf("星期一\n");
}
else if(a==2)
{
printf("星期二\n");
}
else if(a==3)
{
printf("星期三\n");
}
printf("hello\n");
当a=4时这条if语句的三个通路都不通,不会输出星期几,但hello还是会输出的因为printf("hello\n");这句不在if语句作用范围内。
下节我们来学习if语句的嵌套使用。