(提高题)利用二维数组编程实现功能:输入一个整数n(n不超过10),输出n行的杨辉三角形。例如: 编程前,先思考下列问题: ① 第1列(即列序号为0)数字有什么规律?对角线上数字有什么规律? ② 其余的数字与上一行数字有什么关系?
时间: 2025-02-10 07:12:42 浏览: 33
为了利用二维数组编程实现输出杨辉三角形,需注意以下规律:
1. **第1列数字**(即列序号为0)始终为1。无论在哪一行,第一个元素总是1。
2. **对角线上的数字**(即行号与列号相等的位置)同样为1。这是因为每个对角线位置上的数字只有一条路径可以到达,所以它们也是1。
3. **其余数字**(既不在第1列也不在对角线上)可以通过上一行相邻两个数字之和获得。具体来说,`arr[i][j] = arr[i-1][j-1] + arr[i-1][j]`,其中 `i > 0` 且 `j > 0`。
基于这些规律,你可以构建一个二维数组来存储杨辉三角形的数据,并逐行输出这些数据。以下是具体的编程步骤示例:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入要生成的杨辉三角形的行数(不超过10): ");
scanf("%d", &n);
int arr[n][n];
for (int i = 0; i < n; i++) {
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]; // 其他位置的数字等于上方两数之和
}
printf("%d ", arr[i][j]);
}
printf("\n"); // 每结束一行输出后换行
}
return 0;
}
```
这段代码首先读取用户输入的行数 `n`,然后创建一个大小为 `n x n` 的二维数组 `arr` 来存储杨辉三角形的数值。通过双重循环遍历数组中的每一个元素,根据上述规律填充数组。最后,按照格式输出杨辉三角形的每一行。
阅读全文
相关推荐


















