按行和列打印数组(一维数组)

时间:2016-02-18 21:49:10

标签: c++ arrays printing

我需要打印一个包含50个值的int数组,该数组必须包含多行,每行不能包含15个以上的变量。任何人都可以指出我正确的方向或解释我出错的地方吗?

#include <iostream>
using namespace std; 
int main() 
{ 
   int alhpa[51]; 

      for(int i = 0; i < 51; i++)
      {
         alpha[i] = -1; // initializes all elements to -1
      }


      for(int i = 0; i < 51; i++)
         { 
            for(int j = 0; j < 15; j++)
               { 
                  cout << alpha[j] << "\t";
               }  
            cout << endl;
         }


   return 0;
}

所以上面的代码工作它只是没有做我想要的,如果你运行它你会看到数组是按行打印的,每行确实有15个变量。然而问题是它只打印数组中的前15个元素,每次主循环执行过程都被重置,正如我上面所说,唯一的输出是前后15个变量。

我需要弄清楚如何以与现在打印相同的方式打印出这个数组,但是我需要处理和打印数组中的所有元素。

我知道最后一行不会有15,因为只有5的空间,因为15 * 3 = 45

任何帮助都会很棒!

4 个答案:

答案 0 :(得分:1)

更改

cout << alpha[j] << "\t";

if(15*i+j < 51)
    cout << alpha[15*i+j] << "\t";

如果您访问的元素只是j,从0到14循环,那么您只打印前15个值是正常的。

通过此更改,您还可以将外部循环更改为for(int i = 0; i < 4; i++)

答案 1 :(得分:1)

如何修改此代码

for(int i = 0; i < 51; i++)
         { 
            for(int j = 0; j < 15; j++)
               { 
                  cout << alpha[j] << "\t";
               }  
            cout << endl;
         }

到这个

for(int i = 0; i < 51; i += 15)
         { 
            for(int j = i; j < 15+i && j < 51; j++)
               { 
                  cout << alpha[j] << "\t";
               }  
            cout << endl;
         }

这将以每行15行的方式打印它们

在这种情况下,程序的输出将是

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1- 1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1- 1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1- 1
-1 -1 -1 -1 -1 -1

答案 2 :(得分:1)

作为替代方案,您可以使用每行元素的计数器:

int count = 0;

for (int i = 0; i < 51; i++)
{
    cout << alpha[i] << "\t";

    if (++count == 15)
    {
        cout << endl;
        count = 0;
    }
}

if (count > 0)    // EOL after any residual values
    cout << endl;

答案 3 :(得分:0)

你的

cout << alpha[j] << "\t";

仅引用j var,这意味着它将一遍又一遍地重复数组中的前15个项目。您需要重构此嵌套循环以获得所需的结果。