尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【C语言】选择结构和循环结构的进阶 - 指南

【C语言】选择结构和循环结构的进阶 - 指南
📅 发布时间:2026/6/20 3:28:43

本篇目录

  • 1. 选择结构的嵌套
    • 1.1 if-else的嵌套:多层级判断
    • 1.2 switch-case的嵌套
    • 1.3 选择结构与逻辑运算符的结合
  • 2. 循环结构的嵌套
    • 2.1 嵌套循环:多层重复执行
    • 2.2 循环控制的技巧
  • 3. 其他
    • 3.1 本篇参考/来源

在学习本篇之前,请巩固上节的知识点

1. 选择结构的嵌套

在很多问题的处理上,单层的选择或者是不断堆积的else会显得格外的低效,这时候我们可以用到嵌套,将复杂的步骤进行简化。

1.1 if-else的嵌套:多层级判断

当需要在一个条件分支中再做细分判断时,可以使用 if-else 的嵌套结构。

其中的逻辑是先判断大条件,再在大条件下判断小条件。

真
真
假
假
外层条件
内层条件1
执行内层if代码块
执行内层else代码块
执行外层else代码块

语法架构为

if(外层条件){
//外层为真时执行的代码
if(内层条件1){
//内层条件1为真时执行的代码
}else{
//内层条件1位假时执行的代码
}
}else{
//外层为假时执行的代码
}

其实很好理解,类似一个病人在医院挂号。
医院会先判断“是否为急诊”(外层条件),若为急诊再判断“是否危及生命”(内层条件1);若不是急诊,则按照普通看病流程处理。

在这里插入图片描述
例1. 判断一个数是否为能被3整除的偶数

int num = 6;
if(num%2 == 0){	//可以被2整除就是偶数
if(num%3 == 0){ //能否被3整除
printf("%d是能被3整除的偶数\n",num);
}else{
printf("%d是偶数,但不能被3整除\n",num);
}
}else{
printf("%d不是偶数\n",num);
}

注意事项

  • 嵌套层级建议不超过3层,因为过多的层级会降低代码的可读性,让人难以理解
  • 内层的 if-else 需要严格缩进,明确与外层之间的关系

1.2 switch-case的嵌套

不只是常见的 if-else 支持嵌套, switch-case 也支持嵌套。

而且具有“穿透性”,体现在:省略break时继续执行下一个case。

int a;
switch(a/b){ //将a以b为一组,进行不同层级的划分
case 1:
switch(a){	//根据a的值进行判断
case 1 :printf("..");break;
...
}
case 2:
...
}

当多个case需要执行相同逻辑时,可省略中间case的break,实现“区间批量处理”。

例2.按分数段进行评级(90-100为A,80-89位B…)

int score = 85;
switch(score/10){ // 整除10后,可以划分分数段
case 10:
case 9:printf("等级A\n"); //10和9共享逻辑
case 8:printf("等级B\n");
case 7:printf("等级C\n");
case 6:printf("等级D\n");
default:printf("等级E\n");
}
  • 在电梯的内部,如果我们按下“10楼”和“9楼”都需要停在9楼以上区域,电梯可以连续停靠(穿透),直到触发“9楼”的停靠指令(break)。

在这里插入图片描述

1.3 选择结构与逻辑运算符的结合

在第一节基本语法结构中,我们学习了逻辑运算符&&(与)、||(或)、!(非)。

合理的使用这些逻辑运算符,可以代替部分嵌套结构。

如上节中5和7的最小公倍数中,我们使用了"i % 5 == 0 && i % 7 == 0"去代替了if( i%5==0 )中再嵌套if ( i %7 == 0)的情况。

同理,我们可以将例1的程序简化:

int num = 6;
if(num%2 == 0 && num%3 == 0){	//同时可以被2和3整除的数
printf("%d是能被3整除的偶数\n",num);
}else{
printf("%d不是偶数\n",num);
}

优点

  • 相比较嵌套 if-else 或者 if 的多层嵌套,运用逻辑运算符组合的条件更直观,且执行效率更高。

2. 循环结构的嵌套

循环结构的嵌套是实现矩阵运算、排序算法等的基础。

·矩阵运算涉及到多维数组,在学习到数组的时候会进行讲解。
·排序算法:如对一串数字进行大小排序,诸多算法中常见的。

2.1 嵌套循环:多层重复执行

嵌套循环很好理解,就是一个循环里面中再嵌套另一个循环,外层循环控制着“轮次”,内层循环控制“没轮的重复次数”。

真
真
假
假
外层初始化
外层条件
内层初始化
内层条件
执行内层循环体
内层更新
外层更新
退出循环

这个流程图可能有些许复杂,我来简单讲一下:

  1. 对一个数先进行判断是否满足外层条件,不满足直接退出外层循环,满足则进行到步骤2
  2. 对这个数再进行内层条件的判断,直到不满足内层条件后,退出内层的循环返回到外层循环
  3. 在外层更新后,判断是否满足外层条件,满足则直接退出外层循环,不满足则重复步骤2、3

在这里插入图片描述
只有外层条件不满足时,整个循环才结束,如上图所示⬆️

例3.打印5行5列的正方形星号

for(int i=0; i<5; i++){	//5行
for(int j=0; j<5; j++){	//每行5个
printf("*");
}
printf("\n");	//每行结束后换行
}
 - * * * *- * * * *- * * * *- * * * *- * * * *

同理,九九乘法表也可以按照这个逻辑进行打印。

2.2 循环控制的技巧

  • break与标志位
    在多层循环中,需要一次性跳出所有的循环时,仅用break是无法实现的(因为只能跳出当前层),我们可以使用标志位来进行跳出(在最外层循环中的条件判断里添加,常与逻辑运算符结合使用)。

标志位:一个记录循环状态的变量,可以是一个布尔值,为真时结束循环。后续会使用到。

  • continue与复杂条件
    continue可以结合逻辑判断,跳过循环中“不需要处理”的迭代,减少无效的计算
  • 减少重复计算
    循环内部的重复计算会降低效率,尤其在多层嵌套循环中,需将“与循环变量无关的计算”移到循环外。

3. 其他

3.1 本篇参考/来源

  • 图片由本人绘制而成

相关新闻

  • CCPC郑州站 笨蛋题 II
  • qy_蓝桥杯编程系列_编程17 好数
  • 74_基于深度学习的垃圾桶垃圾溢出检测体系(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)

最新新闻

  • VR视频转换:如何用免费工具将沉浸式3D内容转为可交互2D体验
  • MATLAB R2011b函数名大小写敏感问题:历史成因、诊断与跨平台解决方案
  • Sigma-Delta ADC中sinc3抽取滤波器的硬件优化与Verilog实现
  • 2026红河漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • 倍福Hot Connect:解锁EtherCAT动态拓扑的工业实践
  • Hermes 本地 AI 智能代理完整部署实操教程,多系统适配配置指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号