1.5 选择结构

到目前为止,我们写过的所有程序都是顺序结构

也就是执行完第一条语句之后,就直接执行第二条

但是很多时候,计算机也需要选择结构

#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;
	···
}

下面我们对同一个例子,分别用这三种形式各写一遍:

有一天,蒋老师让班长小猴给同学整理一下期末考试分数

规则是这样的:

  1. 对0分同学,输出一行FOOLISH

  2. 1-59,输出一行FULL

  3. 61-75,输出一行MEDIUM

  4. 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;
}

现在看来,貌似第三种办法比第一种简单,可是一定是这样吗?

在不同的情境中,不同的语句是各有优劣的。

你可以尝试一下第二种,看看是不是更复杂~

最近的文章

1.4 位运算

运算符作用a=27(10)b=20(10)ans&按位与11011(2)10100(2)10000(2)=16(10)|按位或11011(2)10100(2)11111(2)=31(10)^异或11011(2)10100(2)01111(2)=15(10)~按位非11011(2)无00100…

继续阅读
更早的文章

1.6 循环结构

如果现在让你用计算机判断5是不是3的倍数你会怎么做? #include <cstdio> using namespcae std; int main() { if(5%3 == 1) printf("5是3的倍数"); return 0; }很好。看来你已经掌握了if…

继续阅读