任意行数的杨辉三角形(动态分配)

杨辉三角形

金字塔型和直角三角形

代码

#include<stdio.h>
#include<stdlib.h>
int main() {
    int i,j,num;
    int **a;
    printf("请输入你想打印的杨辉三角形行数:\n");
    scanf("%d",&num);
    a=(int **)malloc(num*sizeof(int *));
    for (i = 0; i < num; ++i) { //为每列分配num个大小空间
        a[i] = (int*)malloc(sizeof(int)*num);
    }
    //书上分开打印
//    for(i=0; i<num; i++) {
//        a[i][i]=1;
//        a[i][0]=1;
//    }
//    for(i=2; i<num; i++) {
//        for(j=1; j<=i-1; j++) {
//            a[i][j]=a[i-1][j-1]+a[i-1][j];
//        }
//    }
//    for(i=0;i<num;i++){
//        for(j=0;j<=i;j++){
//            printf("%4d",a[i][j]);
//        }
//        printf("\n");
//    }
//    printf("\n");

    //优化
    for(i=0; i<num; i++) {
        for(j=0; j<=i; j++) {
//            if(i==0||j==0||j==i) {
//                a[i][j]=1;
//            } else {
//                a[i][j]=a[i-1][j-1]+a[i-1][j];
//            }
            printf("%4d",(a[i][j])=(i==0||j==0||j==i)?1:a[i-1][j-1]+a[i-1][j]);
        }
        printf("\n");
    }
//    for(i=0; i<num; i++) {
//        for(j=0; j<=i; j++) {
//            printf("%4d",a[i][j]);
//        }
//        printf("\n");
//    }
    for (i = 0; i < num; i++) {
        free(a[i]);
    }
    free(a);
    printf("\n");
    return 0;
}
C
打赏
评论区
头像
文章目录