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

如何用C++打印指定矩形图案?现有代码输出不符需修正

解决方法:调整0的位置判断条件

首先咱们先理清问题所在:你当前代码里的判断逻辑是当列号j等于行号i时输出0,这就导致每行的0出现在第i列(比如i=4时0在第4列,i=1时0在第1列),但你想要的是0从最右侧开始逐行左移——第一行0在第5列,第二行在第4列,第三行在第3列,第四行在第2列。

修改后的代码方案一(沿用你原来的循环方向)

只需要把判断0的条件改成j == i + 1,同时加上空格分隔数字,让格式和你预期一致:

#include <iostream>
using namespace std;
int main () {
    for (int i = 4 ; i >= 1; i--){
        for (int j = 1; j <=5 ; j++){
            // 调整条件:让0出现在i+1列,刚好对应从右往左移的需求
            if (j == i + 1) cout <<"0";
            else cout <<j;
            // 输出空格分隔数字
            cout << " ";
        }
        cout << endl;
    }
    return 0;
}

更直观的方案二(调整循环方向)

如果你觉得上面的条件不够好理解,可以把外层循环改成从1到4,此时0的位置是6 - i(也就是第5 - i + 1列),逻辑更直白:

#include <iostream>
using namespace std;
int main () {
    for (int i = 1 ; i <= 4; i++){
        for (int j = 1; j <=5 ; j++){
            // i=1时0在第5列,i=2时在第4列,以此类推
            if (j == 6 - i) cout <<"0";
            else cout <<j;
            cout << " ";
        }
        cout << endl;
    }
    return 0;
}

输出结果

运行任意一段代码,都会得到你想要的图案:

1 2 3 4 0
1 2 3 0 5
1 2 0 4 5
1 0 3 4 5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:39:02