聊城seo整站优化报价,珠海网站开发定制,wordpress播放m3u8,中苏园林建设集团网站四、程序流程结构
C/C支持最基本的三种程序运行结构#xff1a;顺序结构、选择结构、循环结构
顺序结构#xff1a;程序按顺序执行#xff0c;不发生跳转选择结构#xff1a;依据条件是否满足#xff0c;有选择的执行相应功能循环结构#xff1a;依据条件是否满足…四、程序流程结构
C/C支持最基本的三种程序运行结构顺序结构、选择结构、循环结构
顺序结构程序按顺序执行不发生跳转选择结构依据条件是否满足有选择的执行相应功能循环结构依据条件是否满足循环多次执行某段代码
4.1 选择结构
4.1.1 if语句
作用执行满足条件的语句
if语句的三种形式 单行格式if语句 多行格式if语句 多条件的if语句
单行格式if语句if(条件){ 条件满足执行的语句 } 示例
int main() {//选择结构-单行if语句//输入一个分数如果分数大于600分视为考上一本大学并在屏幕上打印int score 0;cout 请输入一个分数 endl;cin score;cout 您输入的分数为 score endl;//if语句//注意事项在if判断语句后面不要加分号if (score 600){cout 我考上了一本大学 endl;}system(pause);return 0;
}注意if条件表达式后不要加分号 多行格式if语句if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 }; 示例
int main() {int score 0;cout 请输入考试分数 endl;cin score;if (score 600){cout 我考上了一本大学 endl;}else{cout 我未考上一本大学 endl;}system(pause);return 0;
}多条件的if语句if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句} 示例
int main() {int score 0;cout 请输入考试分数 endl;cin score;if (score 600){cout 我考上了一本大学 endl;}else if (score 500){cout 我考上了二本大学 endl;}else if (score 400){cout 我考上了三本大学 endl;}else{cout 我未考上本科 endl;}system(pause);return 0;
}嵌套if语句在if语句中可以嵌套使用if语句达到更精确的条件判断
案例需求
提示用户输入一个高考考试分数根据分数做如下判断分数如果大于600分视为考上一本大于500分考上二本大于400考上三本其余视为未考上本科在一本分数中如果大于700分考入北大大于650分考入清华大于600考入人大。
示例
int main() {int score 0;cout 请输入考试分数 endl;cin score;if (score 600){cout 我考上了一本大学 endl;if (score 700){cout 我考上了北大 endl;}else if (score 650){cout 我考上了清华 endl;}else{cout 我考上了人大 endl;}}else if (score 500){cout 我考上了二本大学 endl;}else if (score 400){cout 我考上了三本大学 endl;}else{cout 我未考上本科 endl;}system(pause);return 0;
}练习案例 三只小猪称体重
有三只小猪ABC请分别输入三只小猪的体重并且判断哪只小猪最重 #include iostreamint main() {double weightA, weightB, weightC;// 输入三只小猪的体重std::cout 请输入小猪A的体重: ;std::cin weightA;std::cout 请输入小猪B的体重: ;std::cin weightB;std::cout 请输入小猪C的体重: ;std::cin weightC;// 判断哪只小猪最重if (weightA weightB weightA weightC) {std::cout 小猪A最重体重为 weightA 公斤 std::endl;} else if (weightB weightA weightB weightC) {std::cout 小猪B最重体重为 weightB 公斤 std::endl;} else {std::cout 小猪C最重体重为 weightC 公斤 std::endl;}return 0;
}4.1.2 三目运算符
作用 通过三目运算符实现简单的判断
语法表达式1 ? 表达式2 表达式3
解释
如果表达式1的值为真执行表达式2并返回表达式2的结果
如果表达式1的值为假执行表达式3并返回表达式3的结果。
示例
int main() {int a 10;int b 20;int c 0;c a b ? a : b;cout c c endl;//C中三目运算符返回的是变量,可以继续赋值(a b ? a : b) 100;cout a a endl;cout b b endl;cout c c endl;system(pause);return 0;
}总结和if语句比较三目运算符优点是短小整洁缺点是如果用嵌套结构不清晰 4.1.3 switch语句
**作用**执行多条件分支语句
语法
switch(表达式){case 结果1执行语句;break;case 结果2执行语句;break;...default:执行语句;break;}示例
int main() {//请给电影评分 //10 ~ 9 经典 // 8 ~ 7 非常好// 6 ~ 5 一般// 5分以下 烂片int score 0;cout 请给电影打分 endl;cin score;switch (score){case 10:case 9:cout 经典 endl;break;case 8:cout 非常好 endl;break;case 7:case 6:cout 一般 endl;break;default:cout 烂片 endl;break;}system(pause);return 0;
}注意1switch语句中表达式类型只能是整型或者字符型 注意2case里如果没有break那么程序会一直向下执行 总结与if语句比对于多条件判断时switch的结构清晰执行效率高缺点是switch不可以判断区间 4.2 循环结构
4.2.1 while循环语句
作用满足循环条件执行循环语句
语法while(循环条件){ 循环语句 }
解释只要循环条件的结果为真就执行循环语句 示例
int main() {int num 0;while (num 10){cout num num endl;num;}system(pause);return 0;
}注意在执行循环语句时候程序必须提供跳出循环的出口否则出现死循环 while循环练习案例猜数字
案例描述系统随机生成一个1到100之间的数字玩家进行猜测如果猜错提示玩家数字过大或过小如果猜对恭喜玩家胜利并且退出游戏。 #include iostream
#include cstdlib
#include ctimeint main() {// 设置随机种子std::srand(static_castunsigned int(std::time(0)));// 生成1到100之间的随机数字int secretNumber std::rand() % 100 1;int guess;bool guessed false;std::cout 猜数字游戏开始 std::endl;// 使用while循环进行猜数字游戏while (!guessed) {std::cout 请输入你的猜测1到100之间的整数: ;std::cin guess;if (std::cin.fail()) {// 处理非法输入std::cin.clear(); // 清除输入标志位std::cin.ignore(std::numeric_limitsstd::streamsize::max(), \n); // 忽略缓冲区中的无效输入std::cout 请输入有效的整数。 std::endl;continue;}if (guess 1 || guess 100) {std::cout 请确保输入在1到100之间的整数。 std::endl;continue;}if (guess secretNumber) {std::cout 恭喜你猜对了游戏结束。 std::endl;guessed true;} else if (guess secretNumber) {std::cout 太小了再试试吧。 std::endl;} else {std::cout 太大了再试试吧。 std::endl;}}return 0;
}4.2.2 do…while循环语句
作用 满足循环条件执行循环语句
语法 do{ 循环语句 } while(循环条件);
注意与while的区别在于do…while会先执行一次循环语句再判断循环条件 示例
int main() {int num 0;do{cout num endl;num;} while (num 10);system(pause);return 0;
}总结与while循环区别在于do…while先执行一次循环语句再判断循环条件 练习案例水仙花数
案例描述水仙花数是指一个 3 位数它的每个位上的数字的 3次幂之和等于它本身
例如1^3 5^3 3^3 153
请利用do…while语句求出所有3位数中的水仙花数
#include iostreamint main() {int number 100;std::cout 所有3位数中的水仙花数 std::endl;do {int originalNumber number;int sum 0;// 计算每位数字的三次幂之和do {int digit originalNumber % 10;sum digit * digit * digit;originalNumber / 10;} while (originalNumber 0);// 如果和等于原数字则为水仙花数if (sum number) {std::cout number ;}// 处理下一个3位数number;} while (number 1000);std::cout std::endl;return 0;
}
4.2.3 for循环语句
作用 满足循环条件执行循环语句
语法for(起始表达式;条件表达式;末尾循环体) { 循环语句; }
示例
int main() {for (int i 0; i 10; i){cout i endl;}system(pause);return 0;
}详解 注意for循环中的表达式要用分号进行分隔 总结while , do…while, for都是开发中常用的循环语句for循环结构比较清晰比较常用 练习案例敲桌子
案例描述从1开始数到数字100 如果数字个位含有7或者数字十位含有7或者该数字是7的倍数我们打印敲桌子其余数字直接打印输出。
#include iostreamint main() {for (int number 1; number 100; number) {// 检查个位含有7十位含有7或者是7的倍数if (number % 10 7 || number / 10 7 || number % 7 0) {std::cout 敲桌子 ;} else {std::cout number ;}}std::cout std::endl;return 0;
}4.2.4 嵌套循环
作用 在循环体中再嵌套一层循环解决一些实际问题
例如我们想在屏幕中打印如下图片就需要利用嵌套循环 示例
int main() {//外层循环执行1次内层循环执行1轮for (int i 0; i 10; i){for (int j 0; j 10; j){cout * ;}cout endl;}system(pause);return 0;
}练习案例乘法口诀表
案例描述利用嵌套循环实现九九乘法表 #include iostreamint main() {// 使用嵌套循环生成九九乘法表for (int i 1; i 9; i) {for (int j 1; j i; j) {// 输出乘法表的每一项std::cout j * i i * j \t;}// 换行以显示下一行std::cout std::endl;}return 0;
}4.3 跳转语句
4.3.1 break语句
作用: 用于跳出选择结构或者循环结构
break使用的时机
出现在switch条件语句中作用是终止case并跳出switch出现在循环语句中作用是跳出当前的循环语句出现在嵌套循环中跳出最近的内层循环语句
示例1
int main() {//1、在switch 语句中使用breakcout 请选择您挑战副本的难度 endl;cout 1、普通 endl;cout 2、中等 endl;cout 3、困难 endl;int num 0;cin num;switch (num){case 1:cout 您选择的是普通难度 endl;break;case 2:cout 您选择的是中等难度 endl;break;case 3:cout 您选择的是困难难度 endl;break;}system(pause);return 0;
}示例2
int main() {//2、在循环语句中用breakfor (int i 0; i 10; i){if (i 5){break; //跳出循环语句}cout i endl;}system(pause);return 0;
}示例3
int main() {//在嵌套循环语句中使用break退出内层循环for (int i 0; i 10; i){for (int j 0; j 10; j){if (j 5){break;}cout * ;}cout endl;}system(pause);return 0;
}4.3.2 continue语句
作用在循环语句中跳过本次循环中余下尚未执行的语句继续执行下一次循环
示例
int main() {for (int i 0; i 100; i){if (i % 2 0){continue;}cout i endl;}system(pause);return 0;
}注意continue并没有使整个循环终止而break会跳出循环 4.3.3 goto语句
作用 可以无条件跳转语句
语法 goto 标记;
解释 如果标记的名称存在执行到goto语句时会跳转到标记的位置
示例
int main() {cout 1 endl;goto FLAG;cout 2 endl;cout 3 endl;cout 4 endl;FLAG:cout 5 endl;system(pause);return 0;
}注意在程序中不建议使用goto语句以免造成程序流程混乱