当前位置: 首页 > news >正文

C++零基础第四天:顺序、选择与循环结构详解

一、程序三大基本运行结构

        在 C/C++ 中,支持三种核心程序运行结构,是所有程序逻辑的基础:

  1. 顺序结构:程序按代码书写顺序依次执行,无跳转,是最基础的执行方式
  2. 选择结构:根据条件是否满足,选择性执行不同功能模块(如 “ 满足条件 A 则做 X,否则做 Y ”)
  3. 循环结构:根据条件是否满足,重复执行某段代码(如 “ 条件成立时,反复执行 X 操作 ”)

二、选择结构

        选择结构用于实现 “ 分支逻辑 ”,核心是 “ 根据条件做判断 ”,主要包含 3 种实现方式:

2.1 if 语句

作用

        根据条件真假,执行对应代码块,分三种格式:

1. 单行格式 if 语句
  • 适用场景:仅需在条件成立时执行 1 条语句
  • 语法
if (条件表达式) { 执行语句; }(注意:条件后不要加分号,否则会导致逻辑错误)
  • 示例:输入分数,若 ≥ 60 则输出 “ 及格 ”
#include <iostream>
using namespace std;int main()
{//选择结构 单行 if 语句//输入一个数,若大于等于60则输出及格,否则输出不及格//1.输入int score = 0;cout << "请输入一个分数" << endl;cin >> score;//2.判断是否大于60if(score >= 60)//if条件后面不要加分号{//3.输出cout << "及格" << endl;}system("pause");return 0;
}
2. 多行格式 if 语句
  • 适用场景:条件成立与不成立时,分别执行不同逻辑(二选一)
  • 语法
if(条件表达式) 
{ 条件成立执行的语句; 
}
else 
{ 条件不成立执行的语句; 
}
  • 示例:输入分数,≥ 60 输出 “ 及格 ”,否则输出 “ 不及格 ”(在单行示例基础上增加 else 块)
#include <iostream>
using namespace std;int main()
{//选择结构 单行 if 语句//输入一个数,若大于等于60则输出及格,否则输出不及格//1.输入int score = 0;cout << "请输入一个分数" << endl;cin >> score;//2.判断是否大于60if(score >= 60)//if条件后面不要加分号{//3.输出cout << "及格" << endl;}else{cout << "不及格" << endl;}system("pause");return 0;
}

3. 多条件 if 语句
  • 适用场景:需要判断多个条件(多选一),如分数分级(不及格 / 及格 / 优秀)
  • 语法
if(条件1) { 条件1成立执行; }
else if(条件2) { 条件2成立执行; }
else if(条件3) { 条件3成立执行; }
// 可继续添加else if,最后可加else处理所有不满足的情况
  • 注意:条件判断有顺序性,需避免 “ 前面条件覆盖后面条件 ”(如示例中先判断 < 60,再判断 ≥ 60 & < 90,最后 ≥ 90)
  • 示例:分数分级判断
#include <iostream>
using namespace std;int main()
{//选择结构 单行 if 语句//输入一个数,若大于等于60则输出及格,否则输出不及格//1.输入int score = 0;cout << "请输入一个分数" << endl;cin >> score;//2.判断是否大于60if(score < 60)//if条件后面不要加分号{//3.输出cout << "不及格" << endl;}else if(score >= 60 && score < 90){cout << "及格" << endl;}else if(score >= 90){cout << "优秀" << endl;}else if(score > 100){cout << "错误!" << endl;}system("pause");return 0;
}

2.2 三目运算符

作用

        通过简洁语法实现 “ 二选一 ” 判断,可替代简单的 if - else

语法
表达式1 ? 表达式2 : 表达式3
  • 逻辑:若 表达式 1 为真,执行表达式 2 并返回其结果;若为假,执行表达式 3 并返回其结果
核心特点
  • 返回值是变量(C++ 特性):可直接赋值给其他变量,甚至直接对返回的变量赋值
示例
#include <iostream>
using namespace std;int main()
{//创建三个变量abc//将a和b做比较,将变量大的值赋值给变量cint a,b,c;a = 10;b = 20;c = 0;c = (a > b ? a : b);cout << "c = " << c << endl;//20//在C++中,三目运算符返回的是变量,可以继续赋值(a > b ? a : b) = 100;cout << "a = " << a << endl;//10cout << "b = " << b << endl;//100system("pause");return 0;
}

2.3 switch 语句

作用

        实现 “ 多条件分支 ”,适用于 “ 判断变量是否等于多个固定值 ” 的场景(如菜单选择、状态码判断)

语法
switch (判断变量) 
{ // 判断变量只能是整型或字符型(不能是区间或浮点型)case 值 1: // 若变量 == 值 1,执行此 case 下的语句执行语句1;break; // 跳出switch,避免 “ 穿透 ” 到下一个casecase 值 2:执行语句 2;break;// 可添加多个casedefault: // 所有 case 都不匹配时执行(可选)默认执行语句;break;
}
关键注意点
  • break 的作用:必须在每个 case 末尾加 break,否则会执行完当前 case 后,继续执行下一个 case( “ case 穿透 ” )
  • 与 if 的区别
    • 缺点:仅支持 “ 变量 == 固定值 ” 的判断,不能判断区间(如 score > 60)
    • 优点:结构清晰,执行效率高(尤其分支较多时)
示例
#include <iostream>
using namespace std;int main()
{//1.输入分数int score = 0;cout << "请输入 1 || 2 || 3:";cin >> score;cout << "输入为:" << score << endl;//2.根据输入分数得出结果switch(score){case 1:cout << "结果:1" << endl;break;//退出当前分支case 2:cout << "结果:2" << endl;break;case 3:cout << "结果:3" << endl;break;default:cout << "错误!" << endl;break;}system("pause");return 0;
}

三、循环结构

        循环结构用于 “ 重复执行某段代码 ”,核心是 “ 控制循环的开始与结束 ”,主要有 4 种实现方式:

3.1 while 循环

作用

        “ 先判断,后执行 ”:先检查循环条件,若成立则执行循环体

语法
while(循环条件) { 循环语句; }
  • 逻辑:只要循环条件为真,就反复执行循环体;直到条件为假,退出循环
关键注意点
  • 避免死循环:循环体中必须有 “ 让循环条件逐渐变为假 ” 的语句(如变量自增 / 自减)
示例:打印 0~9
#include <iostream>
using namespace std;int main()
{//while循环//打印 0 ~ 9int num = 0;while(num < 10){cout << num << endl;num++;}//注意事项:避免产生死循环system("pause");return 0;
}

3.2 do...while 循环

作用

        “ 先执行,后判断 ”:无论条件是否成立,先执行 1 次循环体,再检查条件

语法
do {循环语句;
} while(循环条件); // 注意末尾有分号
与 while 的核心区别
  • while:可能 1 次都不执行(若条件一开始就假)
  • do...while:至少执行 1 次(先执行,再判断)
示例:打印 0~9
#include <iostream>
using namespace std;int main()
{//输出 0 ~ 9int num = 0;do{cout << num << endl;num++;}while(num < 10);system("pause");return 0;
}

3.3 for 循环

作用

        “ 初始化、判断、更新 ” 三合一:将循环的三个核心步骤(循环变量初始化、循环条件、循环变量更新)集中在一行,结构更紧凑

语法
for(起始表达式 ; 条件表达式 ; 末尾循环体) { 循环语句; }
  • 起始表达式:初始化循环变量(如 int i = 0),仅执行 1 次
  • 条件表达式:循环的判断条件(如 i < 10),每次循环前检查,成立则执行循环体
  • 末尾循环体:更新循环变量(如 i++),每次循环体执行完后执行
灵活用法
  • 可省略部分表达式(但分号不能省),如for(;;)表示无限循环(需在循环体内用 break 退出)
示例:打印 0~9(两种方法)
#include <iostream>
using namespace std;int main()
{//使用for循环,打印0~9//方法一for(int i = 0 ; i < 10 ; i++){cout << i << endl;}//方法二int i = 0;for(;;){if(i >= 10){break;}else{cout << i << endl;i++;}}system("pause");return 0;
}

3.4 嵌套循环

作用

        在一个循环的循环体中,再嵌套另一个循环,用于解决 “ 多维重复 ” 问题(如打印矩阵、星号图形)

核心逻辑
  • 外层循环执行 1 次,内层循环执行完整的一轮(直到内层循环条件不成立)
示例:打印 5 行 10 列的星号(*****...)
#include <iostream>
using namespace std;int main()
{//打印一行星图for(int i = 0 ; i < 5 ; i++){for(int j = 0 ; j < 10 ; j++){cout << "*";}cout << endl;}//外层执行一次,内层执行一周system("pause");return 0;
}

四、跳转语句

        跳转语句用于 “ 改变程序的正常执行顺序 ”,主要有 3 种:

4.1 break 语句

作用

        “ 强制跳出 ” 当前所在的结构(选择结构或循环结构)

适用场景
  1. switch 语句中:跳出当前 case,终止 switch 的执行(避免 case 穿透)
  2. 单层循环中:直接跳出当前循环,循环不再执行
  3. 嵌套循环中:仅跳出最近的内层循环,外层循环继续执行
示例(嵌套循环中使用 break)
#include <iostream>
using namespace std;int main()
{//break 的使用时机//出现在 switch 条件语句中,用来终止 case 并跳出 switchcout << "选择:" << endl;cout << "选择1" << endl;cout << "选择2" << endl;cout << "选择3" << endl;int num = 0;cin >> num;switch (num){case 1:cout << "111" << endl;break;case 2:cout << "222" << endl;break;case 3:cout << "333" << endl;break;}//出现在循环语句中,用来跳出当前的循环语句for (int i = 0 ; i < 10 ; i++){if (i == 6){break;}cout << i;}//出现在嵌套循环中,用来跳出最近的内层循环语句,并不影响外层循环for (int i = 0 ; i < 5 ; i++){for (int j = 0 ; j < 10 ; j++){if (j == 6){break;}cout << "* ";}cout << endl;}system("pause");return 0;
}

4.2 continue 语句

作用

        “ 跳过本次循环剩余部分,直接进入下一次循环 ”(仅用于循环结构)

与 break 的区别
  • break:直接跳出整个循环
  • continue:仅跳过当前次循环的剩余语句,下一次循环仍会执行
示例:打印 1~9 中的奇数(跳过偶数)
#include <iostream>
using namespace std;
int main()
{//continuefor (int i = 0 ; i < 10 ; i++){if (i % 2 == 0){//可以筛选条件,执行到此就不再向下执行,执行下一次循环continue;}cout << i << " ";}system("pause");return 0;
}

4.3 goto 语句

作用

        “ 无条件跳转 ”:直接跳转到程序中标记的位置(谨慎使用,易破坏程序结构)

语法
定义标记:标记名:(如A:)
跳转:goto 标记名;(执行到 goto 时,直接跳转到标记处)
注意
  • 不建议频繁使用:会导致程序流程混乱,难以维护(仅在特殊场景如 “ 跳出多层嵌套循环 ” 时可考虑)
示例
#include <iostream>
using namespace std;
int main()
{cout << "11111" << endl;cout << "22222" << endl;goto A;cout << "33333" << endl;cout << "44444" << endl;A:cout << "55555" << endl;system("pause");return 0;
}

文章转载自:

http://RRwTeR89.dpnhs.cn
http://WPy8yp9C.dpnhs.cn
http://B1Tv69U5.dpnhs.cn
http://1N3kAWfm.dpnhs.cn
http://pELFzDdW.dpnhs.cn
http://2zeZf7wp.dpnhs.cn
http://VHaBzPsy.dpnhs.cn
http://x9ZDG6hr.dpnhs.cn
http://0PuWd4Um.dpnhs.cn
http://kFZ1m86Z.dpnhs.cn
http://AwRynu53.dpnhs.cn
http://4vhe1oQ2.dpnhs.cn
http://cN7gXwTz.dpnhs.cn
http://TFYuDtlW.dpnhs.cn
http://qa7Dm2QI.dpnhs.cn
http://NwbEmWct.dpnhs.cn
http://wiJkjEXa.dpnhs.cn
http://hvFKsoBT.dpnhs.cn
http://1Vi2SQLI.dpnhs.cn
http://p6bd5qQI.dpnhs.cn
http://W1dCrCwQ.dpnhs.cn
http://3GW60ZeK.dpnhs.cn
http://dr9NpRnm.dpnhs.cn
http://lxcg9lr7.dpnhs.cn
http://bsNrqAKl.dpnhs.cn
http://re00X9E1.dpnhs.cn
http://hJhMVBKl.dpnhs.cn
http://DbkMdwXb.dpnhs.cn
http://x6IW8DJq.dpnhs.cn
http://jAT2vtWu.dpnhs.cn
http://www.dtcms.com/a/371067.html

相关文章:

  • 南科大适应、协同与规划的完美融合!P³:迈向多功能的具身智能体
  • 机床夹具设计 +选型
  • 【开题答辩全过程】以 “爱心”家政管理系统为例,包含答辩的问题和答案
  • LCR 175. 计算二叉树的深度【简单】
  • SPI 三剑客:Java、Spring、Dubbo SPI 深度解析与实践​
  • 人工智能辅助荧光浓度检测系统:基于YOLO与RGB分析的Python实现
  • Netty从0到1系列之EventLoopGroup
  • 简说【高斯随机场 (GRF)】
  • 【黑客技术零基础入门】2W字零基础小白黑客学习路线,知识体系(附学习路线图)
  • Altium Designer(AD24)集成开发环境简介
  • C++协程理解
  • 【科研成果速递-IJGIS】如何描述与分类移动对象的时空模式?一个新的分类框架与体系!
  • idf--esp32的看门狗menuconfig
  • 「数据获取」《中国电力统计年鉴》(1993-2024)(含中国电力年鉴)
  • [光学原理与应用-435]:晶体光学 - 晶体的结构-基元/原胞/晶胞/点阵
  • 郭平《常变与长青》读书笔记(第三章)
  • C++_哈希
  • 【LeetCode 热题 100】49. 字母异位词分组
  • Vue3中Vite的介绍与应用
  • 【C++ 11 模板类】tuple 元组
  • 高维前缀和
  • 脑电数据预处理十四:主成分分析(PCA)用于伪迹去除与降维
  • 09-FreeRTOS任务调度
  • 详解 ELO 评分系统
  • TDengine 时间函数 WEEKDAY() 用户手册
  • 计算机网络:物理层---数据通信基础知识
  • 为什么固态硬盘断电后数据还能保存不丢失?
  • KDD 2025 | TIDFormer:针对时序交互动态机制,构建动态图 Transformer 模型
  • 【FastDDS】Persistence Service
  • 整车无线布置的综述