T611379 站方阵
解题思路
-
问题分析:
-
题目要求生成一个n×n的方阵,学号从1开始按行依次排列。
-
第一行填充1到n,第二行填充n+1到2n,以此类推,直到填满n×n个数字。
-
需要特别注意输出格式:数字之间用空格分隔,行末不能有多余空格。
-
-
实现方法:
-
使用双重循环填充二维数组,外层循环控制行,内层循环控制列。
-
使用一个计数器x从1开始递增,依次填充到数组的每个位置。
-
输出时同样使用双重循环,注意处理行末空格问题。
-
-
注意事项:
-
数组下标从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
代码解释
-
输入处理:
-
读取整数n,表示方阵的大小。
-
-
数组填充:
-
使用变量x从1开始计数。
-
双重循环遍历数组的每个位置,依次填入递增的数字。
-
-
输出处理:
-
双重循环遍历数组进行输出。
-
在输出每个元素后,检查是否是当前行的最后一个元素,如果不是则输出空格,避免行末多余空格。
-
每行输出结束后换行。
-
示例分析
对于输入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

浙公网安备 33010602011771号