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

使用for循环编写打印空心数字图案序列的C程序

解决空心数字图案的C程序编写及代码调试

原代码的问题

  • 外层循环变量更新错误:for (i = 1; i <= a + 1; a++) 中误用a++替代i++,会导致循环无法正常终止,且循环次数完全不符合需求。
  • 多层嵌套循环逻辑与目标图案无关,当前代码会重复打印数字序列,无法实现空心效果。

正确实现代码

#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);
    int total = a + 1; // 总数字个数,输入5时对应6个数字

    // 打印顶部连续数字行
    for (int i = 1; i <= total; i++) {
        printf("%d", i);
    }
    printf("\n");

    // 打印中间空心行
    for (int i = 2; i <= a; i++) {
        // 打印行首数字
        printf("%d", i);
        // 打印中间空格,数量为总数字数减2(去掉首尾两个数字的位置)
        for (int j = 0; j < total - 2; j++) {
            printf(" ");
        }
        // 打印行尾数字,从顶部序列末尾往前对应位置取值
        printf("%d\n", total - (i - 1));
    }

    // 打印底部倒序连续数字行
    for (int i = total; i >= 1; i--) {
        printf("%d", i);
    }
    printf("\n");

    return 0;
}

代码逻辑说明

  • 顶部行:通过循环从1遍历到a+1,打印连续递增的数字序列。
  • 中间空心行:
    • 循环范围从2到a,对应输入5时的2-5行。
    • 每行开头打印当前行号i,中间填充足够空格保证空心效果,结尾打印与行首对称的数字(即顶部序列末尾往前数第i-1个数字)。
  • 底部行:通过循环从a+1倒序遍历到1,打印连续递减的数字序列。

测试示例

输入:5
输出:

123456
2    5
3    4
4    3
5    2
654321

内容的提问来源于stack exchange,提问作者raghul s

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:25:14