00.07_选择结构
选择结构
问题描述
选择结构是程序中的条件判断语句,根据条件的真假选择不同的执行路径。它是程序中最基本的分支控制,包括if语句和switch语句两种形式。
基本概念
特点
- 根据条件选择执行路径
- 可以有多个分支
- 程序的执行路径不唯一
- 适用于需要判断的场景
代码实现
- if语句
#include <iostream>
using namespace std;
int main() {
int score;
cout << "请输入分数:";
cin >> score;
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入分数:");
int score = scanner.nextInt();
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
scanner.close();
}
}
score = int(input("请输入分数:"))
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
- switch语句
#include <iostream>
using namespace std;
int main() {
int day;
cout << "请输入星期几(1-7):";
cin >> day;
switch (day) {
case 1:
cout << "星期一" << endl;
break;
case 2:
cout << "星期二" << endl;
break;
case 3:
cout << "星期三" << endl;
break;
case 4:
cout << "星期四" << endl;
break;
case 5:
cout << "星期五" << endl;
break;
case 6:
cout << "星期六" << endl;
break;
case 7:
cout << "星期日" << endl;
break;
default:
cout << "输入错误" << endl;
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入星期几(1-7):");
int day = scanner.nextInt();
switch (day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("输入错误");
}
scanner.close();
}
}
day = int(input("请输入星期几(1-7):"))
# Python没有switch语句,使用字典模拟
week = {
1: "星期一",
2: "星期二",
3: "星期三",
4: "星期四",
5: "星期五",
6: "星期六",
7: "星期日"
}
print(week.get(day, "输入错误"))
# Python 3.10及之后可以使用match case语句
match day:
case 1:
print("星期一")
case 2:
print("星期二")
case 3:
print("星期三")
case 4:
print("星期四")
case 5:
print("星期五")
case 6:
print("星期六")
case 7:
print("星期日")
case _:
print("输入错误")
应用场景
- 条件判断
- 多分支选择
- 异常处理
- 菜单选择
- 状态判断
注意事项
- 条件表达式的书写
- 分支的完整性
- 嵌套层次不宜过深
- break语句的使用
- 代码的可读性
常见示例
- 判断闰年
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int year = 2024;
if (isLeapYear(year)) {
cout << year << "是闰年" << endl;
} else {
cout << year << "不是闰年" << endl;
}
return 0;
}
public class Solution {
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
public static void main(String[] args) {
int year = 2024;
if (isLeapYear(year)) {
System.out.println(year + "是闰年");
} else {
System.out.println(year + "不是闰年");
}
}
}
def is_leap_year(year):
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
# 主程序
year = 2024
if is_leap_year(year):
print(f"{year}是闰年")
else:
print(f"{year}不是闰年")
- 简单计算器
double calculate(double a, double b, char op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return b != 0 ? a / b : 0;
default: return 0;
}
}
int main() {
double a = 10, b = 5;
cout << a << " + " << b << " = " << calculate(a, b, '+') << endl;
cout << a << " - " << b << " = " << calculate(a, b, '-') << endl;
cout << a << " * " << b << " = " << calculate(a, b, '*') << endl;
cout << a << " / " << b << " = " << calculate(a, b, '/') << endl;
return 0;
}
public class Calculator {
public static double calculate(double a, double b, char op) {
switch (op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return b != 0 ? a / b : 0;
default: return 0;
}
}
public static void main(String[] args) {
double a = 10, b = 5;
System.out.println(a + " + " + b + " = " + calculate(a, b, '+'));
System.out.println(a + " - " + b + " = " + calculate(a, b, '-'));
System.out.println(a + " * " + b + " = " + calculate(a, b, '*'));
System.out.println(a + " / " + b + " = " + calculate(a, b, '/'));
}
}
def calculate(a, b, op):
# Python 3.10之前的写法
operations = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y if y != 0 else 0
}
return operations.get(op, lambda x, y: 0)(a, b)
# Python 3.10及之后可以使用match case语句
match op:
case '+':
return a + b
case '-':
return a - b
case '*':
return a * b
case '/':
return a / b if b != 0 else 0
case _:
return 0
# 主程序
a, b = 10, 5
print(f"{a} + {b} = {calculate(a, b, '+')}")
print(f"{a} - {b} = {calculate(a, b, '-')}")
print(f"{a} * {b} = {calculate(a, b, '*')}")
print(f"{a} / {b} = {calculate(a, b, '/')}")
牛客代码笔记-牛栋 文章被收录于专栏
汗牛充栋,学海无涯。<br/> 内含算法知识点讲解,以及牛客题库精选例题。<br/> 学习算法,从牛栋开始。