关于#矩阵#的问题,如何解决?

题目描述
输入一个正整数n,表示矩阵的行数和列数,生成如下矩阵并进行输出。例如:输入3,则输出

1 3 4

2 5 8

6 7 9

输入描述
一行包含一个整数 n,表示矩阵的行数和列数。

输出描述
一个n行n列的矩阵

样例1
输入
3
输出
1 3 4
2 5 8
6 7 9
提示
1 <= n <= 100

该回答引用ChatGPT

以下是一个C++代码示例,用于生成并输出矩阵:


#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;

    int mat[n][n];
    int num = 1;

    // 生成矩阵
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (i+j < n) {
                mat[i][j] = num++;
            } else {
                mat[i][j] = 0;
            }
        }
    }

    // 输出矩阵
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (mat[j][i] != 0) {
                cout << mat[j][i] << " ";
            }
        }
        cout << endl;
    }

    return 0;
}


#include <stdio.h>

int main() {
    int n;
    printf("请输入一个正整数n(1<=n<=100):");
    scanf("%d", &n);
    while (n < 1 || n > 100) {
      printf("输入错误,请重新输入一个正整数n(1<=n<=100):");
      scanf("%d", &n);
    }
    int matrix[n][n];
    int num = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            matrix[j][i-j] = num++;
        }
    }

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}

该程序首先从标准输入中读取一个正整数n,表示矩阵的行数和列数。接下来,创建一个n行n列的矩阵,并使用两个嵌套循环遍历每个元素,将其赋值为从1开始递增的数字。最后,使用另外两个嵌套循环遍历整个矩阵,并输出每个元素的值。