我正在编写一个简单的程序,需要接受用户在其数组中想要的元素数量。然后程序需要读入数组的元素并显示输出。该计划的一些规则是:
出于某种原因,我不断收到数组的输出以及转发给用户的上一个问题。
EX:
#include <iostream>
using namespace std;
int main()
{
const int ARRAY_SIZE = 20;
int inputOne = 0;
int arrayOne[ARRAY_SIZE];
cout << "Enter how many numbers you'd like to read in up to 20: ";
cin >> inputOne;
//Input the numbers
for (int input = 0; input < inputOne; input++)
{
cout << "Enter in the numbers: ";
cin >> arrayOne[input];
}
//Display the array
for (int input = 0; input < inputOne; input++)
cout << arrayOne[input];
cout << endl;
system("pause");
return 0;
}
答案 0 :(得分:2)
此输出正确。当你使用cin作为整数时,它会等待一个整数,一旦它得到一个,循环就会继续。因此,当您键入1 2 3 4 5时,您一次向循环中输入多个条目,并且每次循环继续,因为下一个整数已经存在。 您可以通过调整输入来解决此问题:
Enter in the numbers: 1 [RETURN]
Enter in the numbers: 2 [RETURN]
Enter in the numbers: 3 [RETURN]
Enter in the numbers: 4 [RETURN]
Enter in the numbers: 5 [RETURN]
答案 1 :(得分:0)
cin从流中读取,直到空白。根据您的输入,您正在填充流。
当您1 2 3 4 5 <hit return>
cin读取1
并停止时,while循环会转到另一个cin调用,但只有1
被消耗,因此cin找到2
并使用它。等等。
这个澄清,你没有一个真正的问题需要解决。
如果您希望输入数字,就像您在cin >> arrayOne[i++]
时的示例中所做的那样。
如果您想要询问每个号码,只需在您使用cin.ignore()
读取第一个号码后清除该流,以确保输入,因为您只需输入第一个号码。
答案 2 :(得分:-1)
我很惊讶看到你的程序的输出。 问题仅在您输入号码时。 如果您按Enter而不是空格,那么您的代码将产生预期结果。enter image description here