#include<stdio.h> #include<stdlib.h> int** fmalloc(int n){ int** array; //二维指针 int i; array = (int** )malloc(sizeof(int*) * n); //先分配第1维,再循环分配第2维 for(i=0; i<n; ++i){ array[i] = (int*)malloc(sizeof(int*) * (i+1)); } return array; } int main() { int n; int i,j; printf("请输入杨辉三角的行数:"); scanf("%d",&n); int** array = fmalloc(n); for(i = 0; i<n; ++i){ for(j=0; j<=i; ++j){ if(i==0 || i==1) array[i][j]=1; else if(j == 0 || j==i) array[i][j] = 1; else array[i][j] = array[i-1][j-1] + array[i-1][j]; } } for(i = 0; i<n; ++i){ printf(" "); for(j=0; j<=i; ++j){ printf("%d ",array[i][j]); } } printf(" "); for(i=0; i<n; ++i){ free(array[i]); } free(array); return 0; }
//注:关于动态分配数组,可以参考http://www.cnblogs.com/mingbujian/p/4781622.html
文字说明:省
作者:名不见
出处:http://www.cnblogs.com/mingbujian/p/4639655.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.