打印杨辉三角c++用二维数组
时间: 2024-06-08 20:03:29 浏览: 87
打印杨辉三角可以使用二维数组来实现。先声明一个二维数组,然后通过循环来对其进行赋值,最后再输出即可。下面是一个示例代码:
```
#include <iostream>
using namespace std;
int main() {
int rows;
cout << "请输入行数:";
cin >> rows;
int arr[rows][rows]; // 声明二维数组
// 初始化数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
arr[i][j] = 1;
} else {
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
}
// 输出杨辉三角
for (int i = 0; i < rows; i++) {
for (int j = 0; j <= i; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
相关问题
用内存动态分配与动态删除的函数模板实现杨辉三角,要求二维数组每行数据长度与该行杨辉三角元素个数相等。测试时输入参数杨辉三角行数,输出杨辉三角、每行元素个数及二维数组占用内存空间C++
在C++中,我们可以使用`vector`容器以及动态内存管理来实现杨辉三角的存储和操作,因为`vector`可以方便地进行动态大小调整。首先,我们需要一个递归函数或循环来生成杨辉三角的元素,然后使用`vector`作为底层存储。
这是一个简单的模板函数实现:
```cpp
#include <iostream>
#include <vector>
template<int N> void printTriangle(const std::vector<std::vector<int>>& triangle) {
for (int i = 0; i <= N; ++i) {
for (int j = 0; j <= i; ++j) {
std::cout << triangle[i][j] << " ";
}
std::cout << std::endl;
}
}
std::vector<std::vector<int>> generateTriangle(int n) {
std::vector<std::vector<int>> triangle(n + 1, std::vector<int>(n + 1));
triangle[0][0] = 1;
for (int row = 1; row < n; ++row) {
triangle[row][0] = triangle[row - 1][row];
triangle[row][row] = triangle[row - 1][row - 1];
// 使用组合公式计算其他位置的值
for (int col = 1; col < row; ++col)
triangle[row][col] = triangle[row - 1][col - 1] + triangle[row - 1][col];
}
return triangle;
}
int main() {
int numRows;
std::cout << "请输入杨辉三角的行数: ";
std::cin >> numRows;
auto triangle = generateTriangle(numRows);
printTriangle(triangle);
// 计算每行元素个数
int elementCountPerRow = triangle[numRows].size();
std::cout << "每行元素个数: " << elementCountPerRow << std::endl;
// 计算二维数组占用的内存空间(假设每个整型占4字节)
size_t memorySize = triangle.numel() * sizeof(int); // numel()返回总的元素数量
std::cout << "二维数组占用内存空间: " << memorySize / (1024 * 1024) << " MB" << std::endl;
return 0;
}
```
在这个示例中,我们首先询问用户输入行数,然后生成对应的杨辉三角并打印出来。同时,我们也计算了每行元素的数量,并基于假设每个整数占4字节,计算了二维数组占用的内存空间(以MB为单位)。请注意,实际内存占用可能会因编译器优化等因素而略有差异。
用二维数组打印杨辉三角c++
以下是用二维数组打印杨辉三角的C++代码:
```c++
#include <iostream>
using namespace std;
int main() {
int num[10][10] = {0};
int i = 0, j = 0;
for (i = 0; i < 10; i++) {
num[i][0] = 1; // 把每行的第1位值赋值为1;
num[i][i] = 1; // 把右边对角线的值全部赋值为1;
}
for (i = 2; i < 10; i++) { // 观察杨辉三角的图,可得出这么一个规律,除了第一行第一列的值之外,其他的值都是上一行的左右两个值之和;所以从第二行开始运算
for (j = 1; j < i; j++) {
num[i][j] = num[i - 1][j] + num[i - 1][j - 1];
}
}
for (i = 0; i < 10; i++) {
for (j = 0; j < 9 - i; j++) {
cout << " ";
}
for (j = 0; j <= i; j++) {
cout << num[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
阅读全文