到目前为止,我们写过的所有程序都是顺序结构
也就是执行完第一条语句之后,就直接执行第二条
但是很多时候,计算机也需要选择结构
#include <cstdio>
using namespace std;
int main()
{
int a;//声明a
scanf("%d", &a);//输入a
if(a % 2 == 0)printf("%d是偶数", a);//判断,如果a除2取余数为0,就输出a是偶数
else printf("%d是奇数", a);//否则输出a是奇数
return 0;
}
上面是一个简单的选择结构示例
其中用到了我们之前没学过的if语句
if(判断条件){
若条件为真执行的语句1;
若条件为真执行的语句2;
···
}
else {
若条件为假执行的语句1;
若条件为假执行的语句2;
···
}
需要注意的是,如果代码块中只有一行,也可以简写大括号,但是我建议还是都写上比较好。
在这里我们可以做几个练习:
1.输入一个年份,判断它是否为闰年,如果是,输出YES,如果不是,输出NO
2.输入一个数字,判断它能否被5整除,如果可以,输出YES,如果不能,输出NO
其实if语句我们可以写成三种:
if(判断条件){
若条件为真执行的语句1;
若条件为真执行的语句2;
···
}
if(判断条件){
若条件为真执行的语句1;
若条件为真执行的语句2;
···
}
else {
若条件为假执行的语句1;
若条件为假执行的语句2;
···
}
if(判断条件){
若条件为真执行的语句1;
若条件为真执行的语句2;
···
}
else if (判断条件2){
若条件为假执行的语句1;
若条件为假执行的语句2;
···
}
else if (判断条件3){
若条件为假执行的语句1;
若条件为假执行的语句2;
···
}
下面我们对同一个例子,分别用这三种形式各写一遍:
有一天,蒋老师让班长小猴给同学整理一下期末考试分数
规则是这样的:
-
对0分同学,输出一行FOOLISH
-
1-59,输出一行FULL
-
61-75,输出一行MEDIUM
-
78-100,输出一行GOOD
你该怎么办呢?
下面先用第一种办法写一遍:
#include <cstdio>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
if(n <= 0){
printf("FOOLISH");
}
if(n < 60 && n >0){
printf("FULL");
}
if(n < 75 && n >= 60){
printf("MEDIUM");
}
if(n > 75){
printf("GOOD");
}
return 0;
}
这里出现了一个新的符号:&&
这个符号的意思是,且
if(命题p&&命题q)
那么只有p和q都为真值时,这个if语句才会执行。
再用第三种方法写一遍:
#include <cstdio>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
if(n <= 0){
printf("FOOLISH");
}
else if(n < 60){
printf("FULL");
}
else if(n < 75){
printf("MEDIUM");
}
else{
printf("GOOD");
}
return 0;
}
现在看来,貌似第三种办法比第一种简单,可是一定是这样吗?
在不同的情境中,不同的语句是各有优劣的。
你可以尝试一下第二种,看看是不是更复杂~