用c语言在二维数组杨辉三角
时间: 2024-12-21 12:29:31 浏览: 5
在C语言中,我们可以用递归或者动态内存分配的方式生成杨辉三角。杨辉三角是一种二项式系数表,它的每一行都是前一行数字之和。下面是一个基于动态内存的递归实现:
```c
#include <stdio.h>
#include <stdlib.h>
int** createTriangle(int size) {
int** triangle = malloc(size * sizeof(int*));
for (int i = 0; i < size; ++i) {
triangle[i] = malloc((size-i) * sizeof(int)); // 分配每一行的内存
triangle[i][0] = triangle[i][size-i-1] = 1; // 设置首尾元素为1
if (i > 0)
triangle[i][1] = triangle[i-1][i-1]; // 初始化中间元素为上一行对应位置的值
else
triangle[i][1] = 1;
}
return triangle;
}
void printTriangle(int** triangle, int size) {
for (int i = 0; i < size; ++i) {
for (int j = 0; j <= i; ++j)
printf("%d ", triangle[i][j]);
printf("\n");
}
}
int main() {
int size = 5; // 可以调整大小
int** tri = createTriangle(size);
printTriangle(tri, size);
free(triangle); // 释放动态分配的内存
return 0;
}
```
这个程序会生成一个指定大小(如5x5)的杨辉三角,并打印出来。注意在结束时需要手动释放动态分配的内存。
阅读全文