21xrx.com
2024-12-22 23:08:24 Sunday
登录
文章检索 我的文章 写文章
C++实现杨辉三角的打印
2023-07-04 23:40:25 深夜i     --     --
C++ 杨辉三角 实现 打印

杨辉三角,又称帕斯卡三角,是一个数学上常见的图形。它的特点是第i行有i个元素,且每个元素的值等于它上方两个元素的和。今天,我们来用C++语言实现杨辉三角的打印。

首先,我们需要定义一个二维数组来存储杨辉三角的元素。由于每一行的元素个数不同,因此需要使用动态数组。代码如下:


int numRows; // 杨辉三角的行数

int **pascalTriangle; // 存储杨辉三角的数组

cout << "请输入需要打印的杨辉三角的行数:" << endl;

cin >> numRows;

// 动态分配数组

pascalTriangle = new int*[numRows];

for (int i = 0; i < numRows; i++) {

  pascalTriangle[i] = new int[i+1];

}

然后,我们需要根据杨辉三角的定义来填充数组。由于每一行的第一个和最后一个元素为1,因此我们可以先将这些元素赋值为1,然后再用循环依次计算每个元素。代码如下:


// 填充数组

for (int i = 0; i < numRows; i++) {

  pascalTriangle[i][0] = 1; // 每一行的第一个元素为1

  pascalTriangle[i][i] = 1; // 每一行的最后一个元素为1

  for (int j = 1; j < i; j++) {

    pascalTriangle[i][j] = pascalTriangle[i-1][j-1] + pascalTriangle[i-1][j];

  }

}

最后,我们需要将数组中的元素打印出来。由于杨辉三角的元素存在对称性,因此可以只输出上半部分的数值。另外,为了美观起见,我们可以使用空格来控制杨辉三角的形状。代码如下:


// 打印杨辉三角

for (int i = 0; i < numRows; i++) {

  for (int j = 0; j < numRows-i-1; j++) {

    cout << " ";

  }

  for (int j = 0; j < i+1; j++) {

    cout << pascalTriangle[i][j] << " ";

  }

  cout << endl;

}

完整代码如下:


#include <iostream>

using namespace std;

int main() {

  int numRows; // 杨辉三角的行数

  int **pascalTriangle; // 存储杨辉三角的数组

  cout << "请输入需要打印的杨辉三角的行数:" << endl;

  cin >> numRows;

  // 动态分配数组

  pascalTriangle = new int*[numRows];

  for (int i = 0; i < numRows; i++) {

    pascalTriangle[i] = new int[i+1];

  }

  // 填充数组

  for (int i = 0; i < numRows; i++) {

    pascalTriangle[i][0] = 1; // 每一行的第一个元素为1

    pascalTriangle[i][i] = 1; // 每一行的最后一个元素为1

    for (int j = 1; j < i; j++) {

      pascalTriangle[i][j] = pascalTriangle[i-1][j-1] + pascalTriangle[i-1][j];

    }

  }

  // 打印杨辉三角

  for (int i = 0; i < numRows; i++) {

    for (int j = 0; j < numRows-i-1; j++) {

      cout << " ";

    }

    for (int j = 0; j < i+1; j++) {

      cout << pascalTriangle[i][j] << " ";

    }

    cout << endl;

  }

  // 释放数组内存

  for (int i = 0; i < numRows; i++) {

    delete[] pascalTriangle[i];

  }

  delete[] pascalTriangle;

  return 0;

}

这样,我们就成功地用C++语言实现了杨辉三角的打印。通过这个例子,我们可以学习到动态数组的使用、循环计算数组元素以及输出控制等技巧。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复