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

C语言使用数组实现帕斯卡三角输出错误如何解决

问题修复说明

核心问题点

  • 数组定义不合法:你初始声明的static int par[0], rar[0]是长度为0的数组,C语言不允许使用0长度静态数组,后续写的par[r], rar[r]是逗号表达式,不会重新创建指定长度的数组,会触发数组越界访问,属于未定义行为。
  • 输出逻辑错误:你将当前行的计算结果存在rar数组中,但打印的是存储上一行数据的par数组,导致结果异常,这是你得到错误输出的直接原因。
  • 数组同步逻辑冗余:不需要每次遍历全长度数组同步,只需要同步到当前行的最大索引即可。

修正后完整代码

#include <stdio.h>

int main() {
    int r, i, j;
    printf("帕斯卡三角生成器\n-----------------\n请输入要生成的行数:");
    scanf("%d", &r);
    // 采用C99支持的可变长度数组定义,若编译器不支持可改用malloc动态分配
    int par[r], rar[r];

    // 数组初始化
    for(i = 0; i < r; i++){
        par[i] = 0;
        rar[i] = 0;
    }

    for(i = 0; i < r; i++){
        for(j = 0; j <= i; j++){
            if(j == 0 || j == i) 
                rar[j] = 1;
            else 
                rar[j] = par[j] + par[j - 1];
            // 直接打印当前行计算结果
            printf("%d ", rar[j]);
        }
        printf("\n");
        // 同步当前行数据到par数组,供下一行计算使用
        for(int k = 0; k <= i; k++){
            par[k] = rar[k];
        }
    }
    return 0;
}

测试效果

输入4时输出如下:

1 
1 1 
1 2 1 
1 3 3 1 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:48:01