在C语言中,if-else、while、do-while、for 都可以相互嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,或者 for 里面有 while,while 里面有 if-else,这都是允许的。

if-else 的嵌套在《C语言if else语句》一节中已经进行了讲解,本节主要介绍循环结构的嵌套。

示例1:for 嵌套执行的流程。

#include

int main()

{

int i, j;

for(i=1; i<=4; i++){ //外层for循环

for(j=1; j<=4; j++){ //内层for循环

printf("i=%d, j=%d\n", i, j);

}

printf("\n");

}

return 0;

}

运行结果:

i=1, j=1

i=1, j=2

i=1, j=3

i=1, j=4

i=2, j=1

i=2, j=2

i=2, j=3

i=2, j=4

i=3, j=1

i=3, j=2

i=3, j=3

i=3, j=4

i=4, j=1

i=4, j=2

i=4, j=3

i=4, j=4

本例是一个简单的 for 循环嵌套,外层循环和内层循环交叉执行,外层 for 每执行一次,内层 for 就要执行四次。

在C语言中,代码是顺序、同步执行的,当前代码必须执行完毕后才能执行后面的代码。这就意味着,外层 for 每次循环时,都必须等待内层 for 循环完毕(也就是循环4次)才能进行下次循环。虽然 i 是变量,但是对于内层 for 来说,每次循环时它的值都是固定的。

示例2:输出一个4×4的整数矩阵。

#include

int main()

{

int i, j;

for(i=1; i<=4; i++){ //外层for循环

for(j=1; j<=4; j++){ //内层for循环

printf("%-4d", i*j);

}

printf("\n");

}

return 0;

}

运行结果:

1 2 3 4

2 4 6 8

3 6 9 12

4 8 12 16

外层 for 第一次循环时,i为1,内层 for 要输出四次 1*j 的值,也就是第一行数据;内层  for 循环结束后执行 printf("\n"),输出换行符;接着执行外层 for 的 i++ 语句。此时外层 for 的第一次循环才算结束。

外层 for 第二次循环时,i为2,内层 for 要输出四次 2*j 的值,也就是第二行的数据;接下来执行 printf("\n") 和 i++,外层 for 的第二次循环才算结束。外层 for 第三次、第四次循环以此类推。

可以看到,内层 for 每循环一次输出一个数据,而外层 for 每循环一次输出一行数据。

示例3:输出九九乘法表。

#include

int main(){

int i, j;

for(i=1; i<=9; i++){ //外层for循环

for(j=1; j<=i; j++){ //内层for循环

printf("%d*%d=%-2d ", i, j, i*j);

}

printf("\n");

}

return 0;

}

运行结果:

1*1=1

2*1=2 2*2=4

3*1=3 3*2=6 3*3=9

4*1=4 4*2=8 4*3=12 4*4=16

5*1=5 5*2=10 5*3=15 5*4=20 5*5=25

6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36

7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49

8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64

9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

和示例2一样,内层 for 每循环一次输出一条数据,外层 for 每循环一次输出一行数据。

需要注意的是,内层 for 的结束条件是j<=i。外层 for 每循环一次,i 的值就会变化,所以每次开始内层 for 循环时,结束条件是不一样的。具体如下:

当 i=1 时,内层 for 的结束条件为 j<=1,只能循环一次,输出第一行。

当 i=2 时,内层 for 的结束条件是 j<=2,循环两次,输出第二行。

当 i=3 时,内层 for 的结束条件是 j<=3,循环三次,输出第三行。

当 i=4、5、6... 时,以此类推。

九九乘法表还有更多输出方式,请查看:C语言输出九九乘法表(5种解法)

c语言while if嵌套,C语言循环嵌套详解相关推荐

  1. c语言输入循环语句,C语言中输入输出和循环语句详解.ppt

    C语言中输入输出和循环语句详解 C语言的输入输和循环分支语句详解 本章主要向大家介绍下C语言的输入和输出功能以及循环分支语句的使用 第4章 顺序结构程序设计 3.1 C语言语句 3.2 赋值语句 3. ...

  2. c语言中getenv的作用,C语言putenv()函数和getenv()函数的使用详解

    C语言putenv()函数和getenv()函数的使用详解 C语言putenv()函数:改变或增加环境变量头文件: #include4 定义函数: int putenv(const char * st ...

  3. R语言基于forestplot包可视化森林图实战详解:美化的森林图:自定义字体设置、置信区间、坐标轴(刻度、标签、范围)、无效线去除、水平线、辅助线、box形状、色彩等

    R语言基于forestplot包可视化森林图实战详解:美化的森林图:自定义字体设置.置信区间.坐标轴(刻度.标签.范围).无效线去除.水平线.辅助线.box形状.色彩等 目录

  4. R语言中如何计算C-Statistics?几种计算方法详解

    R语言中如何计算C-Statistics?几种计算方法详解 目录 R语言中如何计算C-Statistics? #包导入 #数据加载编码

  5. java注解式开发_JAVA语言之Spring MVC注解式开发使用详解[Java代码]

    本文主要向大家介绍了JAVA语言的Spring MVC注解式开发使用详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处 ...

  6. time库是python中处理时间的标准库_python语言time库和datetime库基本使用详解

    今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作,这篇博客花了2个半小时的时间,结合自己所学,所思,所想写作 ...

  7. C语言中的字符串转数字函数常见问题详解

    目录 C语言中的字符串转数字函数常见问题详解 字符串转整形 atoi函数 字符串转长整形 strtol函数, C语言中的字符串转数字函数常见问题详解 字符串转整形 atoi函数 函数原型: int a ...

  8. 区块链用哪种语言 Java_区块链开发用什么语言呢?区块链与编程语言的关系详解...

    原标题:区块链开发用什么语言呢?区块链与编程语言的关系详解 区块链的概念就随着比特币的大热开始逐渐进入公众视野,比特币的拥有者为了使其创造更高的财富,开始疯狂炒作,因而引发购买比特币大浪潮.然而等到比 ...

  9. C语言0长度数组(可变数组/柔性数组)详解

    CSDN GitHub C语言0长度数组(可变数组/柔性数组)详解 AderXCoding/language/c/zero_length_array 本作品采用知识共享署名-非商业性使用-相同方式共享 ...

  10. python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解

    python列表切片和嵌套列表取值操作详解 给出列表切片的格式: [开头元素::步长] # 输出直到最后一个元素,(最后一个冒号和步长可以省略,下同) [开头元素:结尾元素(不含):步长] # 其中, ...

最新文章

  1. 数据蒋堂 | 还原分组运算的本意
  2. 帝国cms让当前栏目显示不同样式(图文)
  3. JZOJ 3742. 【TJOI2014】上升子序列
  4. 逼出的成功,强迫的辉煌
  5. 各种操作系统简介和功能分析
  6. 这些有笑点的故事,只有程序员才能get
  7. JavaScript Date时间对象
  8. 工作要求,写了一些没用的设计文档
  9. 中国计算机类研究生学校排名,2018考研:计算机专业全球院校排名公布,上海交通大学竟排第一?...
  10. 建行提示找不到服务器,中国建设银行E路护航网银安全组件常见问题解答
  11. Python学习笔记--解析式
  12. Dynamics CRM IFD部署如何更换SSL证书
  13. Android8.0 WIFI ap Tethering 相关知识
  14. 解决报错npm ERR request to https://registry.cnpmjs.org/wangeditor failed, reason: Hostname/
  15. FastDFS分布式文件服务器部署与运用
  16. css字体_在css中如何引入ttf文件的字体
  17. skinsdog 狗网官网CSGO国服可直接取回饰品皮肤开箱网站
  18. 通信原理 | 虚数j的物理意义
  19. DJ6-4 文件存储空间的管理
  20. 佛吉尼亚大学计算机世界排名,弗吉尼亚大学计算机排名

热门文章

  1. 冰河凭什么能够顺利拿下三个软考高级证书?有什么技巧(诀窍)吗?
  2. 用python玩转数据测试与作业_用python玩转数据-实验5
  3. 元旦给计算机老师的贺卡,一年级元旦给老师的贺卡祝福语
  4. 深入理解ActiveMQ支持的2类消息发送接收模型queue和topic
  5. ACC自适应巡航控制系统介绍
  6. OP-TEE内核学习笔记(一)(安全存储)—— 密钥和文件结构
  7. C++结课大作业——职工管理系统
  8. Velocity模板语言(VTL):说明
  9. 史玉柱论民营企业的“13种死法”
  10. 企业公众号做内容输出有哪些要点