我需要打印一个包含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
任何帮助都会很棒!
答案 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个项目。您需要重构此嵌套循环以获得所需的结果。