04_C控制结构C/C支持最基本的三种控制结构顺序结构、选择结构、循环结构顺序结构程序按照顺序一行行从上到下执行不发生任何跳转选择结构根据条件是否满足选择执行不同的代码循环结构根据条件是否满足循环条件循环执行某段代码4.1 选择结构4.1.1 if语句if语句用于判断一个或多个条件执行满足条件的代码段。其有三种使用形式单分支if语句两分支if语句多分支if语句4.1.1.1 单分支if语句if(条件){ 条件满足执行的语句 }示例代码#include iostream using namespace std; int main() { // 选择结构-单分支if语句 // 输入考试成绩如果分支低于60视为不及格并在屏幕上输出 int score 0; cin score; cout score score endl; if (score 60) // 注意这里末尾不要加分好if只管紧随其后的一条代码或代码块 { cout 不及格 endl; } system(pause); return 0; }4.1.1.2 两分支if语句if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 };示例代码#include iostream #include ctime using namespace std; int main() { // 生成一个100以内的随机数如果是偶数就去上班如果不是偶数就睡大觉并输出 srand(unsigned int(time(0))); // 撒随机数种子 int randNum rand() % 100; cout randNum randNum endl; if (randNum % 2 0) { cout go to work endl; } else { cout deep sleep endl; } system(pause); return 0; }4.1.1.3 多分支if语句if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}示例代码#include iostream using namespace std; int main() { // 多分支if实现分数分级输出 // 90分及以上为A // 70-89为B // 60-69为C // 60以下为D int score 0; cin score; cout score score endl; if (score 90) { cout A endl; } else if (score 70 score 90) { cout B endl; } else if (score 60 score 70) { cout C endl; } else { cout D endl; } system(pause); return 0; }4.1.1.4 嵌套if语句在if语句中可以继续使用if语句可以嵌套多个if语句。当然不推荐嵌套层次太深不然读代码很费劲。继续上面的案例现在我们希望将等级为B的分数再细分三等70-79为B-80-84为B85-89为B示例代码#include iostream using namespace std; int main() { int score 0; cin score; cout score score endl; if (score 90) { cout A endl; } else if (score 70 score 90) { if (score 70 score 80) { cout B- endl; } else if (score 80 score 85) { cout B endl; } else { cout B endl; } } else if (score 60 score 70) { cout C endl; } else { cout D endl; } system(pause); return 0; }4.1.1.5 小练习输入三个数字判断哪个数字最大并输出。4.1.2 三目运算符作用通过三目运算符实现简单的判断语法表达式1 ? 表达式2 表达式3解释如果表达式1的值为真执行表达式2并返回表达式2的结果如果表达式1的值为假执行表达式3并返回表达式3的结果。** 示例代码**#include iostream using namespace std; int main() { int a 1, b 2; int c a b ? a : b; // 一句话取a和b中较大的数赋值给c cout c c endl; (a b ? a : b) 100; // 三目运算符返回的是变量可以继续赋值 cout a a endl; cout b b endl; system(pause); return 0; }比起if语句三目运算符在处理简单的逻辑时更加短小简洁4.1.3 switch语句用于执行多条件分支语句示例代码#include iostream using namespace std; int main() { // 给领导打分90分以上为很好80-89为比较好70-79为一般低于70为差劲 int score 0; cin score; cout score score endl; switch (score / 10) { case 9: cout 很好 endl; break; case 8: cout 比较好 endl; break; case 7: cout 一般 endl; break; default: cout 差劲 endl; break; } system(pause); return 0; }注意switch语句中表达式类型只能是整型或者字符型case里如果没有break那么程序会一直向下执行直到遇到第一个break或者switch语句结束4.2 循环结构4.2.1 while循环满足循环条件执行循环体代码段示例代码int main() { int num 0; while (num 10) { cout num num endl; num; } system(pause); return 0; }注意在执行循环语句时候程序必须提供跳出循环的出口否则出现死循环小练习猜数字系统随机生成一个1到100之间的数字玩家进行猜测如果猜错提示玩家数字过大或过小如果猜对恭喜玩家胜利并且退出游戏。4.2.2 do while循环满足循环条件执行循环体代码段与while循环不同的是while循环是先判断循环条件再执行循环体循环体可能一次都不执行do while是先执行一次循环体再判断循环条件循环体至少会被执行一次示例代码int main() { int num 0; do { cout num endl; num; } while (num 10); system(pause); return 0; }小练习寻找水仙花数需求描述水仙花数是指一个 3 位数它的每个位上的数字的 3次幂之和等于它本身例如1^3 5^3 3^3 153请利用do…while语句求出所有3位数中的水仙花数4.2.3 for循环满足循环条件执行循环体代码段for循环应该是用的最多的循环语句示例代码int main() { for (int i 0; i 10; i) // 注意要用分号进行分隔 { cout i endl; } system(pause); return 0; }小练习敲桌子需求描述从1开始数到数字100 如果数字个位含有7或者数字十位含有7或者该数字是7的倍数输出敲桌子其余数字直接输出数字。4.2.4 循环嵌套与if嵌套一样循环语句也是支持嵌套的。支持循环套循环支持if套if支持if套循环支持循环套if……示例代码int main() { for (int i 0; i 10; i) { for (int j 0; j 10; j) { cout * ; } cout endl; } system(pause); return 0; }小练习输出乘法表需求描述利用嵌套循环实现输出九九乘法表4.3 跳转语句4.3.1 break语句用于跳出循环体或者结束switch语句出现在switch条件语句中作用是终止case并跳出switch出现在循环语句中作用是跳出当前的循环语句只能跳出当前循环如有嵌套循环无法全部跳出示例代码1在switch 语句中使用break#include iostream using namespace std; int main() { //1、在switch 语句中使用break int x 2; switch (x) { case 1: cout x 1\n; break; // 跳出 switch case 2: cout x 2\n; break; // 跳出 switch default: cout other value\n; break; // 可选跳出 switch } cout switch 结束后继续执行\n; return 0; }示例代码2在循环语句中用break#include iostream using namespace std; int main() { for (int i 1; i 5; i) { if (i 3) { break; // 当 i 3 时跳出循环 } cout i i endl; } cout 循环结束后继续执行\n; return 0; }示例代码3在嵌套循环语句中使用break只能跳出当前循环#include iostream using namespace std; int main() { for (int i 1; i 3; i) { cout 外层循环 i i endl; for (int j 1; j 3; j) { if (j 2) { break; // 只跳出内层循环 } cout 内层循环 j j endl; } } cout 全部循环结束\n; return 0; }4.3.2 continue语句用于在循环语句中跳过本次循环中余下尚未执行的语句继续执行下一次循环注意continue并没有使整个循环终止只是结束本次循环而break会跳出循环#include iostream using namespace std; int main() { for (int i 1; i 5; i) { if (i 3) { continue; // 跳过 i 3 这一轮 } cout i i endl; } cout 循环结束\n; return 0; }4.3.3 goto语句goto语句用于无条件跳转到程序中指定的标签位置执行代码仅限局部跳转不能跨函数跳转在程序中不建议使用goto语句以免造成程序流程混乱降低代码可读性。但在某些特殊场景下使用goto语句可以简化代码逻辑示例代码#include iostream using namespace std; int main() { int num 0; cout 请输入一个正整数 endl; cin num; if (num 0) { goto error; // 如果输入负数跳转到error标签 } cout 你输入的正整数是 num endl; goto end; // 跳转到end标签结束程序 error: cout 输入错误不能是负数 endl; end: return 0; } 中指定的标签位置执行代码仅限局部跳转不能跨函数跳转 * 在程序中不建议使用goto语句以免造成程序流程混乱降低代码可读性。但在某些特殊场景下使用goto语句可以简化代码逻辑 示例代码 C #include iostream using namespace std; int main() { int num 0; cout 请输入一个正整数 endl; cin num; if (num 0) { goto error; // 如果输入负数跳转到error标签 } cout 你输入的正整数是 num endl; goto end; // 跳转到end标签结束程序 error: cout 输入错误不能是负数 endl; end: return 0; }
04_C++控制结构
发布时间:2026/7/1 1:32:13
04_C控制结构C/C支持最基本的三种控制结构顺序结构、选择结构、循环结构顺序结构程序按照顺序一行行从上到下执行不发生任何跳转选择结构根据条件是否满足选择执行不同的代码循环结构根据条件是否满足循环条件循环执行某段代码4.1 选择结构4.1.1 if语句if语句用于判断一个或多个条件执行满足条件的代码段。其有三种使用形式单分支if语句两分支if语句多分支if语句4.1.1.1 单分支if语句if(条件){ 条件满足执行的语句 }示例代码#include iostream using namespace std; int main() { // 选择结构-单分支if语句 // 输入考试成绩如果分支低于60视为不及格并在屏幕上输出 int score 0; cin score; cout score score endl; if (score 60) // 注意这里末尾不要加分好if只管紧随其后的一条代码或代码块 { cout 不及格 endl; } system(pause); return 0; }4.1.1.2 两分支if语句if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 };示例代码#include iostream #include ctime using namespace std; int main() { // 生成一个100以内的随机数如果是偶数就去上班如果不是偶数就睡大觉并输出 srand(unsigned int(time(0))); // 撒随机数种子 int randNum rand() % 100; cout randNum randNum endl; if (randNum % 2 0) { cout go to work endl; } else { cout deep sleep endl; } system(pause); return 0; }4.1.1.3 多分支if语句if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}示例代码#include iostream using namespace std; int main() { // 多分支if实现分数分级输出 // 90分及以上为A // 70-89为B // 60-69为C // 60以下为D int score 0; cin score; cout score score endl; if (score 90) { cout A endl; } else if (score 70 score 90) { cout B endl; } else if (score 60 score 70) { cout C endl; } else { cout D endl; } system(pause); return 0; }4.1.1.4 嵌套if语句在if语句中可以继续使用if语句可以嵌套多个if语句。当然不推荐嵌套层次太深不然读代码很费劲。继续上面的案例现在我们希望将等级为B的分数再细分三等70-79为B-80-84为B85-89为B示例代码#include iostream using namespace std; int main() { int score 0; cin score; cout score score endl; if (score 90) { cout A endl; } else if (score 70 score 90) { if (score 70 score 80) { cout B- endl; } else if (score 80 score 85) { cout B endl; } else { cout B endl; } } else if (score 60 score 70) { cout C endl; } else { cout D endl; } system(pause); return 0; }4.1.1.5 小练习输入三个数字判断哪个数字最大并输出。4.1.2 三目运算符作用通过三目运算符实现简单的判断语法表达式1 ? 表达式2 表达式3解释如果表达式1的值为真执行表达式2并返回表达式2的结果如果表达式1的值为假执行表达式3并返回表达式3的结果。** 示例代码**#include iostream using namespace std; int main() { int a 1, b 2; int c a b ? a : b; // 一句话取a和b中较大的数赋值给c cout c c endl; (a b ? a : b) 100; // 三目运算符返回的是变量可以继续赋值 cout a a endl; cout b b endl; system(pause); return 0; }比起if语句三目运算符在处理简单的逻辑时更加短小简洁4.1.3 switch语句用于执行多条件分支语句示例代码#include iostream using namespace std; int main() { // 给领导打分90分以上为很好80-89为比较好70-79为一般低于70为差劲 int score 0; cin score; cout score score endl; switch (score / 10) { case 9: cout 很好 endl; break; case 8: cout 比较好 endl; break; case 7: cout 一般 endl; break; default: cout 差劲 endl; break; } system(pause); return 0; }注意switch语句中表达式类型只能是整型或者字符型case里如果没有break那么程序会一直向下执行直到遇到第一个break或者switch语句结束4.2 循环结构4.2.1 while循环满足循环条件执行循环体代码段示例代码int main() { int num 0; while (num 10) { cout num num endl; num; } system(pause); return 0; }注意在执行循环语句时候程序必须提供跳出循环的出口否则出现死循环小练习猜数字系统随机生成一个1到100之间的数字玩家进行猜测如果猜错提示玩家数字过大或过小如果猜对恭喜玩家胜利并且退出游戏。4.2.2 do while循环满足循环条件执行循环体代码段与while循环不同的是while循环是先判断循环条件再执行循环体循环体可能一次都不执行do while是先执行一次循环体再判断循环条件循环体至少会被执行一次示例代码int main() { int num 0; do { cout num endl; num; } while (num 10); system(pause); return 0; }小练习寻找水仙花数需求描述水仙花数是指一个 3 位数它的每个位上的数字的 3次幂之和等于它本身例如1^3 5^3 3^3 153请利用do…while语句求出所有3位数中的水仙花数4.2.3 for循环满足循环条件执行循环体代码段for循环应该是用的最多的循环语句示例代码int main() { for (int i 0; i 10; i) // 注意要用分号进行分隔 { cout i endl; } system(pause); return 0; }小练习敲桌子需求描述从1开始数到数字100 如果数字个位含有7或者数字十位含有7或者该数字是7的倍数输出敲桌子其余数字直接输出数字。4.2.4 循环嵌套与if嵌套一样循环语句也是支持嵌套的。支持循环套循环支持if套if支持if套循环支持循环套if……示例代码int main() { for (int i 0; i 10; i) { for (int j 0; j 10; j) { cout * ; } cout endl; } system(pause); return 0; }小练习输出乘法表需求描述利用嵌套循环实现输出九九乘法表4.3 跳转语句4.3.1 break语句用于跳出循环体或者结束switch语句出现在switch条件语句中作用是终止case并跳出switch出现在循环语句中作用是跳出当前的循环语句只能跳出当前循环如有嵌套循环无法全部跳出示例代码1在switch 语句中使用break#include iostream using namespace std; int main() { //1、在switch 语句中使用break int x 2; switch (x) { case 1: cout x 1\n; break; // 跳出 switch case 2: cout x 2\n; break; // 跳出 switch default: cout other value\n; break; // 可选跳出 switch } cout switch 结束后继续执行\n; return 0; }示例代码2在循环语句中用break#include iostream using namespace std; int main() { for (int i 1; i 5; i) { if (i 3) { break; // 当 i 3 时跳出循环 } cout i i endl; } cout 循环结束后继续执行\n; return 0; }示例代码3在嵌套循环语句中使用break只能跳出当前循环#include iostream using namespace std; int main() { for (int i 1; i 3; i) { cout 外层循环 i i endl; for (int j 1; j 3; j) { if (j 2) { break; // 只跳出内层循环 } cout 内层循环 j j endl; } } cout 全部循环结束\n; return 0; }4.3.2 continue语句用于在循环语句中跳过本次循环中余下尚未执行的语句继续执行下一次循环注意continue并没有使整个循环终止只是结束本次循环而break会跳出循环#include iostream using namespace std; int main() { for (int i 1; i 5; i) { if (i 3) { continue; // 跳过 i 3 这一轮 } cout i i endl; } cout 循环结束\n; return 0; }4.3.3 goto语句goto语句用于无条件跳转到程序中指定的标签位置执行代码仅限局部跳转不能跨函数跳转在程序中不建议使用goto语句以免造成程序流程混乱降低代码可读性。但在某些特殊场景下使用goto语句可以简化代码逻辑示例代码#include iostream using namespace std; int main() { int num 0; cout 请输入一个正整数 endl; cin num; if (num 0) { goto error; // 如果输入负数跳转到error标签 } cout 你输入的正整数是 num endl; goto end; // 跳转到end标签结束程序 error: cout 输入错误不能是负数 endl; end: return 0; } 中指定的标签位置执行代码仅限局部跳转不能跨函数跳转 * 在程序中不建议使用goto语句以免造成程序流程混乱降低代码可读性。但在某些特殊场景下使用goto语句可以简化代码逻辑 示例代码 C #include iostream using namespace std; int main() { int num 0; cout 请输入一个正整数 endl; cin num; if (num 0) { goto error; // 如果输入负数跳转到error标签 } cout 你输入的正整数是 num endl; goto end; // 跳转到end标签结束程序 error: cout 输入错误不能是负数 endl; end: return 0; }