C语言入门:二重循环_c语言的双重循环

yumo6662个月前 (09-13)技术文章20

什么是二重循环?

循环体内可以是任何语句,任何语句,当然就可以是另一个循环语句。

二重循环,就是循环里面再套一个循环

就像我们日常生活中,一周有7天(外层循环),每天有24小时(内层循环),这样组合起来就是7×24的时间安排。

在C语言中,我们最常用的就是for循环和while循环的嵌套。

基本语法结构

for (外层初始化; 外层条件; 外层更新)

{

// 外层循环体

for (内层初始化; 内层条件; 内层更新)

{

// 内层循环体

}

}

例1:打印九九乘法表

让我们通过最经典的例子来理解二重循环:

#include <stdio.h>

int main()

{

int i, j;

for (i = 1; i <= 9; i++)

{ // 外层循环:控制行数

for (j = 1; j <= i; j++)

{ // 内层循环:控制每行的列数

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

}

printf("\n"); // 换行

}

return 0;

}

运行结果:

text

1×1=1

1×2=2 2×2=4

1×3=3 2×3=6 3×3=9

...(以此类推)

例2:打印图形图案

二重循环非常适合用来打印各种图形:

#include <stdio.h>

int main() {

int rows = 5;

// 打印直角三角形

printf("直角三角形:\n");

for (int i = 1; i <= rows; i++) {

for (int j = 1; j <= i; j++) {

printf("* ");

}

printf("\n");

}

// 打印倒三角形

printf("\n倒三角形:\n");

for (int i = rows; i >= 1; i--) {

for (int j = 1; j <= i; j++) {

printf("* ");

}

printf("\n");

}

return 0;

}

例3:处理二维数组

二重循环是处理二维数组的绝佳工具:

#include <stdio.h>

int main() {

int matrix[3][4] = {

{1, 2, 3, 4},

{5, 6, 7, 8},

{9, 10, 11, 12}

};

printf("二维数组内容:\n");

for (int i = 0; i < 3; i++) { // 遍历行

for (int j = 0; j < 4; j++) { // 遍历列

printf("%d\t", matrix[i][j]);

}

printf("\n");

}

// 计算总和

int sum = 0;

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 4; j++) {

sum += matrix[i][j];

}

}

printf("数组元素总和: %d\n", sum);

return 0;

}

例4:冒泡排序算法

二重循环在排序算法中非常重要:

#include <stdio.h>

int main() {

int numbers[] = {5, 2, 8, 1, 9};

int n = 5;

printf("排序前: ");

for (int i = 0; i < n; i++) {

printf("%d ", numbers[i]);

}

// 冒泡排序 - 使用二重循环

for (int i = 0; i < n - 1; i++) { // 外层循环:控制轮数

for (int j = 0; j < n - 1 - i; j++) { // 内层循环:比较相邻元素

if (numbers[j] > numbers[j + 1]) {

// 交换位置

int temp = numbers[j];

numbers[j] = numbers[j + 1];

numbers[j + 1] = temp;

}

}

}

printf("\n排序后: ");

for (int i = 0; i < n; i++) {

printf("%d ", numbers[i]);

}

return 0;

}

重要注意事项

  1. 变量命名:外层循环通常用i,内层用j、k等,避免混淆
  2. 循环条件:确保内层循环的条件正确,避免死循环
  3. 性能考虑:二重循环的时间复杂度是O(n^2),数据量大时可能较慢
  4. 缩进格式:保持良好的代码缩进,让嵌套关系清晰可见

练习建议

  1. 尝试打印不同的图形(菱形、正方形等)
  2. 用二重循环实现矩阵的加法和乘法
  3. 尝试其他排序算法(如选择排序)
  4. 解决一些逻辑题,如找出100以内的所有质数

总结

二重循环是C编程中的重要概念,它让我们能够处理更复杂的数据结构和算法。

外层循环控制"大节奏",内层循环处理"细节"。

多练习、多思考,你很快就能熟练掌握这个强大的工具!

上述这些程序大伙先自己体会体会,下次细说。

相关文章

C++语言程序员编程必收藏的20个经典实战案例(附完整源码)

C++ 作为一门底层高性能语言,拥有广泛的应用领域,从系统开发、游戏引擎、图形图像、嵌入式到人工智能等,都能看到它的身影。本文为你整理并实操了 20 个 必收藏的经典 C++ 案例,帮助你提升实战水平...

C 语言编程_c语言编程题经典100例及答案

小学阶段的 C 语言编程以入门级语法和生活化场景为主,涉及的数学知识均是小学生已学或易理解的内容,核心是将数学概念与基础编程逻辑(变量、运算、判断、循环)结合,解决简单实际问题。以下按「数学知识类别」...

C++编程语言日常20个高级经典用法(含完整源码与输出)

C++ 是一门强大而灵活的编程语言,擅长系统开发、高性能计算、游戏开发等多个领域。以下是 20 个高频但极具价值的 C++ 高级用法案例,配套完整代码与输出结果,助力你快速掌握进阶技巧。 01. 使用...

单片机C语言编程,心得都在这里了

单片机写代码总踩坑,头文件被无视,老工程师的经验哪里来?前几天写8x8矩阵键盘的程序,搞了三天代码一直乱报错。后来发现自己连头文件是什么都不清楚,之前写的都是小程序,压根没碰过.h文件。看别人的程序都...

C 语言语法最小完备集详细文档_c语言中最小怎么表示

1. 概念定义与理论基础1.1 最小完备集的定义C 语言语法最小完备集是指能够实现所有可计算函数(满足图灵完备性)的最小语法子集。这一子集仅包含不可被其他语法元素等价替代的核心成分,剔除所有冗余语法结...