C ++数组输出问题

时间:2015-11-04 00:04:02

标签: c++ arrays

我正在编写一个简单的程序,需要接受用户在其数组中想要的元素数量。然后程序需要读入数组的元素并显示输出。该计划的一些规则是:

  • 要处理的最大整数数为20.
  • 输入和显示的所有数字都是整数值。

出于某种原因,我不断收到数组的输出以及转发给用户的上一个问题。

EX:

Output Example

#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;
}

3 个答案:

答案 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