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

简介: 问:在屏幕上打印杨辉三角11 11 2 11 3 3 1……

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


@TOC


题目

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

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

在这里插入图片描述

相关文章
|
1月前
|
算法 C语言
C语言:杨氏矩阵、杨氏三角、单身狗1与单身狗2
C语言:杨氏矩阵、杨氏三角、单身狗1与单身狗2
30 0
|
8月前
|
C语言
C语言之输出杨辉三角的教程
C语言之输出杨辉三角的教程
|
1月前
|
存储 C语言
说出来你可能不信, 杨辉三角形用C语言实现其实很简单!
说出来你可能不信, 杨辉三角形用C语言实现其实很简单!
|
1月前
|
C语言
【C 语言经典100例】C 练习实例61 - 杨辉三角形
【C 语言经典100例】C 练习实例61 - 杨辉三角形
18 0
|
7月前
|
C语言
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
54 0
【C语言刷题】喝汽水问题、上三角矩阵判定以及矩阵相等判定
|
6月前
|
C语言
C语言十五弹---打印杨辉三角
C语言十五弹---打印杨辉三角
|
7月前
|
存储 算法 C语言
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
【C语言刷题】猜名次、猜凶手、杨辉三角、杨氏矩阵、字符串左旋、判断是否为左旋子串
56 0
|
11月前
|
C语言
【C语言】杨辉三角和练习
【C语言】杨辉三角和练习
56 0
【C语言】杨辉三角和练习
|
10月前
|
存储 C语言
【C语言练习】杨氏矩阵、杨辉三角
【C语言练习】杨氏矩阵、杨辉三角
56 0
|
11月前
|
C语言
C语言实例:创建各类三角形图案(杨辉三角,弗洛伊德三角形....)
C语言实例:创建各类三角形图案(杨辉三角,弗洛伊德三角形....)
111 0