B4531

[信息与未来 2026] 南京名片

图形输出题的关键是把每个坐标是否为星号写成条件。

一、先回答问题

结论

逐行逐列判断:N 看两侧和主对角线;J 看第一行、中间列、最后一行左半段。

课堂安排

先抓住模型,再用一个小样例手推,最后把判断写成稳定的 C++14 代码。

二、核心观察

N

`j==0 || j==n-1 || i==j`

J

`i==0 || j==mid || (i==n-1 && j<=mid)`

三、互动演示

四、自己选答案

问题 1:这题最关键的状态是什么?

五、手推结果

位置NJ
第一行两边+对角全是星号
最后一行两边+对角左半段+中线

六、C++14 参考代码

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    int mid = n / 2;

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (j == 0 || j == n - 1 || i == j) cout << '*';
            else cout << ' ';
        }
        cout << ' ';
        for (int j = 0; j < n; j++) {
            if (i == 0 || j == mid || (i == n - 1 && j <= mid)) cout << '*';
            else cout << ' ';
        }
        cout << '\n';
    }
    return 0;
}
读代码重点

先看状态变量,再看核心判断,最后检查边界和输出格式。