C语言1 1 2 1 2 3是什么规律?

99ANYc3cd6
预计阅读时长 9 分钟
位置: 首页 C语言 正文

分析

c语言1 1 2 1 2 3
(图片来源网络,侵删)

你给出的序列是:1 1 2 1 2 3

我们可以把这个序列拆分成三行来看,这样规律就非常明显了:

第1行: 1
第2行: 1 2
第3行: 1 2 3

规律是:打印 n 行,第 i 行打印从 1i 的数字。

下面我将提供几种不同的C语言实现方法,从最直接到更巧妙的方式。

c语言1 1 2 1 2 3
(图片来源网络,侵删)

使用两个 for 循环(最经典、最易理解)

这是解决此类问题最标准、最推荐的方法,一个外层循环控制行数,一个内层循环控制每行的数字。

代码实现

#include <stdio.h>
int main() {
    int i, j; // 定义循环变量 i 控制行, j 控制列(数字)
    // 外层循环,控制总共有多少行 (从 1 到 3)
    for (i = 1; i <= 3; i++) {
        // 内层循环,控制当前行打印多少个数字 (从 1 到 i)
        for (j = 1; j <= i; j++) {
            printf("%d ", j); // 打印数字 j,后面跟一个空格
        }
        // 内层循环结束后,打印一个换行符,以便开始下一行
        printf("\n");
    }
    return 0;
}

代码详解

  1. #include <stdio.h>: 引入标准输入输出库,因为我们使用了 printf 函数。
  2. int main(): 程序的入口函数。
  3. int i, j;: 定义两个整型变量 ij,作为循环的计数器。
  4. 外层 for (i = 1; i <= 3; i++):
    • i = 1: 初始化,从第1行开始。
    • i <= 3: 循环条件,总共打印3行。
    • i++: 每次循环结束后,i 的值加1,进入下一行。
  5. 内层 for (j = 1; j <= i; j++):
    • 这个循环的次数由外层循环的变量 i 决定。
    • i = 1 时,内层循环 j 从1到1,只执行一次,打印 1
    • i = 2 时,内层循环 j 从1到2,执行两次,打印 1 2
    • i = 3 时,内层循环 j 从1到3,执行三次,打印 1 2 3
  6. printf("%d ", j);: 打印当前内层循环的数字 j,并在后面加一个空格,让数字之间分开。
  7. printf("\n");: 在每行数字打印完毕后,输出一个“换行符”,这样光标就会移动到下一行的开头,准备打印下一行的内容。

输出结果

1 
1 2 
1 2 3 

使用 while 循环

for 循环和 while 循环在很多情况下可以互相转换,下面是使用 while 循环的实现,逻辑是完全一样的。

代码实现

#include <stdio.h>
int main() {
    int i = 1; // 行计数器
    // 外层 while 循环,控制行数
    while (i <= 3) {
        int j = 1; // 列(数字)计数器,注意:j的初始化放在这里,确保每行都从1开始
        // 内层 while 循环,控制每行的数字
        while (j <= i) {
            printf("%d ", j);
            j++; // 数字递增
        }
        printf("\n"); // 换行
        i++; // 行递增
    }
    return 0;
}

单循环实现(技巧性更强)

我们也可以用一个循环来完成这个任务,这需要我们手动维护一个“当前行”和“当前数字”的状态。

代码实现

#include <stdio.h>
int main() {
    int i = 1;   // 当前要打印的数字
    int line = 1; // 当前行号
    // 循环6次,因为总共有6个数字
    for (int k = 0; k < 6; k++) {
        printf("%d ", i);
        // 如果当前数字等于当前行号,说明这一行结束了
        if (i == line) {
            printf("\n"); // 换行
            line++;        // 行号加1
            i = 0;         // 重置数字,以便下一行从1开始
        }
        i++; // 数字递增
    }
    return 0;
}

逻辑分析

这个方法用一个循环变量 k 来控制总共要打印的次数(6次),我们用 i 来追踪当前要打印的数字,用 line 来追踪当前是第几行。

c语言1 1 2 1 2 3
(图片来源网络,侵删)
  • iline 相等时(i=1, line=1),打印完 1 后,就知道第一行结束了,于是换行,line 变成2,并把 i 重置为0,这样 i++ 后就从1开始了。
  • 这个方法不如嵌套循环直观,但在某些特定场景下可能会用到。

对于“1 1 2 1 2 3”这类有规律的图形或数字输出问题,使用嵌套的 for 循环是首选方案,因为它最能清晰地反映出“行”和“列”的逻辑关系,代码可读性最高。

-- 展开阅读全文 --
头像
dede上传图片为何出现302错误?
« 上一篇 今天
dede sql 如何安全高效传递参数?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]