代码解析:

在 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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论