对于if-else-if语句和多个并列的if语句的区别,我就拿实例来给大家看看吧。
例题:输入三个数a,b,c,按要求由小到大的顺序输出?
解析:我们假设a,b,c,已经是由小到大的顺序排列的,我们需要将这三个数每2个比较一下大小关系。
如果a>b 则将a和b的位置互换
如果a>c 则将a和c的位置互换
如果b>c 则将b和c的位置互换
其中要注意的是,当2个变量互换值的时候,我们需要找一个中间变量来进行交换,就好比我们要将2个瓶子里面的水互换,我们还需要另外一个空瓶子3,先将一个瓶子1里面的水倒进空瓶子3,再将瓶子2里面的水倒进瓶子1里面,瓶子3里面的水倒进瓶子2,这样就完成了互换。
解答:首先我们用if-else-if的形式
#include <stdio.h>
void main()
{
int a, b, c, temp;
printf("请输入三个整数:\n");
scanf_s("%d,%d,%d", &a, &b, &c);
if (a > b)
{
temp = a;
a = b;
b = temp;
}
else if (a > c)
{
temp = a;
a = c;
c = temp;
}
else if (b > c)
{
temp = b;
b = c;
c = temp;
}
printf("%d<%d<%d\n", a, b, c);
}
当我们输入4,7,9时,程序输出的结果是正确的
可是当我们输入7,9,3时,程序却出现了错误。
这是为什么呢?我们再试试多个if语句并列的形式
#include <stdio.h>
void main()
{
int a, b, c, temp;
printf("请输入三个整数:\n");
scanf_s("%d,%d,%d", &a, &b, &c);
if (a > b)
{
temp = a;
a = b;
b = temp;
}
if (a > c)
{
temp = a;
a = c;
c = temp;
}
if (b > c)
{
temp = b;
b = c;
c = temp;
}
printf("%d<%d<%d\n", a, b, c);
}
这时候我们再输入7,9,3时,程序的结果是正确的。
这就要谈到他们的区别了,首先并列的多个if语句,程序是会将每个if语句都进行判断,只有为真才会执行if语句后面的语句块,当为假时,就会去执行下一个if语句进行判断,直到所有的if语句都判断完。而if-else-if,就不是并列的关系了,它在一定情况下是不会将整个if语句都进行判断了,当满足一个if语句判断为真,那么它执行完if语句后面的语句块,就会不再执行后面的else-if语句了。所以在输入7,9,3时,a>b不满足,就会执行else后面的if语句进行判断,此时a>c是满足的,就会将a和c的值交换,交换后并不会去执行else后面的if语句进行判断了,b和c的值就无法比较了,因为只有前面一个if语句判断为假才会执行else后面的if语句,继续进行判断,而并列的if语句就不同,都会将所有if语句进行判断一遍。
例题:写一个程序完成以下功能:
1、输入一个分数score
2、score<60 输出F
3、score>=60或者score<70 输出D
4、score>=70或者score<80 输出C
5、score>=80或者score<90 输出B
6、score>=90或者score<=100 输出A
#include <stdio.h>
void main()
{
int score;
printf("请输入你的分数:");
scanf_s("%d", &score);
if (score < 60)
{
printf("你的成绩等级是F!\n");
}
else if (score >= 60 && score < 70)
{
printf("你的成绩等级是D!\n");
}
else if (score >= 70 && score < 80)
{
printf("你的成绩等级是C\n");
}
else if (score >= 80 && score < 90)
{
printf("你的成绩等级是B\n");
}
else if (score >= 90 && score <= 100)
{
printf("你的成绩等级是A\n");
}
}
所以,我们要注意一下这2个的区别及用法。本文章是看完哔哩哔哩的C语言教程视频后写下的一个笔记,其视频链接为https://www.bilibili.com/video/av2831981/?p=12。要是觉得文章不错,就给小编点个赞吧!要是有什么不正确的地方,请在下方给我评论,小编一定虚心请教。