• C++入门03——程序流程结构


    C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构

    • 顺序结构:程序按顺序执行,不发生跳转

    • 选择结构:依据条件是否满足,有选择的执行相应功能

    • 循环结构:依据条件是否满足,循环多次执行某段代码

    1.选择结构

    1.1 if语句

    作用:执行满足条件的语句

    if语句的三种形式

    • 单行格式if语句

    • 多行格式if语句

    • 多条件的if语句

    单行格式if语句:

    if(条件){ 条件满足执行的语句 } 

    1. #include
    2. using namespace std;
    3. int main() {
    4. //选择结构-单行if语句
    5. //输入一个分数,如果分数大于600分,视为考上一本大学,并在屏幕上打印
    6. int score = 0;
    7. cout << "请输入一个分数:" << endl;
    8. cin >> score;
    9. cout << "您刚才输入的分数为:" << score << endl;
    10. // if 语句
    11. // 注意事项,在if判断语句后面,不要加分号
    12. if (score > 600)
    13. {
    14. cout << "可以考上大学!!" << endl;
    15. }
    16. system("pause");
    17. return 0;

     多行格式if语句:

    if(条件){ 条件满足执行的语句 }else{ 条件不满足执行的语句 };

    1. #include
    2. using namespace std;
    3. int main() {
    4. //选择结构-单行if语句
    5. //输入一个分数,如果分数大于600分,视为考上一本大学,并在屏幕上打印
    6. int score = 0;
    7. cout << "请输入一个分数:" << endl;
    8. cin >> score;
    9. cout << "您刚才输入的分数为:" << score << endl;
    10. // if 语句
    11. // 注意事项,在if判断语句后面,不要加分号
    12. if (score > 600)
    13. {
    14. cout << "可以考上大学!!" << endl;
    15. }
    16. else
    17. {
    18. cout << "考不上,回去种地吧!" << endl;
    19. }
    20. system("pause");
    21. return 0;
    22. }

     注意:if条件表达式后不要加分号

     多条件的if语句:

    if(条件1){ 条件1满足执行的语句 }else if(条件2){条件2满足执行的语句}... else{ 都不满足执行的语句}

     实例:

    1. int main() {
    2. int score = 0;
    3. cout << "请输入考试分数:" << endl;
    4. cin >> score;
    5. if (score > 600)
    6. {
    7. cout << "我考上了一本大学" << endl;
    8. }
    9. else if (score > 500)
    10. {
    11. cout << "我考上了二本大学" << endl;
    12. }
    13. else if (score > 400)
    14. {
    15. cout << "我考上了三本大学" << endl;
    16. }
    17. else
    18. {
    19. cout << "我未考上本科" << endl;
    20. }
    21. system("pause");
    22. return 0;
    23. }

     嵌套if语句

    在if语句中,可以嵌套使用if语句,达到更精确的条件判断。

    案例需求:

    • 提示用户输入一个高考考试分数,根据分数做如下判断

    • 分数如果大于600分视为考上一本,大于500分考上二本,大于400考上三本,其余视为未考上本科;

    • 在一本分数中,如果大于700分,考入北大,大于650分,考入清华,大于600考入人大。

    示例:

    1. #include
    2. using namespace std;
    3. int main() {
    4. //选择结构-单行if语句
    5. //输入一个分数,如果分数大于600分,视为考上一本大学,并在屏幕上打印
    6. int score = 0;
    7. cout << "欢迎进入高考志愿填报系统,请输入您的高考分数:" << endl;
    8. cin >> score;
    9. cout << "您刚才输入的分数为:" << score << endl;
    10. // if 语句
    11. // 注意事项,在if判断语句后面,不要加分号
    12. if (score >= 600)
    13. {
    14. cout << "过一本线了!!" << endl;
    15. if (score > 700) {
    16. cout << "去北大吧,都超700了!!" << endl;
    17. }
    18. else if (score > 650) {
    19. cout << "去清华吧!大佬。" << endl;
    20. }
    21. else {
    22. cout << "去人大也还不错!" << endl;
    23. }
    24. }
    25. else if (500 < score )
    26. {
    27. cout << "考上二本,有书读了!!" << endl;
    28. }
    29. else if (400 < score) {
    30. cout << "只能上个三本了。" << endl;
    31. }
    32. else {
    33. cout << "补习吧" << endl;
    34. }
    35. system("pause");
    36. return 0;
    37. }

     

    1.2 三目运算符

    作用: 通过三目运算符实现简单的判断

    语法:表达式1 ? 表达式2 :表达式3

    解释:

    如果表达式1的值为真,执行表达式2,并返回表达式2的结果;

    如果表达式1的值为假,执行表达式3,并返回表达式3的结果。

    示例:

    1. int main() {
    2. int a = 10;
    3. int b = 20;
    4. int c = 0;
    5. c = a > b ? a : b;
    6. cout << "c = " << c << endl;
    7. //C++中三目运算符返回的是变量,可以继续赋值
    8. (a > b ? a : b) = 100;
    9. cout << "a = " << a << endl;
    10. cout << "b = " << b << endl;
    11. cout << "c = " << c << endl;
    12. system("pause");
    13. return 0;
    14. }

    总结:和if语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰

    1.3 switch语句

    作用:执行多条件分支语句

    语法:

    1. switch(表达式)
    2. {
    3. case 结果1:执行语句;break;
    4. case 结果2:执行语句;break;
    5. ...
    6. default:执行语句;break;
    7. }

    实例:

    1. int main() {
    2. //请给电影评分
    3. //10 ~ 9 经典
    4. // 8 ~ 7 非常好
    5. // 6 ~ 5 一般
    6. // 5分以下 烂片
    7. int score = 0;
    8. cout << "请给电影打分" << endl;
    9. cin >> score;
    10. switch (score)
    11. {
    12. case 10:
    13. case 9:
    14. cout << "经典" << endl;
    15. break;
    16. case 8:
    17. cout << "非常好" << endl;
    18. break;
    19. case 7:
    20. case 6:
    21. cout << "一般" << endl;
    22. break;
    23. default:
    24. cout << "烂片" << endl;
    25. break;
    26. }
    27. system("pause");
    28. return 0;
    29. }

    注意1:switch语句中表达式类型只能是整型或者字符型

    注意2:case里如果没有break,那么程序会一直向下执行

    总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间

    2.循环结构

    2.1 while循环语句

     

    1. #include
    2. #include
    3. using namespace std;
    4. int main() {
    5. random_device rd; // 创建一个随机数生成器引擎
    6. mt19937 gen(rd()); // 使用伪随机数生成器
    7. uniform_int_distribution<int> distribution(1, 100); // 创建一个分布,指定随机数范围
    8. int random_number = distribution(gen); // 生成随机数
    9. int guess;
    10. int attempts = 0;
    11. cout << "欢迎来到猜数游戏!" << endl;
    12. while (true)
    13. {
    14. cout << "请猜1~100之间的数字: " << endl;
    15. cin >> guess;
    16. attempts++;
    17. if (guess < 1 || guess > 100) {
    18. cout << "猜的数字不在1-100的范围内,请重试!" << endl;
    19. }
    20. else if (guess < random_number) {
    21. cout << "你猜小了,再猜一猜!" << endl;
    22. }
    23. else if (guess > random_number) {
    24. cout << "你猜大了,再猜一猜!" << endl;
    25. }
    26. else {
    27. cout << "恭喜你猜对了,答案是:" << random_number << "。你猜了"<< attempts<<"次!!" << endl;
    28. break;
    29. }
    30. }
    31. system("pause");
    32. return 0;
    33. }

    2.2 do...while循环语句

     实例:

    1. int main() {
    2. int num = 0;
    3. do
    4. {
    5. cout << num << endl;
    6. num++;
    7. } while (num < 10);
    8. system("pause");
    9. return 0;
    10. }

    总结:与while循环区别在于,do...while先执行一次循环语句,再判断循环条件 。

    例子:计算1到10的累加:

    1. #include
    2. using namespace std;
    3. int main(){
    4. int sum = 0, i = 1;
    5. do {
    6. sum = sum + i;
    7. i++;
    8. } while (i <= 10);
    9. cout << "数字1-10的和为:" << sum << endl;
    10. system("pause");
    11. return 0;
    12. }

    练习案例:水仙花数

    案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身

    例如:1^3 + 5^3+ 3^3 = 153

    请利用do...while语句,求出所有3位数中的水仙花数

     答案1:

    1. #include
    2. using namespace std;
    3. int main() {
    4. int i = 100, ge = 0, shi = 0, bai = 0;
    5. do {
    6. ge = i % 10;
    7. bai = i / 100;
    8. shi = (i - bai * 100) / 10;
    9. if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
    10. cout << "水仙花数:" << i << endl;
    11. }
    12. i++;
    13. } while (i < 1000);
    14. system("pause");
    15. return 0;
    16. }

     

     答案2:

    1. #include
    2. using namespace std;
    3. int main() {
    4. int number = 100; // 从100开始查找三位数
    5. int sum, temp, remainder;
    6. cout << "水仙花数:";
    7. do {
    8. sum = 0;
    9. temp = number;
    10. while (temp > 0) {
    11. remainder = temp % 10; //依次拿到个位,十位,百位
    12. sum += (remainder * remainder * remainder);
    13. temp /= 10; // temp = temp /10
    14. }
    15. if (sum == number) {
    16. cout << number << " ";
    17. }
    18. number++;
    19. } while (number < 1000);
    20. cout << endl;
    21. return 0;
    22. }

    2.3 for循环语句

    作用: 满足循环条件,执行循环语句

    语法:for(起始表达式;条件表达式;末尾循环体) { 循环语句; }

     示例:

    1. int main() {
    2. for (int i = 0; i < 10; i++)
    3. {
    4. cout << i << endl;
    5. }
    6. system("pause");
    7. return 0;
    8. }

    注意:for循环中的表达式,要用分号进行分隔

    总结:while , do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用

    3 跳转语句

    3.1 break语句

    作用: 用于跳出选择结构或者循环结构

    break使用的时机:

    • 出现在switch条件语句中,作用是终止case并跳出switch

    • 出现在循环语句中,作用是跳出当前的循环语句

    • 出现在嵌套循环中,跳出最近的内层循环语句

     示例1:

    1. //1、在switch 语句中使用break
    2. cout << "请选择您挑战副本的难度:" << endl;
    3. cout << "1、普通" << endl;
    4. cout << "2、中等" << endl;
    5. cout << "3、困难" << endl;
    6. int num = 0;
    7. cin >> num;
    8. switch (num)
    9. {
    10. case 1:
    11. cout << "您选择的是普通难度" << endl;
    12. break;
    13. case 2:
    14. cout << "您选择的是中等难度" << endl;
    15. break;
    16. case 3:
    17. cout << "您选择的是困难难度" << endl;
    18. break;
    19. }
    20. system("pause");
    21. return 0;
    22. }

    实例2:

    1. int main() {
    2. //2、在循环语句中用break
    3. for (int i = 0; i < 10; i++)
    4. {
    5. if (i == 5)
    6. {
    7. break; //跳出循环语句
    8. }
    9. cout << i << endl;
    10. }
    11. system("pause");
    12. return 0;
    13. }

    示例3:

    1. int main() {
    2. //在嵌套循环语句中使用break,退出内层循环
    3. for (int i = 0; i < 10; i++)
    4. {
    5. for (int j = 0; j < 10; j++)
    6. {
    7. if (j == 5)
    8. {
    9. break;
    10. }
    11. cout << "*" << " ";
    12. }
    13. cout << endl;
    14. }
    15. system("pause");
    16. return 0;
    17. }

    3.2 continue语句

     作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

     

     示例:

    1. int main() {
    2. for (int i = 0; i < 100; i++)
    3. {
    4. // 如果是奇数则输出,偶数则不输出
    5. if (i % 2 == 0)
    6. {
    7. continue; // 到这就不会再向下执行,以后程序会开始下一次循环
    8. }
    9. cout << i << endl;
    10. }
    11. system("pause");
    12. return 0;
    13. }

    注意:continue并没有使整个循环终止,而break会跳出循环  

    3.3 goto语句

    作用:可以无条件跳转语句

    语法: goto 标记;

    解释:如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

     示例:

    1. int main() {
    2. cout << "1" << endl;
    3. goto FLAG;
    4. cout << "2" << endl;
    5. cout << "3" << endl;
    6. cout << "4" << endl;
    7. FLAG:
    8. cout << "5" << endl;
    9. system("pause");
    10. return 0;
    11. }

    输出:1 5  

    注意:在程序中不建议使用goto语句,以免造成程序流程混乱  

  • 相关阅读:
    LeetCode地平线专场——第308场周赛题解
    Processing通过编程实现艺术设计_实现艺术和现实的交互---数据设计分析002
    2、音视频基础
    升级你的提问技巧:ChatGPT-4o时代,如何让对话更智能?
    Uniapp中嵌入H5( uniapp开发的H5),并且在H5中跳转到APP的指定页面
    帮助命令---学习Linux命令的第一步
    Cannot read properties of undefined (reading ‘resetFields‘)“ 报错解决
    mysql 大表如何ddl
    11. MySQL 备份、恢复
    Nginx跨域解决方案
  • 原文地址:https://blog.csdn.net/m0_55196097/article/details/134035958