带你刷 · C语言 | 杨辉三角

简介: 问:在屏幕上打印杨辉三角

在这里插入图片描述
啊我摔倒了..有没有人扶我起来学习....

题目

问:
在屏幕上打印杨辉三角

1

1 1

1 2 1

1 3 3 1

……

输入描述:
输入为一行,输入一个整数5,表示5行杨辉三角
输出描述:
输出5行杨辉三角


解法

1. 确定思路

  • 杨辉三角,是二项式系数在三角形中的一种几何排列,可以观察到外层都是1
  • 从第二行开始,除了外层的1之外的数字都是上一层相邻两数之和
  • 在观察要求打印的排列方式,类似于三角形,那我们就当做一个二维数组来打印就好了

2. 编写代码

  • 根据上述思路,我们定义一个55列的二维数组
对应代码:
int arr[5][5] = { 0 };
  • 给这个二维数组初始化,先针对外层的1。可以观察到,只要是第一列和对角线上的元素都是1
对应代码:
if (i == j || j == 0)
arr[i][j] = 1;
  • 当1都初始化好了,其他内层元素都是它上面的元素以及左上角元素之和
对应代码:
if (i > 1 && j < i)
{
    arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
  • 由于是遍历初始化二维数组,所以需要再嵌套循环
对应代码:
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (i == j || j == 0)
                arr[i][j] = 1;
            if (i > 1 && j < i)
            {
                arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
            }

        }
    }
  • 功能已经实现,关键在于打印!我们刚刚分析的时候是把杨辉三角当做左下三角矩阵分析的,但是打印的时候要打成金字塔似的才接近完美
  • 于是每行打印之前都要打印相应数量的空格
对应代码:
    for (int i = 0; i < 5; i++)
    {
        for (int k = 0; k < 4 - i; k++)
            printf(" ");
        for (int j = 0; j < 5; j++)
            printf("%.d ", arr[i][j]);
        printf("\n");
    }
  • 咱们看看打印结果:

在这里插入图片描述

附上完整代码:
#include<stdio.h>
//杨辉三角
int main()
{
    int arr[5][5] = { 0 };
    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j <= i; j++)
        {
            if (i == j || j == 0)
                arr[i][j] = 1;
            if (i > 1 && j < i)
            {
                arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
            }

        }
    }

    for (int i = 0; i < 5; i++)
    {
        for (int k = 0; k < 4 - i; k++)
            printf(" ");
        for (int j = 0; j < 5; j++)
            printf("%.d ", arr[i][j]);
        printf("\n");
    }

    return 0;
}

在这里插入图片描述

相关文章
|
算法 搜索推荐 程序员
C语言第十五练——输出第n位的斐波那契数
C语言第十五练——输出第n位的斐波那契数
91 0
|
C语言
非正式纳新题解(C语言)1
非正式纳新题解(C语言)1
148 0
|
搜索推荐 C语言 索引
ACAT2021纳新题目(C语言)
ACAT2021纳新题目(C语言)
60 0
|
C语言
非正式纳新题目(C语言)1
非正式纳新题目(C语言)1
97 0
|
搜索推荐 C语言
非正式纳新题解(C语言)2
非正式纳新题解(C语言)2
87 0
|
搜索推荐 C语言
ACAT2021纳新题解(C语言)2
ACAT2021纳新题解(C语言)2
56 0
|
C语言
C语言之每日一题——杨氏矩阵
C语言之每日一题——杨氏矩阵
|
6月前
|
存储 算法 C语言
C语言练习记录(蓝桥杯练习)(小蓝数点)
C语言练习记录(蓝桥杯练习)(小蓝数点)
|
搜索推荐 C语言
非正式纳新题目(C语言)2
非正式纳新题目(C语言)2
91 0
|
C语言 索引
ACAT2021纳新题解(C语言)1
ACAT2021纳新题解(C语言)1
68 0