C语言 6-1 杨辉三角形 分数 10 作者 龚雄兴 单位 湖北文理学院 编写函数,构造并返回杨辉三角形的前n项。要求用二维指针的方式返回,由于主调程序预知前n行的结构(第一行:{1},第二行:{1,1},第三行:{1,2,1},第四行:{1,3,3,1}......),故函数只需要返回构造的这个二维数组的首地址,二维数组的行数,每行的列数略去不表。函数接口定义: int** fun (int n);其中 n是需要构造的杨辉三角形的层数,假定n为大于1的合法正整数。注意:1)函数中的数组空间需要用malloc()函数动态申请,释放由主调函数完成。2)二维数组的每一行的列数按实际需要申请(每行的列数依次为:1,2,3,4......)。3)最后返回存储杨辉三角形的二维数组的首地址。输入样例: 5 输出样例: 二维数组的输出由测试程序完成,你只需要将杨辉三角形的数值填入数组中。1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 请在代码框中完成函数: 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB C (gcc) 1 2 }
时间: 2024-03-17 07:45:01 浏览: 89
代码如下:
```
int** fun(int n) {
int **arr = (int **)malloc(n * sizeof(int *)); // 申请n行空间
for(int i = 0; i < n; i++) {
arr[i] = (int *)malloc((i+1) * sizeof(int)); // 第i行有(i+1)个元素
for(int j = 0; j <= i; j++) {
if(j == 0 || j == i) // 每行的首尾元素为1
arr[i][j] = 1;
else // 其他元素为上一行左右两个元素的和
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
return arr; // 返回二维数组的首地址
}
```
解析:
本题要求构造并返回杨辉三角形的前n项,需要用二维指针的方式返回。
函数原型为 `int** fun(int n)`,参数为整型变量 `n`,表示需要构造的杨辉三角形的层数。
首先定义一个二维指针 `arr`,用于存储杨辉三角形的数值。申请 `n` 行空间,每行的列数依次为 1、2、3、4......,第 `i` 行有 `i+1` 个元素。对于每个元素,如果是每行的首尾元素,则为 1;否则为上一行左右两个元素的和。
最后返回存储杨辉三角形的二维指针 `arr` 的首地址即可。
注:本题需要用 `malloc` 函数动态申请数组空间,主调函数需要释放数组空间。
阅读全文