Files
suanfa/c/ch3/bag01/yanghui.c
T
2026-06-14 23:48:44 +08:00

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;
}