You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印N×N方阵的对角线?请帮忙检查我的代码

问题排查与修正

嘿,我帮你找出代码里的问题啦,主要是两个判断条件写错了,导致没法输出预期的对角线图案:

第一个错误:主对角线的判断完全失效

你循环里的i是从1开始的(for (i = 1; i <= n; i++)),但判断主对角线的条件写成了i == 0——这根本不可能触发啊!毕竟i从1跑到n,永远不会等于0。正确的主对角线判断应该是**i == j**,因为行号和列号相等的位置就是主对角线呀。

第二个错误:反对角线的位置算错了

当i和j都从1开始计数时,反对角线上的位置满足i + j == n + 1,而不是你写的n - 1。举个例子,n=5的时候,反对角线的位置是(1,5)、(2,4)、(3,3)、(4,2)、(5,1),它们的和都是5+1=6,而不是5-1=4。原来的条件会让*出现在(1,3)、(2,2)、(3,1)这些完全不对的位置。

修正后的代码

我把这两个问题都改好了,你看看:

#include <iostream>
using namespace std;

int main() {
    int n, i, j;
    cin >> n;
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= n; j++) {
            // 主对角线(行号=列号) 或者 反对角线(行号+列号 = n+1)
            if (i == j || i + j == n + 1) {
                cout << "*";
            } else {
                cout << " ";
            }
        }
        cout << "\n";
    }
    return 0;
}

输入5时的输出效果

运行这个修正后的代码,输入5会得到你想要的对角线图案:

*   *
 * * 
  *  
 * * 
*   *

这样就完美符合N×N方阵的对角线(主对角线+反对角线)效果啦~

内容的提问来源于stack exchange,提问作者KrishJr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:27:38