c语言数组与杨辉三角形的疑惑

请问如何用数组解决杨辉三角形有关的问题(定义、计算)

比如以下实例:
首先,提示用户:“您想计算杨辉三角形的行数(1~20):”,并将用户输入的数值存放到变量n中。
然后,判断用户输入数据是否正确,如果不正确则输出错误信息并终止程序运行。
最后,计算并输出指定行数的杨辉三角形,每个数值输出域宽为6,左对齐。

#include <stdio.h>

int main() {
    int n, i, j;
    int arr[20][20] = {0};

    printf("您想计算杨辉三角形的行数(1~20):");
    scanf("%d", &n);

    if (n < 1 || n > 20) {
        printf("错误:行数范围应在1~20之间!");
        return 0;
    }

    // 初始化第一列为1
    for (i = 0; i < n; i++) {
        arr[i][0] = 1;
    }

    // 计算其他行和列
    for (i = 1; i < n; i++) {
        for (j = 1; j <= i; j++) {
            arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
        }
    }

    // 输出杨辉三角形
    for (i = 0; i < n; i++) {
        for (j = 0; j <= i; j++) {
            printf("%-6d", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
要用数组解决杨辉三角形问题,可以定义一个二维数组来存储杨辉三角形中每个数的值。数组的行数为用户输入的行数n,列数可以根据杨辉三角形的规律计算出来,即第i行有i个数。

下面是一个示例代码,实现了输入行数n,计算并输出指定行数的杨辉三角形。

#include <stdio.h>

#define MAX_ROW 20
#define WIDTH 6

int main() {
    int n, i, j;
    int triangle[MAX_ROW][MAX_ROW] = {0};

    printf("您想计算杨辉三角形的行数(1~20):");
    scanf("%d", &n);

    if (n < 1 || n > MAX_ROW) {
        printf("输入错误,行数应在1~20之间!\n");
        return 0;
    }

    // 计算杨辉三角形
    for (i = 0; i < n; i++) {
        triangle[i][0] = 1;

        for (j = 1; j <= i; j++) {
            triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
        }
    }

    // 输出杨辉三角形
    for (i = 0; i < n; i++) {
        for (j = 0; j <= i; j++) {
            printf("%-*d", WIDTH, triangle[i][j]);
        }
        printf("\n");
    }

    return 0;
}

代码中,定义了一个二维数组 triangle,用于存储杨辉三角形中每个数的值。程序首先通过 scanf 函数获取用户输入的行数 n,然后判断输入是否合法。接着,程序使用两层循环计算杨辉三角形中每个数的值,并将其存储到数组 triangle 中。最后,程序使用两层循环输出杨辉三角形的值,每个数值输出域宽为6,左对齐。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7796083
  • 这篇博客也不错, 你可以看下编写代码实现密码输出,输入三次则退出程序
  • 除此之外, 这篇博客: C语言实训任务中的 (1) 输入三角形的三条边,判断是否能构成三角形,若能则计算并输出三角形的面积,否则给出出错提示 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 文字:
    1.定义整数变量a,b,c小数变量area双精度整数变量s
    2.输入三角形的三条边
    3.判断a+b<=c||b+c<=a||a+c<=b是否构成三角形
    4.构成三角形则输出计算area = sqrt(s * (s - a) * (s - b) * (s - c))
    5.输出三角形的面积
    6.如果不构成三角形
    7.则输出“不构成三角形”
    8.结束

    流程图:
    在这里插入图片描述

    代码:
    在这里插入图片描述

    执行结果:
    在这里插入图片描述

  • 您还可以看一下 李月喜老师的企业微信开发第三方应用开发篇课程中的 第三方应用概述、开发流程、上线与上架小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以解决该问题。

    根据杨辉三角的定义,每个数字都是上方两个数字之和,对于第n层第m个数字,用C(n-1)^(m-1)表示,其中C为组合数,可以使用数组来存储每个数字的值,然后递推计算每一层的数字。具体实现可以按以下步骤进行:

    1.首先需要从用户输入中获取要计算的杨辉三角形的行数;

    2.根据行数,设置一个二维数组,每行的数字个数就是该行的行号加1,初始化第0行为1;

    3.递推计算每一层的数字值,从第1行开始到第n-1行,每一行的第一个和最后一个数字都是1,中间的数字由该数字上面一层的两个数字之和决定;

    4.输出杨辉三角形,格式化输出每个数字,宽度为6,左对齐操作。

    具体代码如下: