选择结构
选择结构
基本概念
选择结构是程序中的条件判断语句,根据条件的真假选择不同的执行路径,有点类似于电路图中的开关,可以根据不同的条件执行不同的代码,进而帮助我们让代码在不同情况下进行不同的功能。比如说,如果我要写一个自动抢课脚本,这个脚本的大致思路就可以描述为,不断地判断需要抢的课是否已经开放抢课,然后:
-
如果这节课已经开放抢课,就执行抢课的操作;
-
如果这节课还没有开放抢课,就等待一段时间,然后再次判断是否开放抢课。
在这个例子中,我们通过判断条件“需要抢的课已经开放抢课”这个命题的真假来决定接下来要执行的操作,这就是一种典型的选择结构。
C++
C++ 中提供了三种选择结构,分别是:
- if 分支语句系列
- switch 分支语句
- 三目运算符
但是,switch 和三目运算符的功能其实都可以用 if 分支语句来实现,所以我们只介绍 if 分支语句。感兴趣的话,您可以自行了解 switch 和三目运算符的用法。
C++ 简单 if 分支语句
在C++中,if 分支语句的语法如下:
if (条件) {
// 如果条件为真,执行这里的代码
}
例如:
int a = 10;
if (a > 5) {
cout << "a 大于 5" << endl;
}
在这个例子中,我们定义了一个变量 a,然后使用 if 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a is greater than 5。
C++ if-else 分支语句
在C++中,if-else 分支语句的语法如下:
if (条件) {
// 如果条件为真,执行这里的代码
} else {
// 如果条件为假,执行这里的代码
}
例如:
int a = 10;
if (a > 5) {
cout << "a 大于 5" << endl;
} else {
cout << "a 小于等于 5" << endl;
}
在这个例子中,我们定义了一个变量 a,然后使用 if-else 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5;否则,就会输出 a 小于等于 5。
C++ if-else if-else 分支语句
在C++中,if-else if-else 分支语句的语法如下:
if (条件1) {
// 如果条件1为真,执行这里的代码
} else if (条件2) {
// 如果条件1为假,条件2为真,执行这里的代码
} else {
// 如果条件1和条件2都为假,执行这里的代码
}
例如:
int a = 10;
if (a > 5) {
cout << "a 大于 5" << endl;
} else if(a==5){
cout << "a 等于 5" << endl;
}else{
cout << "a 小于 5" << endl;
}
在这个例子中,我们定义了一个变量 a,然后使用 if-else if-else 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5;否则,如果 a 等于 5,就会输出 a 等于 5;如果前面的条件都不满足,则说明 a 小于 5,此时直接输出 a 小于 5 即可。
此外,else if 这一项其实是可以反复使用多次的,比如:
if (条件1) {
// 如果条件1为真,执行这里的代码
} else if (条件2) {
// 如果条件1为假,条件2为真,执行这里的代码
} else if (条件3) {
// 如果条件1,2为假,条件3为真,执行这里的代码
} else if (条件4) {
// 如果条件1,2,3为假,条件4为真,执行这里的代码
} else {
// 如果条件1,2,3,4都为假,执行这里的代码
}
Java
Java 中提供了三种选择结构,分别是:
- if 分支语句系列
- switch 分支语句
- 三目运算符
但是,switch 和三目运算符的功能其实都可以用 if 分支语句来实现,所以我们主要介绍 if 分支语句。感兴趣的话,您可以自行了解 switch 和三目运算符的用法。
Java 简单 if 分支语句
在Java中,if 分支语句的语法如下:
if (条件) {
// 如果条件为真,执行这里的代码
}
例如:
int a = 10;
if (a > 5) {
System.out.println("a 大于 5");
}
在这个例子中,我们定义了一个变量 a,然后使用 if 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5。
Java if-else 分支语句
在Java中,if-else 分支语句的语法如下:
if (条件) {
// 如果条件为真,执行这里的代码
} else {
// 如果条件为假,执行这里的代码
}
例如:
int a = 10;
if (a > 5) {
System.out.println("a 大于 5");
} else {
System.out.println("a 小于等于 5");
}
在这个例子中,我们定义了一个变量 a,然后使用 if-else 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5;否则,就会输出 a 小于等于 5。
Java if-else if-else 分支语句
在 Java 中,if-else if-else 分支语句的语法如下:
if (条件1) {
// 如果条件1为真,执行这里的代码
} else if (条件2) {
// 如果条件1为假,条件2为真,执行这里的代码
} else {
// 如果条件1和条件2都为假,执行这里的代码
}
例如:
int a = 10;
if (a > 5) {
System.out.println("a 大于 5");
} else if (a == 5) {
System.out.println("a 等于 5");
} else {
System.out.println("a 小于 5");
}
在这个例子中,我们定义了一个变量 a,然后使用 if-else if-else 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5;否则,如果 a 等于 5,就会输出 a 等于 5;如果前面的条件都不满足,则说明 a 小于 5,此时直接输出 a 小于 5 即可。
此外,else if 这一项其实是可以反复使用多次的,比如:
if (条件1) {
// 如果条件1为真,执行这里的代码
} else if (条件2) {
// 如果条件1为假,条件2为真,执行这里的代码
} else if (条件3) {
// 如果条件1,2为假,条件3为真,执行这里的代码
} else if (条件4) {
// 如果条件1,2,3为假,条件4为真,执行这里的代码
} else {
// 如果条件1,2,3,4都为假,执行这里的代码
}
Python
Python 中提供了两种选择结构,分别是:
- if 分支语句系列
- 三目运算符(条件表达式) 但是,三目运算符的功能其实可以用 if 分支语句来实现,所以我们主要介绍 if 分支语句。感兴趣的话,您可以自行了解三目运算符的用法。
Python 简单 if 分支语句
在Python中,if 分支语句的语法如下:
if 条件: # 如果条件为真,执行这里的代码
例如:
a = 10
if a > 5:
print("a 大于 5")
在这个例子中,我们定义了一个变量 a,然后使用 if 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5。
需要特别注意的是,Python 使用缩进来表示代码块,而不是像 C++ 和 Java 那样使用大括号。缩进通常是 4 个空格,但只要保持一致即可。
Python if-else 分支语句
在Python中,if-else 分支语句的语法如下:
if 条件:
# 如果条件为真,执行这里的代码
else:
# 如果条件为假,执行这里的代码
例如:
a = 10
if a > 5:
print("a 大于 5")
else:
print("a 小于等于 5")
在这个例子中,我们定义了一个变量 a,然后使用 if-else 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5;否则,就会输出 a 小于等于 5。
Python if-elif-else 分支语句
在Python中,if-elif-else 分支语句的语法如下(注意Python使用elif而不是else if):
if 条件1:
# 如果条件1为真,执行这里的代码
elif 条件2:
# 如果条件1为假,条件2为真,执行这里的代码
else:
# 如果条件1和条件2都为假,执行这里的代码
例如:
a = 10
if a > 5:
print("a 大于 5")
elif a == 5:
print("a 等于 5")
else:
print("a 小于 5")
在这个例子中,我们定义了一个变量 a,然后使用 if-elif-else 分支语句判断 a 是否大于 5。如果 a 大于 5,就会输出 a 大于 5;否则,如果 a 等于 5,就会输出 a 等于 5;如果前面的条件都不满足,则说明 a 小于 5,此时直接输出 a 小于 5 即可。
此外,elif 这一项其实是可以反复使用多次的,比如:
if 条件1:
# 如果条件1为真,执行这里的代码
elif 条件2:
# 如果条件1为假,条件2为真,执行这里的代码
elif 条件3:
# 如果条件1,2为假,条件3为真,执行这里的代码
elif 条件4:
# 如果条件1,2,3为假,条件4为真,执行这里的代码
else:
# 如果条件1,2,3,4都为假,执行这里的代码
例题
例题 1:明天星期几?
题意
给定今天是星期几(用1-7表示周一到周日),请输出明天是星期几。
思路分析
这是一个典型的需要使用选择结构的问题。我们需要根据今天是星期几,来判断明天是星期几。具体来说:
- 如果今天是星期一到星期六(1-6),那么明天就是今天的下一天,即今天的数字加1。
- 如果今天是星期日(7),那么明天就是星期一(1)。
这个问题可以用if-else语句来解决,我们判断输入的数字是否为7,如果是7,则输出1;否则,输出输入的数字加1。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main(){
int day; // 定义变量day表示今天是星期几
cin >> day; // 输入今天是星期几
if (day == 7) { // 如果今天是星期日
cout << 1; // 明天是星期一
} else { // 如果今天不是星期日
cout << day + 1; // 明天是今天的下一天
}
return 0; // 结束程序
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int day = scanner.nextInt(); // 定义变量day表示今天是星期几
if (day == 7) { // 如果今天是星期日
System.out.print(1); // 明天是星期一
} else { // 如果今天不是星期日
System.out.print(day + 1); // 明天是今天的下一天
}
scanner.close();
}
}
day = int(input()) # 定义变量day表示今天是星期几
if day == 7: # 如果今天是星期日
print(1, end="") # 明天是星期一
else: # 如果今天不是星期日
print(day + 1, end="") # 明天是今天的下一天
例题 2:判断闰年
题意
给定一个整数年份 (
),判断这一年是否是闰年。如果是闰年,输出
yes,否则输出 no。
思路分析
这是一个典型的需要使用选择结构的问题。我们需要根据年份是否为闰年来决定输出内容。
根据闰年的判断规则:
- 能被4整除但不能被100整除的年份是闰年
- 能被400整除的年份是闰年
用数学语言表达就是:
- 如果年份能被4整除但不能被100整除,则是闰年
- 或者,如果年份能被400整除,则是闰年
这个问题可以用if-else语句来解决,我们需要判断输入的年份是否满足上述条件之一。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main(){
int year; // 定义变量year表示输入的年份
cin >> year; // 输入年份
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { // 判断是否为闰年
cout << "yes"; // 如果是闰年,输出yes
} else {
cout << "no"; // 如果不是闰年,输出no
}
return 0; // 结束程序
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int year = scanner.nextInt(); // 定义变量year表示输入的年份
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { // 判断是否为闰年
System.out.print("yes"); // 如果是闰年,输出yes
} else {
System.out.print("no"); // 如果不是闰年,输出no
}
scanner.close();
}
}
year = int(input()) # 定义变量year表示输入的年份
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): # 判断是否为闰年
print("yes", end="") # 如果是闰年,输出yes
else:
print("no", end="") # 如果不是闰年,输出no
例题 3:比大小
题意
给定两个整数 和
(
),比较它们的大小关系,并输出相应的符号:若
,输出
<;若 ,输出
=;若 ,输出
>。
思路分析
这是一个典型的需要使用选择结构的问题。我们需要根据两个整数a和b的大小关系,来决定输出什么符号。具体来说:
- 如果a小于b,输出"<"
- 如果a等于b,输出"="
- 如果a大于b,输出">"
这个问题可以用if-else if-else语句来解决,我们需要判断a和b的大小关系,然后根据不同的情况输出不同的符号。
代码实现
#include <bits/stdc++.h>
using namespace std;
int main(){
int a, b; // 定义变量a和b
cin >> a >> b; // 输入a和b
if (a < b) { // 如果a小于b
cout << "<"; // 输出"<"
} else if (a == b) { // 如果a等于b
cout << "="; // 输出"="
} else { // 如果a大于b
cout << ">"; // 输出">"
}
return 0; // 结束程序
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt(); // 定义变量a并输入
int b = scanner.nextInt(); // 定义变量b并输入
if (a < b) { // 如果a小于b
System.out.print("<"); // 输出"<"
} else if (a == b) { // 如果a等于b
System.out.print("="); // 输出"="
} else { // 如果a大于b
System.out.print(">"); // 输出">"
}
scanner.close();
}
}
a, b = map(int, input().split()) # 输入a和b
if a < b: # 如果a小于b
print("<", end="") # 输出"<"
elif a == b: # 如果a等于b
print("=", end="") # 输出"="
else: # 如果a大于b
print(">", end="") # 输出">"
课后习题
汗牛充栋,学海无涯。<br/> 内含算法知识点讲解,以及牛客题库精选例题。<br/> 学习算法,从牛栋开始。

