所以我把这个程序编写成代码来读取多个整数,然后它应该反向读取数组。但是,它只读回所有0
while (true)
{
cin >> input;
if (input == -1 && gotStuff == false) {return 0;}
else if (input == -1 && gotStuff == true) {break;}
else
{
inputData[pos1] = input;
pos1 ++;
gotStuff = true;
}
}
for (int i = pos1; i >= 0; i--)
{
outputData[pos2] = inputData[pos1];
pos2 ++;
cout << outputData[pos1] << " ";
}
为什么这个读数全部为0?
答案 0 :(得分:5)
你这里有一个明显的问题
for (int i = pos1; i >= 0; i--)
{
outputData[pos2] = inputData[pos1];
pos2 ++;
cout << outputData[pos1] << " ";
}
因为您总是尝试打印outputData[pos1]
,但pos1
永远不会在您的循环中更改。因此,您始终输出相同的字符。类似地,您总是将inputData
的相同字符复制到outputData
数组,因此当循环退出时,outputData
将在不同的索引处包含相同的字符。
您可能会更好运行以下循环,至少复制并打印正确的字符
pos2 = 0;
for (int i = pos1-1; i >= 0; i--)
{
outputData[pos2] = inputData[i];
cout << outputData[pos2] << " ";
pos2++;
}
您的代码可能还有其他问题,因为您未在问题中向我们展示pos1
和pos2
的值已初始化的内容。
答案 1 :(得分:0)
在这里循环遍历数组时:
for (int i = pos1; i >= 0; i--)
{
outputData[pos2] = inputData[pos1];
pos2 ++;
cout << outputData[pos1] << " ";
}
您始终在输入数据中访问相同的位置:pos1
。如果您将此循环更改为此
for (int i = pos1 - 1; i >= 0; i--)
{
outputData[pos2] = inputData[i];
pos2 ++;
cout << outputData[pos2 - 1] << " ";
}
它会像你想要的那样倒计时。那是因为我在循环的每次迭代中递减,而pos1则不是。它可能正在读取所有0,因为inputData[pos1]
为0。