T611379 站方阵

解题思路

  1. 问题分析

    • 题目要求生成一个n×n的方阵,学号从1开始按行依次排列。

    • 第一行填充1到n,第二行填充n+1到2n,以此类推,直到填满n×n个数字。

    • 需要特别注意输出格式:数字之间用空格分隔,行末不能有多余空格。

  2. 实现方法

    • 使用双重循环填充二维数组,外层循环控制行,内层循环控制列。

    • 使用一个计数器x从1开始递增,依次填充到数组的每个位置。

    • 输出时同样使用双重循环,注意处理行末空格问题。

  3. 注意事项

    • 数组下标从1开始更符合题目描述(学号从1开始)。

    • 输出时要确保每行最后一个数字后面没有多余空格。

    • 题目保证n≤15,所以数组大小设为20×20足够使用。

代码注释

#include<bits/stdc++.h>
using namespace std;
int n, a[20][20]; // 定义方阵大小n和20x20的二维数组(预留空间)

int main()
{
    cin >> n; // 输入方阵大小n

    // 填充二维数组
    int x = 1; // 初始化填充数字从1开始
    for(int i = 1; i <= n; i++) // 遍历每一行
        for(int j = 1; j <= n; j++) // 遍历每一列
        {    
            a[i][j] = x; // 将当前数字x填入i行j列
            x++; // 数字递增
        }     
    
    // 输出方阵
    for(int i = 1; i <= n; i++) // 遍历每一行
    {
        for(int j = 1; j <= n; j++) // 遍历每一列
        {
            cout << a[i][j]; // 输出当前元素
            if(j != n) cout << " "; // 如果不是该行最后一个元素,输出空格
        }
        cout << endl; // 每行输出结束后换行
    } 
    return 

代码解释

  1. 输入处理

    • 读取整数n,表示方阵的大小。

  2. 数组填充

    • 使用变量x从1开始计数。

    • 双重循环遍历数组的每个位置,依次填入递增的数字。

  3. 输出处理

    • 双重循环遍历数组进行输出。

    • 在输出每个元素后,检查是否是当前行的最后一个元素,如果不是则输出空格,避免行末多余空格。

    • 每行输出结束后换行。

示例分析

对于输入3:

填充过程:

  • 第一行:a[1][1]=1, a[1][2]=2, a[1][3]=3

  • 第二行:a[2][1]=4, a[2][2]=5, a[2][3]=6

  • 第三行:a[3][1]=7, a[3][2]=8, a[3][3]=9

输出:

1 2 3
4 5 6
7 8 9
posted @ 2025-05-24 15:30  CRt0729  阅读(34)  评论(0)    收藏  举报