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ᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
下面是使用数组计算并输出杨辉三角形的 C 语言代码:

#include <stdio.h>

#define MAX_ROW 20  // 定义杨辉三角形的最大行数

int main() {
    int n, i, j;
    int triangle[MAX_ROW][MAX_ROW];  // 定义二维数组存储杨辉三角形

    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;  // 每行第一个元素为1
        triangle[i][i] = 1;  // 每行最后一个元素为1
    }

    // 计算三角形中间的元素
    for (i = 2; i < n; i++) {
        for (j = 1; j < i; j++) {
            triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }
    }

    // 输出杨辉三角形
    printf("杨辉三角形如下:\n");
    for (i = 0; i < n; i++) {
        for (j = 0; j <= i; j++) {
            printf("%-6d", triangle[i][j]);  // 输出域宽为6,左对齐
        }
        printf("\n");
    }

    return 0;
}

在上述代码中,我们首先定义了一个二维数组 triangle 来存储杨辉三角形。然后使用 scanf 函数从用户输入中读取行数 n。接着,我们对用户输入进行判断,如果不合法则输出错误信息并终止程序运行。然后,我们对第一行和对角线上的元素进行初始化,即每行第一个和最后一个元素为1。接着,我们计算三角形中间的元素,即使用上一行的元素相加得到当前行的元素。最后,我们输出杨辉三角形,每个数值输出域宽为6,左对齐。

需要注意的是,由于杨辉三角形的行数最多为20,因此我们在代码中使用了 #define 指令来定义了最大行数为20。如果需要计算更大的杨辉三角形,可以将该值设为更大的数。


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