44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
|
|
#include <stdio.h>
|
||
|
|
#include <stdlib.h>
|
||
|
|
|
||
|
|
void CreatYH(int n) {
|
||
|
|
// 创建一个n行n列的二维数组
|
||
|
|
int **arr = (int **)malloc(n * sizeof(int *));
|
||
|
|
for (int i = 0; i < n; i++) {
|
||
|
|
arr[i] = (int *)malloc(n * sizeof(int));
|
||
|
|
}
|
||
|
|
|
||
|
|
// 初始化数组元素值
|
||
|
|
for (int i = 0; i < n; i++) {
|
||
|
|
arr[i][0] = 1; // 第一列值
|
||
|
|
arr[i][i] = 1; // 斜边值
|
||
|
|
}
|
||
|
|
|
||
|
|
// 使用杨辉三角的填充规则
|
||
|
|
for (int i = 3; i <= n; i++) {
|
||
|
|
for (int j = 2; j < i; j++) {
|
||
|
|
arr[i - 1][j - 1] = arr[i - 2][j - 1] + arr[i - 2][j - 2]; // 赋值
|
||
|
|
}
|
||
|
|
// C语言不需要裁剪数组,因为定义了最大大小
|
||
|
|
}
|
||
|
|
|
||
|
|
// 输出数组
|
||
|
|
for (int i = 0; i < n; i++) {
|
||
|
|
for (int j = 0; j <= i; j++) {
|
||
|
|
printf("%d ", arr[i][j]);
|
||
|
|
}
|
||
|
|
printf("\n");
|
||
|
|
}
|
||
|
|
|
||
|
|
// 释放内存
|
||
|
|
for (int i = 0; i < n; i++) {
|
||
|
|
free(arr[i]); // 释放每一行
|
||
|
|
}
|
||
|
|
free(arr); // 释放数组指针
|
||
|
|
}
|
||
|
|
|
||
|
|
int main() {
|
||
|
|
CreatYH(5);
|
||
|
|
return 0;
|
||
|
|
}
|