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

C语言循环实现指定数字图案的代码错误排查咨询

问题排查与修正

咱们一步步拆解你的代码问题,看看为什么输出不了你想要的1、21、321、4321图案:

核心错误点

  • 内层循环条件逻辑完全错误:你写的for(j=n;j<=i;j--)不符合需求。比如当n=4、第一次循环i=1时,j=4根本不满足j<=i,内层循环直接跳过,自然不会输出任何内容。而且咱们要的是从当前行号i递减到1的序列,循环起始值应该是i而非n,循环终止条件也应该是j>=1。
  • 打印内容与判断逻辑冗余:你代码里打印的是字符"j",但实际需要打印数字;另外if((i/j==1))这个判断完全没必要,咱们不需要额外判断,直接输出当前的j值就好。

修正后的代码

#include <stdio.h>
int main(){
    int i,j,n;
    printf("enter n value\n");
    scanf("%d",&n);
    // 外层循环控制总行数,从1到n
    for(i=1;i<=n;i++) {
        // 内层循环从当前行号i开始,递减到1,生成目标数字序列
        for(j=i;j>=1;j--) {
            printf("%d", j); // 直接打印数字j
        }
        printf("\n"); // 每行结束后换行
    }
    return 0;
}

代码说明

  • 外层for循环的i从1遍历到n,负责控制要打印的总行数。
  • 内层for循环的j从当前的i开始,每次减1直到j=1,这样每次循环都会输出i、i-1……1的数字序列。
  • 每行序列打印完成后,通过printf("\n")换行,保证每一行内容单独显示。

测试时输入n=4,输出结果就是你想要的:

1
21
321
4321

内容的提问来源于stack exchange,提问作者Manikanta k

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:52:49