Appearance
L2_06 多层分支/循环结构
一、多层分支结构
1.1 嵌套 if-else 语句
1.1.1 语法
cpp
if (条件1) {
// 条件1为真时执行
if (条件2) {
// 条件2为真时执行
} else {
// 条件2为假时执行
}
} else {
// 条件1为假时执行
}1.1.2 示例:成绩分级
cpp
#include <iostream>
using namespace std;
int main() {
int score;
cout << "输入成绩: ";
cin >> score;
if (score >= 60) {
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 80) {
cout << "良好" << endl;
} else {
cout << "及格" << endl;
}
} else {
cout << "不及格" << endl;
}
return 0;
}1.2 嵌套 switch 语句
1.2.1 语法
cpp
switch (表达式1) {
case 值1:
switch (表达式2) {
case 值A:
// 代码
break;
default:
// 代码
break;
}
break;
default:
// 代码
break;
}1.2.2 示例
cpp
#include <iostream>
using namespace std;
int main() {
int grade = 1;
int score = 85;
switch (grade) {
case 1:
switch (score / 10) {
case 10:
case 9:
cout << "优秀";
break;
case 8:
cout << "良好";
break;
default:
cout << "继续努力";
break;
}
break;
default:
cout << "未知等级";
break;
}
return 0;
}二、多层循环结构
2.1 嵌套 for 循环
2.1.1 语法
cpp
for (外层初始化; 外层条件; 外层更新) {
for (内层初始化; 内层条件; 内层更新) {
// 循环体
}
}2.1.2 示例:打印乘法表
cpp
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
cout << j << "x" << i << "=" << i*j << "\t";
}
cout << endl;
}
return 0;
}2.2 嵌套 while 循环
2.2.1 语法
cpp
while (外层条件) {
while (内层条件) {
// 循环体
}
}2.2.2 示例:打印矩形
cpp
#include <iostream>
using namespace std;
int main() {
int rows = 3, cols = 5;
int i = 0;
while (i < rows) {
int j = 0;
while (j < cols) {
cout << "* ";
j++;
}
cout << endl;
i++;
}
return 0;
}2.3 混合嵌套循环
2.3.1 示例:打印三角形
cpp
#include <iostream>
using namespace std;
int main() {
int n = 5;
for (int i = 1; i <= n; i++) {
// 打印空格
int j = n - i;
while (j > 0) {
cout << " ";
j--;
}
// 打印星号
for (int k = 1; k <= 2*i-1; k++) {
cout << "*";
}
cout << endl;
}
return 0;
}三、循环控制语句
3.1 break 语句
- 跳出当前循环
3.2 continue 语句
- 跳过本次循环,继续下一次
3.3 示例:查找质数
cpp
#include <iostream>
using namespace std;
int main() {
int num = 29;
bool isPrime = true;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
isPrime = false;
break; // 找到因数,立即退出循环
}
}
cout << (isPrime ? "是质数" : "不是质数") << endl;
return 0;
}