You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用C语言打印指定的数字图案?

如何使用C语言打印指定的数字图案?

首先,我先明确你想要打印的目标图案:

1
0   1
0   1   0
1   0   1   0
1   0   1   0   1
0   1   0   1   0   1

作为编程新手,你能尝试自己写代码已经很棒了!咱们来看看你的代码问题出在哪:你的代码是根据行号的奇偶性直接设置起始值,但这个逻辑不符合目标图案的规律——比如第3行是奇数行,按你的代码会从1开始打印,输出1 0 1,但目标是0 1 0,这就是核心问题。

修正后的代码

我调整了逻辑,让起始值按照目标图案的规律切换,代码如下:

#include <stdio.h>

void print_pattern(int n) {
    int start = 1; // 第一行从1开始
    for (int i = 1; i <= n; i++) {
        // 打印当前行的数字,从start开始交替0和1
        for (int j = 0; j < i; j++) {
            printf("%d\t", (start + j) % 2);
        }
        printf("\n");
        // 每打印完奇数行后,切换下一组的起始值
        if (i % 2 == 1) {
            start = 1 - start;
        }
    }
}

int main() {
    int n = 6;
    print_pattern(n);
    return 0;
}

逻辑解释

咱们一步步模拟这个逻辑,你就能明白为什么它能输出正确图案:

  1. 初始start = 1,对应第1行,打印1;打印完后因为是奇数行,切换start为0。
  2. 第2行用start=0,打印0 1;这是偶数行,不切换start,保持0。
  3. 第3行继续用start=0,打印0 1 0;打印完后是奇数行,切换start为1。
  4. 第4行用start=1,打印1 0 1 0;偶数行不切换,保持1。
  5. 第5行继续用start=1,打印1 0 1 0 1;奇数行切换start为0。
  6. 第6行用start=0,打印0 1 0 1 0 1;完美匹配目标!

这个逻辑的核心是每两行共用一个起始值,打印完奇数行后切换起始值,这样就能完全贴合你给出的图案规律啦。

备注:内容来源于stack exchange,提问作者ALLEN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:30:29