在 c 中创建 Pascal 三角形

标签 c

我尝试制作一个 n 行的帕斯卡三角形,我必须为矩阵分配内存,打印和释放内存的功能我认为我的代码有很多麻烦 在函数构建中我尝试为矩阵分配内存并对其充电我使用一个完整的函数来改变矩阵,我认为我的主要问题是我有一个不规则矩阵我不知道如何进行,也许做一个数组数组或类似的东西可能会更好,对不起我的英语

int main()
{
    int **triangle=NULL;
    int n;
    printf("size of triangle");
    scanf("%d",&n);
    build(&triangle,n);
    print(triangle,n);
    return 0;
}
void build(int***triangle,int n){
    *triangle=(int**)calloc(n,sizeof(int*));
    int i;
    for(i=0;i<n;i++){
        *(triangle)[i]=(int*)calloc(i+1,sizeof(int));
    }
    full(*triangle,n);
}
void full(int**triangle,int n){
    int i;
    int j;
    for(i=0;i<n;i++){
        for(j=0;j<i;j++){

            if(j==0){
                triangle[i][j]=1;
            }
            else
            if(j==i){
                triangle[i][j]=1;
            }
            else
            triangle[i][j]=triangle[i-1][j-1]+triangle[i-1][j];

            }
        }
    }

void print(int **triangle,int n){
    int i;
    int j;
    for(i=0;i<n;i++){
        for(j=0;j<i;j++){
            printf("%d",triangle[i][j]);
        }
    }
}

最佳答案

*(triangle)[i]=(int*)calloc(i+1,sizeof(int));

应该是

(* triangle)[i]=(int*)calloc(i+1,sizeof(int));

关于在 c 中创建 Pascal 三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53459333/

相关文章:

c - _exit函数和linux中的return语句有什么区别

有人可以解释为什么我会收到此类型错误吗?

c++ - 使用字符串 C,读写字符串

c++ - 隐式转换被认为是一个坏概念吗?

c++ - C/C++ 中的无限循环

php - 为什么openssl无法解码php的base64_encode函数编码的字符串?

c - 如何使用调试器 (VS 2013) 跟踪 win32 API 程序中的系统调用?

c++ - 适用于 C 或 C++ 的 Google Drive API

c - C语言编程中的内存

c - 在 beaglebone black 上出现段错误