如何用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
相关产品推荐
相关产品推荐

