目录
题目:打印出杨辉三角形(要求打印出10行)。
程序分析:
结构如下所示:
| 1 2 3 4 5 |
|
C 语言实现
以下用于生成打印杨辉三角
方法 1: 使用二维数组
#include <stdio.h>
int main() {
int i, j;
int a[10][10]; // 定义一个 10x10 的二维数组
// 初始化杨辉三角的边界条件
for (i = 0; i < 10; i++) {
a[i][0] = 1; // 每行的第一个元素为 1
a[i][i] = 1; // 每行的最后一个元素为 1
}
// 填充杨辉三角的其他元素
for (i = 2; i < 10; i++) {
for (j = 1; j < i; j++) {
a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; // 计算当前元素的值
}
}
// 打印杨辉三角
for (i = 0; i < 10; i++) {
for (j = 0; j <= i; j++) {
printf("%5d", a[i][j]); // 格式化输出
}
printf("\n"); // 换行
}
return 0; // 返回 0 表示程序正常结束
}
- 数组定义:定义一个
10x10的二维数组a用于存储杨辉三角的值。 - 初始化边界:每行的第一个和最后一个元素都被初始化为
1。 - 计算内部元素:使用双重循环计算杨辉三角的内部元素,公式为
a[i][j] = a[i-1][j-1] + a[i-1][j]。 - 打印结果:最后,使用嵌套循环打印出杨辉三角的每一行。
方法 2: 使用一维数组
使用一个一维数组来存储当前行的值,并在每次迭代时更新它。
#include <stdio.h>
int main() {
int i, j;
int a[10]; // 定义一个一维数组
// 初始化杨辉三角的第一行
a[0] = 1;
printf("%5d\n", a[0]);
for (i = 1; i < 10; i++) {
// 从后往前更新数组
for (j = i; j > 0; j--) {
a[j] = a[j] + a[j - 1]; // 计算当前元素的值
}
a[0] = 1; // 每行的第一个元素为 1
// 打印当前行
for (j = 0; j <= i; j++) {
printf("%5d", a[j]); // 格式化输出
}
printf("\n"); // 换行
}
return 0; // 返回 0 表示程序正常结束
}
方法 3: 递归方法
使用递归来计算杨辉三角的值,但这种方法效率较低,适合小规模的计算。
#include <stdio.h>
int pascal(int row, int col) {
if (col == 0 || col == row) {
return 1; // 边界条件
}
return pascal(row - 1, col - 1) + pascal(row - 1, col); // 递归计算
}
int main() {
int i, j;
for (i = 0; i < 10; i++) {
for (j = 0; j <= i; j++) {


11万+

被折叠的 条评论
为什么被折叠?



