如何使用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; }
逻辑解释
咱们一步步模拟这个逻辑,你就能明白为什么它能输出正确图案:
- 初始
start = 1,对应第1行,打印1;打印完后因为是奇数行,切换start为0。 - 第2行用
start=0,打印0 1;这是偶数行,不切换start,保持0。 - 第3行继续用
start=0,打印0 1 0;打印完后是奇数行,切换start为1。 - 第4行用
start=1,打印1 0 1 0;偶数行不切换,保持1。 - 第5行继续用
start=1,打印1 0 1 0 1;奇数行切换start为0。 - 第6行用
start=0,打印0 1 0 1 0 1;完美匹配目标!
这个逻辑的核心是每两行共用一个起始值,打印完奇数行后切换起始值,这样就能完全贴合你给出的图案规律啦。
备注:内容来源于stack exchange,提问作者ALLEN
相关产品推荐
相关产品推荐

