
到目前为止程序都是从上往下一行行执行。但真正的程序需要判断和重复。本章讲两种控制流条件if/else/switch和循环for/while。5.1 if 语句根据条件做选择if让程序如果条件成立就做某事intscore85;if(score60){std::cout及格了std::endl;}语法结构if(条件){// 条件为 true 时执行这里}(条件)里是一个结果为bool的表达式如score 60。{ }里是条件成立时要执行的语句。5.2 if-else二选一if(score60){std::cout及格std::endl;}else{std::cout不及格std::endl;}else是否则——条件不成立时执行。5.3 if-else if-else多分支if(score90){std::cout优秀std::endl;}elseif(score70){std::cout良好std::endl;}elseif(score60){std::cout及格std::endl;}else{std::cout不及格std::endl;}程序从上往下依次判断遇到第一个成立的就执行并跳出后面的不再判断。5.4 嵌套 ifif里面可以再放ifif(score60){if(score90){std::cout优秀且及格std::endl;}}提示花括号{}能让结构清晰。即使只有一条语句也建议写{}避免出错。5.5 switch 语句等值多分支当要判断一个变量等于哪个具体值时switch比一堆else if更清晰intday3;switch(day){case1:std::cout星期一std::endl;break;case2:std::cout星期二std::endl;break;case3:std::cout星期三std::endl;break;default:std::cout其他std::endl;}要点case 值:匹配某个具体值每个case末尾要写break;跳出 switch否则会穿透继续执行下一个 casedefault:是都不匹配时执行的兜底5.6 while 循环满足条件就重复while循环只要条件为 true就不断重复执行循环体。inti0;while(i5){std::couti ;i;// 关键一定要改变条件变量否则死循环}// 输出0 1 2 3 4执行过程先检查i 5成立就执行循环体打印并i再回来检查直到i变成 5 不满足条件退出。死循环警告如果忘了ii 5永远成立程序会一直转下去卡死。写循环时务必确保条件最终会变成 false。5.7 for 循环最常用的循环for把初始化、条件、更新三件事写在一起最紧凑for(inti0;i5;i){std::couti ;}// 输出0 1 2 3 4结构拆解for(①初始化;②条件;④更新){③循环体}执行顺序是① → ②真→ ③ → ④ → ②真→ ③ → ④ → … 直到 ② 为假。①int i 0循环变量只执行一次②i 5每次循环前检查④i每次循环后更新常见 for 循环用法// 累加 1 到 100intsum0;for(inti1;i100;i){sumi;}std::cout1...100 sumstd::endl;// 5050// 打印 2 的倍数for(inti2;i10;i2){std::couti ;// 2 4 6 8 10}5.8 do-while 循环先做再判断do-while和while的区别先执行一次再判断所以至少执行一次。inti0;do{std::couti ;i;}while(i5);// 输出0 1 2 3 4实际用得较少了解即可。5.9 break 和 continue在循环里有两个控制关键字break立刻跳出整个循环。continue跳过本次循环剩下的部分直接进入下一次循环。// break找到第一个偶数就停止for(inti1;i10;i){if(i%20){std::cout第一个偶数是 istd::endl;// 2break;}}// continue只打印奇数跳过偶数for(inti1;i10;i){if(i%20)continue;// 偶数跳过std::couti ;// 1 3 5 7 9}5.10 完整示例九九乘法表#includeiostreamintmain(){for(inti1;i9;i){// 外层循环行for(intj1;ji;j){// 内层循环列std::coutjxii*j\t;}std::coutstd::endl;// 一行结束换行}return0;}运行会打印出完整的九九乘法表。这段代码展示了嵌套循环外层走一行内层把这一行的每列都走一遍。实际输出每两个算式之间是一个制表符\t这里用空格对齐1x11 1x22 2x24 1x33 2x36 3x39 1x44 2x48 3x412 4x416 1x55 2x510 3x515 4x520 5x525 1x66 2x612 3x618 4x624 5x630 6x636 1x77 2x714 3x721 4x728 5x735 6x742 7x749 1x88 2x816 3x824 4x832 5x840 6x848 7x856 8x864 1x99 2x918 3x927 4x936 5x945 6x954 7x963 8x972 9x981数一数就能看出规律第i行正好有i个算式因为内层循环的条件是j i。5.11 小结条件if/if-else/else if/switch。循环while先判断、for最常用、do-while先执行。break跳出循环continue跳过本次。写循环注意避免死循环条件最终要为 false。下一章学习把代码封装成函数让代码更清晰、可复用。练习题写程序输入或定义一个成绩输出等级优/良/及格/不及格。用 for 循环打印 1 到 100 之间所有偶数。用 while 循环计算 12…nn100。打印九九乘法表运行上面的示例理解嵌套循环。写程序判断一个数是不是质数只能被 1 和自己整除。