c++基础入门day4 - 程序流程结构 📅 2026/7/17 4:54:16 c基础入门day4工具vs2026课程【黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难】4 程序流程结构顺序结构程序按顺序执行选择结构依据条件是否满足有选择地执行相应功能循环结构依据条件是否满足循环多次执行某段代码4.1 选择结构4.1.1 if语句作用执行满足条件的语句单行格式if语句if(条件){条件满足执行的语句}多行格式if语句if(条件){条件满足执行的语句}else{条件不满足执行的语句}多条件的if语句if(条件1){条件1满足执行的语句}else if(条件2){条件2满足执行的语句}…else{都不满足执行的语句}嵌套if语句程序示例提示用户输入一个高考考试分数根据分数做如下判断1如果分数大于600视为考上一本大于500考上二本大于400考上三本其余视为未考上本科2在一本分数中如果分数大于700考入北大大于650考入天大大于600考入河工大。#includeiostreamusingnamespacestd;intmain(){// 用户输入分数// 如果分数大于600视为考上一本大学// 如果大于700在屏幕上输出“恭喜您考上了北大”如果大于650输出“恭喜您考上了天大”否则输出“恭喜您考上了河工大”// 如果分数不大于600但是大于500视为考上二本大学在屏幕上输出“恭喜您考上了二本大学”// 如果分数不大于500但是大于400视为考上三本大学在屏幕上输出“恭喜您考上了三本大学”// 否则在屏幕上输出“很遗憾您没考上大学。”// 1. 用户输入分数intscore0;cout请输入您的分数endl;cinscore;// 2. 打印用户输入的分数cout您输入的分数为scoreendl;// 3. 判断分数if(score600){cout恭喜您考上了一本大学endl;if(score700){cout恭喜您考上了北大endl;}elseif(score650){cout恭喜您考上了天大endl;}else{cout恭喜您考上了河工大endl;}}elseif(score500){cout恭喜您考上了二本大学endl;}elseif(score400){cout恭喜您考上了三本大学endl;}else{cout很遗憾您没考上大学。endl;}system(pause);return0;}练习案例三只小猪称体重有三只小猪ABC请分别输入三只小猪的体重并判断哪知小猪最重#includeiostreamusingnamespacestd;intmain(){// 三只小猪ABCintA0;intB0;intC0;// 输入三只小猪的体重cout请输入小猪A的体重endl;cinA;cout请输入小猪B的体重endl;cinB;cout请输入小猪C的体重endl;cinC;cout小猪A的体重为Aendl;cout小猪B的体重为Bendl;cout小猪C的体重为Cendl;if(AB){if(AC){cout小猪A最重endl;}elseif(AC){cout小猪C最重endl;}else{cout小猪A和C最重endl;}}elseif(BA){if(BC){cout小猪B最重endl;}elseif(BC){cout小猪C最重endl;}else{cout小猪B和C最重endl;}}else{if(BC){cout小猪A和B最重endl;}elseif(BC){cout小猪C最重endl;}else{cout三只小猪一样重endl;}}system(pause);return0;}4.1.2 三目运算符作用通过三目运算符实现简单判断语法表达式1表达式2表达式3如果表达式1为真执行表达式2否则执行表达式3在c中三目运算符返回的是变量可以继续赋值程序示例#includeiostreamusingnamespacestd;intmain(){// 创建三个变量abc// 将a和b作比较将大的赋值给cinta10;intb20;intc0;c(ab?a:b);coutc cendl;// 在c中三目运算符返回的是变量可以继续赋值(ab?a:b)100;couta aendl;coutb bendl;system(pause);return0;}4.1.3 switch语句作用执行多条件分支语法switch(表达式){case 结果1: 执行语句1;break;case 结果2: 执行语句2;break;…default:默认执行语句;break;}case中如果没有break程序会一直向下执行switch与if语句相比缺点在判断时只能是整型或字符型不能是一个区间优点多条件判断时结构清晰执行效率高程序示例#includeiostreamusingnamespacestd;intmain(){// switch语句// 给电影打分// 10~9经典// 9~8非常好// 6~5一般// 5~0烂片intscore0;// 1. 提示用户给电影评分cout请给这部电影评分endl;// 2. 用户输入分数cinscore;cout您打出的分数为scoreendl;// 3. 根据用户输入分数提示用户最后的结果switch(score){case10:cout您认为这是经典电影endl;break;// 如果没有这个break会继续执行下面的语句。break:退出当前分支case9:cout您认为这是经典电影endl;break;case8:cout您认为电影非常好endl;break;case7:cout您认为电影非常好endl;break;case6:cout您认为电影很一般endl;break;case5:cout您认为电影很一般endl;break;default:cout您认为这是个烂片endl;break;}system(pause);return0;}4.2 循环结构4.2.1 while循环语句作用循环条件为真执行循环语句语法while(循环条件){循环语句}要避免写死循环while(1)程序示例#includeiostreamusingnamespacestd;intmain(){// while语句// 在屏幕中打印0~9这10个数字intnum0;while(num10){coutnumendl;num;}system(pause);return0;}练习案例猜数字系统随机生成一个1-100的数字玩家进行猜测如果猜错提示玩家数字过大或过小如果猜对恭喜玩家胜利并退出游戏。提示rand() % 100; //生成0~99的随机数但是这个随机数是伪随机数// 可以添加随机数种子根据当前系统时间生成随机数防止每次随机数一样#include ctimesrand((unsigned int)time(NULL));#includeiostream#includectimeusingnamespacestd;intmain(){// while语句练习案例猜数字// 添加随机数种子根据当前系统时间生成随机数防止每次随机数一样srand((unsignedint)time(NULL));// 系统随机生成一个1-100的数字intnum1rand()%1001;//rand() % 100 会生成0~99的随机数intnum20;inti1;// 玩家进行猜测cout在1~100范围内猜一个数据endl;cinnum2;// 判断玩家猜测如果猜错提示玩家数字过大或过小如果猜对恭喜玩家胜利并退出游戏。while(num2!num1){if(num2num1){cout数字过大请继续猜endl;cinnum2;}else{cout数字过小请继续猜endl;cinnum2;}i;}cout猜对了一共猜了i次恭喜玩家胜利endl;system(pause);return0;}4.2.2 do…while语句语法do{循环语句}while(循环条件);与while语句的区别do…while会先执行一次循环语句再执行判断条件程序示例#includeiostreamusingnamespacestd;intmain(){// do...while语句// 在屏幕中输出0-9这10个数字intnum0;do{coutnumendl;num;}while(num10);system(pause);return0;}练习案例水仙花数水仙花数是指一个3位数它的每个位上的数字的3次幂之和等于它本身例如135333153使用do…while语句求出所有三位数中的水仙花数#includeiostreamusingnamespacestd;intmain(){// 练习案例水仙花数intnum100;inta0;intb0;intc0;intsum0;do{// 分别取得三位数的百位、十位、个位anum/100;b(num-a*100)/10;// num / 10 % 10cnum%10;//判断是否为水仙花数suma*a*ab*b*bc*c*c;if(sumnum){coutnumendl;}num;}while(num1000);system(pause);return0;}4.2.3 for循环作用满足循环条件执行循环语句语句for(起始表达式;条件表达式;末尾循环体){循环语句;}执行顺序起始表达式→条件表达式→循环语句→末尾循环体→条件表达式→循环语句→末尾循环体→条件表达式…程序示例#includeiostreamusingnamespacestd;intmain(){// 练习案例水仙花数intnum100;inta0;intb0;intc0;intsum0;do{// 分别取得三位数的百位、十位、个位anum/100;b(num-a*100)/10;// num / 10 % 10cnum%10;//判断是否为水仙花数suma*a*ab*b*bc*c*c;if(sumnum){coutnumendl;}num;}while(num1000);system(pause);return0;}练习案例敲桌子从1开始到数字100如果数字中含有7或者数字是7的倍数打印敲桌子其余数字直接打印输出。#includeiostreamusingnamespacestd;intmain(){// 练习案例敲桌子for(intnum1;num100;num){if((num%107)||(num/107)||(num%70))//个位是7/十位是7/7的倍数{cout敲桌子endl;}else{coutnumendl;}}system(pause);return0;}4.2.4 嵌套循环作用在循环中嵌套循环解决问题程序示例#includeiostreamusingnamespacestd;intmain(){// 利用嵌套循环实现星图for(inti0;i10;i){for(intj0;j10;j){cout* ;}coutendl;}system(pause);return0;}练习案例乘法口诀表#includeiostreamusingnamespacestd;intmain(){// 利用嵌套循环输出乘法口诀表for(inti1;i10;i){for(intj1;ji;j){coutj * i i*j\t;}coutendl;}system(pause);return0;}4.3 跳转语句4.3.1 break语句作用用于跳出选择结构或循环结构switch语句用于终止case并跳出switch;循环语句跳出循环嵌套循环跳出最近的内层循环语句程序示例#includeiostreamusingnamespacestd;intmain(){// 嵌套循环中的breakfor(inti0;i10;i){for(intj0;j10;j){if(j5){break;}cout* ;}coutendl;}system(pause);return0;}4.3.2 continue语句作用在循环语句中跳过本次循环中余下尚未执行的语句继续执行下一次循环程序示例#includeiostreamusingnamespacestd;intmain(){// 循环中的continue// 如果是奇数输出偶数跳过for(inti0;i100;i){if(i%20){continue;}coutiendl;}system(pause);return0;}4.3 goto语句作用可以无条件跳转语句语法goto 标记;标记:程序示例#includeiostreamusingnamespacestd;intmain(){// goto语句cout1. xxxxxendl;cout2. xxxxxendl;gotoFLAG;cout3. xxxxxendl;cout4. xxxxxendl;FLAG:cout5. xxxxxendl;system(pause);return0;}