代码解析:
在 main 函数中,我们首先输入三个整数 N、i 和 j,分别表示方格的大小和给定位置的行号和列号。
然后,使用循环输出与给定位置同行的格子位置。遍历从 1 到 N 的每一列,输出格子位置 (i, col)。如果当前列不是最后一列,则在格子位置之后输出一个空格。
接下来,使用循环输出与给定位置同列的格子位置。遍历从 1 到 N 的每一行,输出格子位置 (row, j)。如果当前行不是最后一行,则在格子位置之后输出一个空格。
然后,输出与给定位置同左上到右下对角线的格子位置。根据给定位置的行号和列号的关系,确定同左上到右下对角线上格子位置的起始行号和列号。然后,使用循环输出与给定位置同左上到右下对角线的格子位置 (start_row, start_col),并逐次增加行号和列号。如果当前格子位置不是同左上到右下对角线的最后一个格子位置,则在格子位置之后输出一个空格。
最后,输出与给定位置同左下到右上对角线的格子位置。根据给定位置的行号和列号的关系,确定同左下到右上对角线上格子位置的终止行号和列号。然后,使用循环输出与给定位置同左下到右上对角线的格子位置 (end_row, end_col),并逐次减少行号和增加列号。如果当前格子位置不是同左下到右上对角线的最后一个格子位置,则在格子位置之后输出一个空格。
参考代码:
#include <iostream>
using namespace std;
int main() {
int N, i, j;
cin >> N >> i >> j;
// 输出同一行格子位置
for (int col = 1; col <= N; col++) {
cout << "(" << i << "," << col << ")";
if (col != N) {
cout << " ";
}
}
cout << endl;
// 输出同一列格子位置
for (int row = 1; row <= N; row++) {
cout << "(" << row << "," << j << ")";
if (row != N) {
cout << " ";
}
}
cout << endl;
// 输出同一左上到右下对角线格子位置
int start_row, start_col;
if (i <= j) {
start_row = 1;
start_col = j - i + 1;
} else {
start_row = i - j + 1;
start_col = 1;
}
while (start_row <= N && start_col <= N) {
cout << "(" << start_row << "," << start_col << ")";
start_row++;
start_col++;
if (start_row <= N && start_col <= N) {
cout << " ";
}
}
cout << endl;
// 输出同一左下到右上对角线格子位置
int end_row, end_col;
if (i + j <= N + 1) {
end_row = i + j - 1;
end_col = 1;
} else {
end_row = N;
end_col = i + j - N;
}
while (end_row >= 1 && end_col <= N) {
cout << "(" << end_row << "," << end_col << ")";
end_row--;
end_col++;
if (end_row >= 1 && end_col <= N) {
cout << " ";
}
}
cout << endl;
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复