杨辉三角结果全部出来

可不可以只用c语言写一下啊,结合数据结构

杨辉三角形的第n行的第m个元素等于n!/((n-m)!*m!)
因此编程如下
int x = 10;
for (int n = 1; n < x; n++)
{
for (int m = 1; m <= n; m++)
printf("%d\t", p(n) / (p(n - m) * p(m)));
printf("\n");
}
再写个阶乘函数:
int p(int x)
{
int r = 1;
if (x < 2) return r;
for (int i = 2; i <= x; i++)
r = r * i;
return r;
}

#include <stdio.h>
#include <stdlib.h>
int tab_num;
 //最大行数 
int count;
//当前行数 
int curline_num;

void printnextline(int *);

int main() {    
    int* curline;
    int i;
    curline = malloc(sizeof(int));
    printf("输入最大行数\n");
    scanf("%d",&count); 
    tab_num = count-1;
    curline_num = 1;
    *curline = 1;
    for(i = 0;i < tab_num*(5/2+1);i++){
        printf(" ");//空白处1个空格 
    }
    tab_num-=0.5;
    printf("1\n");
    printnextline(curline);
    return 0;
}
/*
 *函数功能:求下一行的值 
 *参数:
 *      curline 存储当前行的首地址 
 */
void printnextline(int* curline){
    int i;
    int* nextline;
    nextline = malloc(sizeof(int)*(curline_num+1));
    memset(nextline,0,sizeof(int)*(curline_num+1));
    for(i=0;i<=curline_num;i++){
        if(i == 0){
            *(nextline+i)=1;
            continue; 
        }
        if(i == curline_num){
            *(nextline+i)=1;
            continue;
        }
        *(nextline+i)=*(curline+i)+*(curline+i-1);
    } 
    for(i = 0;i < tab_num*(5/2+1);i++){
        printf(" ");//空白处1个空格 
    }
    tab_num-=0.5;
    for(i = 0;i<curline_num+1;i++){
        printf("%d     ",*(nextline+i));//空白处5个空格 
    }
    printf("\n"); 
    curline_num++;
    if(curline_num <count){
        printnextline(nextline);
    }
}

排版没弄好。。

杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析