C++ 图案打印在这个C++;密码?

C++ 图案打印在这个C++;密码?,c++,debugging,error-handling,logic,C++,Debugging,Error Handling,Logic,我写了一个程序来打印一个0和1交替的正方形图案。例如,一个5 x 5的正方形看起来是这样的: 我使用了以下代码- #include<iostream.h> int main() { int i, n; cin >> n; //number of rows (and columns) in the n x n matrix for(i = 1; i <= n*n; i++) { cout << " " << i%2;

我写了一个程序来打印一个0和1交替的正方形图案。例如,一个5 x 5的正方形看起来是这样的:

我使用了以下代码-

#include<iostream.h>
int main()
{
  int i, n;
  cin >> n; //number of rows (and columns) in the n x n matrix
  for(i = 1; i <= n*n; i++)
  {
    cout << " " << i%2;
    if(i%n == 0)
    cout << "\n";
  }

  fflush(stdin);
  getchar();
  return 0;
}
#包括
int main()
{
inti,n;
cin>>n;//n x n矩阵中的行(和列)数

对于(i=1;i,在我看来,迭代矩阵的最佳方法是在另一个循环中使用循环

我认为此代码将对您有所帮助:

for(i = 0; i < n; i++) {
    for (j = 1; j <= n; j++) {
        cout<<" "<< (j + i) % 2;
    }
    cout<<"\n";
}
(i=0;i{
对于(j=1;j如果你是一个初学者程序员,那么我建议(无意冒犯)不要尝试太聪明地使用你的方法;代码不起作用的主要原因是(除了各种语法错误)逻辑错误——正如blauerschluessel所指出的

只需使用两个循环,一个用于行,一个用于列:

for (int row = 1; row <= n; row++)
{
    for (int col = 0; col < n; col++)
        cout << " " << ((row % 2) ^ (col % 2));
    cout << "\n";
}

您只需再添加一个参数即可打印该值。下面提到的代码已更新了您正在使用的循环

int num = 0;
for(i = 1; i <= n*n; i++)
{
    num = !num;
    std::cout << " " << num;
    if(i%n == 0) {
        std::cout << "\n";      
        num = n%2 ? num : !num;  

    }
}
int num=0;

对于(i=1;i它无法工作和创建的原因是因为您的逻辑。要解决此问题,您需要更改代码的功能。最简单的处理方法是思考它的功能,并将其与您希望它执行的功能进行比较。这听起来像是为了分配任务,因此我们可以给您答案,但您将无法从o获得任何结果你的帮助,所以我写下这个答案来指导你自己解决它的逻辑

让我们从它的作用开始

当前它将打印0或1次
n*n
。您有一个名为
i
的计数器,它将从0开始每次递增到
(n*n)-1
。如果要打印此数字
i
,您将得到
n=5

 1  2  3  4  5
 6  7  8  9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
现在,您当前检查值
i
是奇数还是偶数
i%2
,这将使值为0或1。给出下表

1  0  1  0  1
0  1  0  1  0
1  0  1  0  1
0  1  0  1  0
1  0  1  0  1
现在,在
n=4
的情况下,您的计数器
i
将打印出来,为您提供一个表格

 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16
现在如果你打印出奇数或偶数图案

1  0  1  0
1  0  1  0
1  0  1  0
1  0  1  0

这种图案差异是由于打印的正方形或更精确的矩阵的形状导致打印数字的图案发生变化。要解决这一问题,您需要调整确定打印哪个数字的逻辑,因为它只适用于奇数宽度的矩阵。

最明显的错误是完全l一个缩进和一个最好的描述为无政府状态的支撑样式。请清理这个代码。是的,这部分是它们所构建的。压痕样式与编译器对编译器的意义没有关系,但是它对编码器有重要意义。C++是一个最好的野兽,所以你可以做任何事情来制造F。尽可能清晰地表达你的代码对你有很大帮助,特别是当你向别人寻求帮助时,他们需要快速理解你在做什么。塔德曼,美学不是这里的问题。在学习如何编码时,美学也应该是次要的。@soham,我可以向你保证,你的代码正确地交替打印0和1。我也是一个了不起的人喜欢在纸上调试东西(更像数学家),也许只需在一行中写下你当前的0、1,在另一行中写下你当前的“i”。然后错误就会变得非常明显。尽管如此,迟早你应该遵循tadman给你的所有建议,这绝对是程序员进步的一大步。你确定你发布了编译和测试过的代码吗?您使用的编译器是什么?(1)将
替换为
(2)删除
fflush(stdin)
!(3)注释是
/
而不是“\\\”。我不认为
j%n
是必要的,因为它只在循环的最后一次迭代中才是正确的;只需将它放在内部循环之后。当然,你是对的,谢谢。我的回答不好。更新了。是的……我知道使用两个循环(嵌套)创建模式的传统方法…但我试着做一些不同的事情…@soham你给自己设置了一个挑战,这很好;但在这种特殊情况下,你的问题实际上与编程无关,也许……顺便说一句,谢谢
 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16
1  0  1  0
1  0  1  0
1  0  1  0
1  0  1  0