当前位置: 首页 > article >正文

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;
}

代码解释如下:

  1. 头文件和命名空间
    • #include <iomanip>:引入输入输出操作符的格式化库,这里使用 setw 函数来设置输出宽度。
  2. 变量和数组声明
    • const int rows = 10;:定义一个常量 rows 表示杨辉三角形的行数,这里设置为 10。
    • int triangle[rows][rows];:声明一个 rows x rows 的二维整型数组 triangle 来存储杨辉三角形的元素。
  3. 初始化边界元素
    • for (int i = 0; i < rows; ++i) {... }:这个循环用于初始化杨辉三角形的边界元素。
      • triangle[i][0] = 1;:将每一行的第一个元素(最左边的元素)设置为 1。
      • triangle[i][i] = 1;:将每一行的最后一个元素(对角线上的元素)设置为 1,因为杨辉三角形的边界元素都为 1。
  4. 计算内部元素
    • 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 列元素的和。
  5. 打印杨辉三角形
  • 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


http://www.kler.cn/a/515649.html

相关文章:

  • 使用 `scanpy` 观察 `AnnData` 对象内部数据结构
  • 【Vim Masterclass 笔记21】S09L39:Vim 设置与 vimrc 文件的用法示例(二)
  • Linux Bash 中使用重定向运算符的 5 种方法
  • c++学习第七天
  • 机器学习(5):支持向量机
  • C/C++、网络协议、网络安全类文章汇总
  • 基于Spring Boot3 + Vue3 + JDK17的现代化的Java应用开发框架
  • MATLAB中insertAfter函数用法
  • 自动化01
  • 【ElementPlus】在Vue3中实现表格组件封装
  • 超越 GPT-4o!从 HTML 到 Markdown,一键整理复杂网页;AI 对话不再冰冷,大模型对话微调数据集让响应更流畅
  • 使用 Aryn DocPrep、DocParse 和 Elasticsearch 向量数据库实现高质量 RAG
  • ASP .NET Core 学习(.NET9)部署(一)windows
  • WordPress Fancy Product Designer插件Sql注入漏洞复现(CVE-2024-51818)(附脚本)
  • CSS中选择器的分类
  • 代码编写java代做matlab程序代编Python接单c++代写web系统设计
  • FastExcel:高性能Excel处理框架
  • Nacos 和 Zookeeper
  • Go语言通过Casbin配合MySQL和Gorm实现RBAC访问控制模型
  • ES的聚合:定义与技术特点
  • arkime和elasticsearch 安装方法三
  • 记录一次k8s起不来的排查过程
  • 营销2.0时代的挑战与开源AI智能名片2+1链动模式S2B2C商城小程序源码的解决方案
  • 15_业务系统基类
  • .gitignore配置忽略out目录
  • macOS安装Gradle环境