【问题标题】:Attempt to print an array prints nothing尝试打印数组不打印
【发布时间】:2013-12-08 22:06:56
【问题描述】:

我正在尝试创建一个打印数组的程序。我希望这个程序的输出是:

10000
00000
00000
00000
00000

这不是发生的事情。相反,它什么也不打印。没有编译错误。我有 Microsoft Visual Studio 2010。

#include "stdafx.h"
#include <iostream>
int main()
{
    using namespace std;
    int a [5] [5] = {0};
    a [1] [1] = 1;
    int xcount = 0;
    int ycount = 0;
    while(xcount < 6);
    {
        cout << a [xcount] [ycount];
        xcount = xcount + 1;
        if(xcount = 6)
        {
            ycount = ycount + 1;
            xcount = xcount + 1;
            if(ycount = 6)
            {
                exit(0);
            }
        }
    }
    return 0;
}

任何帮助将不胜感激。

【问题讨论】:

  • 请缩进您的代码。它更容易阅读。
  • 您是否在调试器中单步执行了代码?
  • 我不记得{0} 是初始化整个数组还是只初始化第一个元素。您应该使用调试器检查这一点。
  • 见 xcount = 6 和 ycount = 6
  • @ItzWarty 请不要在问题编辑中更正代码——而是写一个答案。

标签: c++ arrays loops


【解决方案1】:

如果我理解正确,您正在尝试按列输出数组。您的代码包含许多错误,包括 while 语句末尾的分号。正确的程序可能如下所示

#include "stdafx.h"
#include <iostream>

int main()
{
    const size_t N = 5; 
    int a[N][N] = { 1 };

    int xcount = 0;
    int ycount = 0;

    while ( true )
    {
        std::cout << a[xcount][ycount];

        if ( ++xcount == N )
        {
            std::cout << std::endl;
            xcount = 0;

            if ( ++ycount == N )
            {
                break;
            }
        }
    }

    return 0;
}

【讨论】:

    【解决方案2】:
    if (xcount=6)  // This sets xcount to 6
    

    将其更改为:

    if (xcount==6) // this compares xcount with 6
    

    现在编辑 ;问题又来了:

    while(xcount &lt; 6); 将无限循环,因为 xcount 没有任何变化 - 删除 ;

    【讨论】:

      【解决方案3】:

      去掉分号:

      while (xcount<6);
      

      除此之外,算法是错误的。替换第二个

      xcount=xcount+1;
      

      通过

      xcount=0;
      

      附: for 循环在这里会更好。因为你知道循环的范围,所以它会更干净:

      for (int ycount=0; ycount<6; ++ycount)
      {
          for (int xcount=0; xcount<6; ++xcount)
              cout << a[xcount][ycount];
          cout << endl;
      }
      

      请注意,原始解决方案中没有行分隔符。

      附言在比较中使用 ==。

      【讨论】:

      • 那么 xcount 会在哪里改变呢?您需要将其更改为从左向右移动
      • xcount 增量有两个,第一个正确,第二个错误。
      • while 循环也是错误的,但是会在 if(ycount = 6) { exit(0); }(假设有两个等号)
      • 哦,有道理。我虽然他/她的意思是第一个 xcount=xcount+1
      • 还是不行。它打印 00000,然后打印一些非常长的负数:/ 也许初始化有问题
      【解决方案4】:

      你应该使用 for 循环而不是 while 试试这个:

      for(int xcount=0; xcount<5; xcount++) 
      {
            for(int ycount=0; ycount<5; ycount++)
            {
                    cout<< a[xcount][ycount];
             }
            cout<<endl;
       }
       a[0][0] = 1;
      

      【讨论】:

        猜你喜欢
        • 2022-11-20
        • 2014-05-29
        • 1970-01-01
        • 2016-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-26
        相关资源
        最近更新 更多