C++:利用二维数组打印杨辉三角形。
输出样例如图所示:
代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
const int rows = 10;
int triangle[rows][rows];
// 初始化杨辉三角形的边界元素为 1
for (int i = 0; i < rows; ++i) {
triangle[i][0] = 1;
triangle[i][i] = 1;
}
// 计算杨辉三角形内部元素
for (int i = 2; i < rows; ++i) {
for (int j = 1; j < i; ++j) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
// 打印杨辉三角形
for (int i = 0; i < rows; ++i) {
// 打印空格,用于对齐,形成等腰三角形的效果
for (int k = 0; k < (rows - i); ++k) {
cout << " ";
}
for (int j = 0; j <= i; ++j) {
// 使用 setw 控制输出宽度,使数字对齐
cout << setw(6) << triangle[i][j];
}
cout << endl;
}
return 0;
}
代码解释如下:
- 头文件和命名空间:
#include <iomanip>
:引入输入输出操作符的格式化库,这里使用setw
函数来设置输出宽度。- 变量和数组声明:
const int rows = 10;
:定义一个常量rows
表示杨辉三角形的行数,这里设置为 10。int triangle[rows][rows];
:声明一个rows x rows
的二维整型数组triangle
来存储杨辉三角形的元素。- 初始化边界元素:
for (int i = 0; i < rows; ++i) {... }
:这个循环用于初始化杨辉三角形的边界元素。
triangle[i][0] = 1;
:将每一行的第一个元素(最左边的元素)设置为 1。triangle[i][i] = 1;
:将每一行的最后一个元素(对角线上的元素)设置为 1,因为杨辉三角形的边界元素都为 1。- 计算内部元素:
for (int i = 2; i < rows; ++i) {... }
:从第 2 行开始计算杨辉三角形的内部元素,因为第 0 行和第 1 行的元素已经在边界元素初始化中完成。
for (int j = 1; j < i; ++j) {... }
:对于第i
行,从第 1 列到第i-1
列进行遍历。triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
:根据杨辉三角形的性质,第i
行第j
列的元素等于上一行(第i-1
行)第j-1
列和第j
列元素的和。- 打印杨辉三角形:
for (int i = 0; i < rows; ++i) {... }
:遍历每一行。for (int k = 0; k < (rows - i); ++k) {... }
:打印空格,用于使输出的杨辉三角形呈现等腰三角形的形状。空格数量根据当前行数i
确定,行数越大,空格越少。for (int j = 0; j <= i; ++j) {... }
:遍历第i
行的元素。cout << setw(6) << triangle[i][j];
:使用setw(6)
控制每个元素的输出宽度为 6 个字符,确保数字对齐。cout << endl;
:输出换行符,将下一行的元素打印到新的一行。
觉得有帮助就给博主点个关注叭~~
有问题的可以私信或者在评论区一起交流
友友们一起加油叭QAQ