双重for循环(嵌套for循环)

什么是双重循环?

什么是双重循环?
双重循环:我们从字面上理解它,就是有两个循环套在一起

详细解释
双重for循环就是在一个for循环里在嵌套另一个for循环,即两个循环嵌套,还有多重循环嵌套的情况,但用的比较少,一般常用的是两个循环嵌套,很少使用多重循环,因为for循环多了会导致代码执行的效率低,而且容易死机,多循环中的总循环次数是相乘的,嵌套几次后几何级数增长,因此通常情况下在循环多次嵌套时,我们是不推荐使用的。

说的再简单点就是,for循环的嵌套,跟我们之前的if嵌套一样
 for(循环变量;循环条件;循环操作){
       for(循环变量;循环条件;循环操作){
           //代码块
       }
}

这就是双重for循环的框架

运行路径

外层循环一次,内层全部循环一次(外层循环一次,内层for循环全部执行完成再进行外层的一次循环)

难点
二重循环的难点是内层循环的循环条件,如何控制内层循环的次数
记住外层循环一次,内层循环全部的原则.。
举个例子,我外层循环定义循环3次,内层循环定义循环2次,每次输出一个“星号”,那么,将会输出几个“星号”呢?
答案是6次(2×3)
分析:

  • 外层循环第一次,里面循环完,也就是2次
  • 外层循环第二次,里面又重新循环,循环完,还是2次
  • 外层循环第三次,里面再次重新循环,又是2次
    我们多说无益,来个实际操作

转载自 Jan,s

### 关于 C 语言双重 `for` 循环嵌套的练习题与示例 以下是几个典型的双重 `for` 循环嵌套的例子及其解释: #### 示例一:星号三角形 通过双重 `for` 循环构建一个由星号组成的直角三角形。 ```c #include <stdio.h> int main() { int rows; printf("请输入行数: "); scanf("%d", &rows); for (int i = 1; i <= rows; i++) { // 控制行数 for (int j = 1; j <= i; j++) { // 控制每行的列数 printf("*"); } printf("\n"); // 换行操作 } return 0; } ``` 上述代码中,外层循环控制行数,而内层循环负责打印每一行中的星号数量[^2]。 --- #### 示例二:乘法表 使用双重 `for` 循环生成九九乘法表。 ```c #include <stdio.h> int main() { for (int i = 1; i <= 9; i++) { // 表示行数 for (int j = 1; j <= i; j++) { // 列数随行数变化 printf("%d*%d=%-3d", j, i, i * j); } printf("\n"); // 每完成一行后换行 } return 0; } ``` 在这个例子中,外层循环定义了表格的行数,内层循环则用于计算并显示当前行的内容。 --- #### 示例三:数字倒金字塔 创建一个倒置的数字金字塔形状。 ```c #include <stdio.h> int main() { int height; printf("输入高度:"); scanf("%d", &height); for (int row = height; row >= 1; row--) { // 外层循环控制总行数 for (int space = 1; space <= height - row; space++) { // 打印前导空格 printf(" "); } for (int num = 1; num <= (2 * row - 1); num++) { // 打印数字部分 printf("%d", row); } printf("\n"); // 完成一行后的换行 } return 0; } ``` 这里展示了如何利用两个内部循环分别处理空白区域和实际数据输出。 --- #### 练习题目推荐 1. **矩阵转置** 编写一段程序接受用户输入的一个二维数组,并将其按照行列互换的方式重新排列展示出来。 2. **素数判定优化版** 使用双重 `for` 循环来检测某个范围内所有的质数。注意减少不必要的迭代次数以提高性能[^3]。 3. **斐波那契螺旋图** 结合图形绘制技术以及 Fibonacci 数列逻辑,在屏幕上呈现近似黄金比例增长模式下的图案效果。 4. **字符串匹配算法初探** 实现简单的子串查找功能——给定母串 S 和目标 T ,判断后者是否存在于前者之中;如果存在,则返回首次出现的位置索引值。 5. **杨辉三角构造器** 设计一款能够动态调整层数大小的应用软件,用来模拟 Pascal Triangle 的形成过程并通过屏幕直观展现最终成果形式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值