Appearance
C++ 判断
判断语句用于根据条件执行不同的代码块。C++ 提供了以下判断语句:if语句、if-else语句、if-else if-else语句和switch语句。
1. if 语句
if语句在条件为真时执行代码块。
1.1 基本语法
cpp
if (条件) {
// 条件为真时执行的代码
}1.2 示例
cpp
#include <iostream>
int main() {
int age = 18;
if (age >= 18) {
std::cout << "你已经成年了" << std::endl;
}
return 0;
}2. if-else 语句
if-else语句在条件为真时执行一个代码块,在条件为假时执行另一个代码块。
2.1 基本语法
cpp
if (条件) {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}2.2 示例
cpp
#include <iostream>
int main() {
int age = 16;
if (age >= 18) {
std::cout << "你已经成年了" << std::endl;
} else {
std::cout << "你还未成年" << std::endl;
}
return 0;
}3. if-else if-else 语句
if-else if-else语句用于检查多个条件。
3.1 基本语法
cpp
if (条件1) {
// 条件1为真时执行的代码
} else if (条件2) {
// 条件2为真时执行的代码
} else {
// 所有条件都为假时执行的代码
}3.2 示例
cpp
#include <iostream>
int main() {
int score = 85;
if (score >= 90) {
std::cout << "优秀" << std::endl;
} else if (score >= 80) {
std::cout << "良好" << std::endl;
} else if (score >= 70) {
std::cout << "中等" << std::endl;
} else if (score >= 60) {
std::cout << "及格" << std::endl;
} else {
std::cout << "不及格" << std::endl;
}
return 0;
}4. 嵌套 if 语句
if语句可以嵌套使用,即在一个if语句内部再使用另一个if语句。
4.1 示例
cpp
#include <iostream>
int main() {
int age = 20;
bool has_id = true;
if (age >= 18) {
if (has_id) {
std::cout << "你可以进入酒吧" << std::endl;
} else {
std::cout << "你需要出示身份证" << std::endl;
}
} else {
std::cout << "你还未成年" << std::endl;
}
return 0;
}5. switch 语句
switch语句用于根据变量的值执行不同的代码块,适用于多个固定值的情况。
5.1 基本语法
cpp
switch (表达式) {
case 值1:
// 代码块1
break;
case 值2:
// 代码块2
break;
default:
// 默认代码块
}5.2 示例
cpp
#include <iostream>
int main() {
int day = 3;
switch (day) {
case 1:
std::cout << "星期一" << std::endl;
break;
case 2:
std::cout << "星期二" << std::endl;
break;
case 3:
std::cout << "星期三" << std::endl;
break;
case 4:
std::cout << "星期四" << std::endl;
break;
case 5:
std::cout << "星期五" << std::endl;
break;
case 6:
std::cout << "星期六" << std::endl;
break;
case 7:
std::cout << "星期日" << std::endl;
break;
default:
std::cout << "无效的日期" << std::endl;
}
return 0;
}5.3 switch 语句的注意事项
break 语句:每个
case后面通常需要添加break语句,否则会继续执行下一个case的代码(这种现象称为"穿透")。default 分支:
default分支是可选的,用于处理所有case都不匹配的情况。数据类型:
switch语句的表达式只能是整型或枚举类型。
5.4 switch 语句的穿透现象
cpp
#include <iostream>
int main() {
int day = 3;
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
std::cout << "工作日" << std::endl;
break;
case 6:
case 7:
std::cout << "周末" << std::endl;
break;
default:
std::cout << "无效的日期" << std::endl;
}
return 0;
}6. 条件运算符
条件运算符(三元运算符)是if-else语句的简洁形式。
6.1 基本语法
cpp
条件 ? 表达式1 : 表达式26.2 示例
cpp
#include <iostream>
int main() {
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
std::cout << "最大值: " << max << std::endl;
return 0;
}7. 判断的应用示例
7.1 判断闰年
cpp
#include <iostream>
bool is_leap_year(int year) {
if (year % 4 != 0) {
return false;
} else if (year % 100 != 0) {
return true;
} else {
return (year % 400 == 0);
}
}
int main() {
int year = 2024;
if (is_leap_year(year)) {
std::cout << year << " 是闰年" << std::endl;
} else {
std::cout << year << " 不是闰年" << std::endl;
}
return 0;
}7.2 计算器
cpp
#include <iostream>
int main() {
char op;
double num1, num2;
std::cout << "输入运算符 (+, -, *, /): ";
std::cin >> op;
std::cout << "输入两个数字: ";
std::cin >> num1 >> num2;
switch (op) {
case '+':
std::cout << num1 << " + " << num2 << " = " << num1 + num2 << std::endl;
break;
case '-':
std::cout << num1 << " - " << num2 << " = " << num1 - num2 << std::endl;
break;
case '*':
std::cout << num1 << " * " << num2 << " = " << num1 * num2 << std::endl;
break;
case '/':
if (num2 != 0) {
std::cout << num1 << " / " << num2 << " = " << num1 / num2 << std::endl;
} else {
std::cout << "错误:除数不能为零" << std::endl;
}
break;
default:
std::cout << "错误:无效的运算符" << std::endl;
}
return 0;
}7.3 成绩等级评定
cpp
#include <iostream>
char get_grade(int score) {
if (score >= 90) {
return 'A';
} else if (score >= 80) {
return 'B';
} else if (score >= 70) {
return 'C';
} else if (score >= 60) {
return 'D';
} else {
return 'F';
}
}
int main() {
int score;
std::cout << "输入分数: ";
std::cin >> score;
char grade = get_grade(score);
std::cout << "成绩等级: " << grade << std::endl;
return 0;
}8. 示例:综合运用
现在,让我们看一个综合运用各种判断语句的例子:
cpp
#include <iostream>
// 判断闰年
bool is_leap_year(int year) {
if (year % 4 != 0) {
return false;
} else if (year % 100 != 0) {
return true;
} else {
return (year % 400 == 0);
}
}
// 成绩等级评定
char get_grade(int score) {
if (score >= 90) {
return 'A';
} else if (score >= 80) {
return 'B';
} else if (score >= 70) {
return 'C';
} else if (score >= 60) {
return 'D';
} else {
return 'F';
}
}
int main() {
// if 语句
std::cout << "if 语句:" << std::endl;
int age = 18;
if (age >= 18) {
std::cout << "你已经成年了" << std::endl;
}
std::cout << std::endl;
// if-else 语句
std::cout << "if-else 语句:" << std::endl;
age = 16;
if (age >= 18) {
std::cout << "你已经成年了" << std::endl;
} else {
std::cout << "你还未成年" << std::endl;
}
std::cout << std::endl;
// if-else if-else 语句
std::cout << "if-else if-else 语句:" << std::endl;
int score = 85;
if (score >= 90) {
std::cout << "优秀" << std::endl;
} else if (score >= 80) {
std::cout << "良好" << std::endl;
} else if (score >= 70) {
std::cout << "中等" << std::endl;
} else if (score >= 60) {
std::cout << "及格" << std::endl;
} else {
std::cout << "不及格" << std::endl;
}
std::cout << std::endl;
// 嵌套 if 语句
std::cout << "嵌套 if 语句:" << std::endl;
age = 20;
bool has_id = true;
if (age >= 18) {
if (has_id) {
std::cout << "你可以进入酒吧" << std::endl;
} else {
std::cout << "你需要出示身份证" << std::endl;
}
} else {
std::cout << "你还未成年" << std::endl;
}
std::cout << std::endl;
// switch 语句
std::cout << "switch 语句:" << std::endl;
int day = 3;
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
std::cout << "工作日" << std::endl;
break;
case 6:
case 7:
std::cout << "周末" << std::endl;
break;
default:
std::cout << "无效的日期" << std::endl;
}
std::cout << std::endl;
// 条件运算符
std::cout << "条件运算符:" << std::endl;
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
std::cout << "最大值: " << max << std::endl;
std::cout << std::endl;
// 判断闰年
std::cout << "判断闰年:" << std::endl;
int year = 2024;
if (is_leap_year(year)) {
std::cout << year << " 是闰年" << std::endl;
} else {
std::cout << year << " 不是闰年" << std::endl;
}
std::cout << std::endl;
// 成绩等级评定
std::cout << "成绩等级评定:" << std::endl;
score = 85;
char grade = get_grade(score);
std::cout << "分数: " << score << ", 等级: " << grade << std::endl;
return 0;
}小结
C++ 判断语句包括:
if 语句:
- 基本语法:
if (条件) { 代码块 }
- 基本语法:
if-else 语句:
- 基本语法:
if (条件) { 代码块1 } else { 代码块2 }
- 基本语法:
if-else if-else 语句:
- 基本语法:
if (条件1) { 代码块1 } else if (条件2) { 代码块2 } else { 代码块3 }
- 基本语法:
嵌套 if 语句:在一个
if语句内部再使用另一个if语句switch 语句:
- 基本语法:
switch (表达式) { case 值1: 代码块1; break; ... default: 默认代码块; } - 注意事项:
break语句、default分支、数据类型限制
- 基本语法:
条件运算符:
- 基本语法:
条件 ? 表达式1 : 表达式2
- 基本语法:
关键概念:
- 条件表达式:返回布尔值的表达式
- 代码块:由花括号
{}包围的一组语句 - 短路求值:逻辑与和逻辑或运算符具有短路求值的特性
掌握判断语句是编写 C++ 程序的基础,在后续章节中,我们将学习 C++ 的函数。