C++ 用户输入到数组中

C++ 用户输入到数组中,c++,arrays,C++,Arrays,这为什么不将54321的用户整数单独放入数组integer[1][5]作为,[5][4][3][2][1]?而是将54321放入一个数组块中 #include <iostream> #include <iomanip> using namespace std; int main() { int integer[1][5]; int number; cout << "Please enter an integer: " <&l

这为什么不将
54321
的用户整数单独放入数组
integer[1][5]
作为,
[5][4][3][2][1]
?而是将
54321
放入一个数组块中

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    int integer[1][5];
    int number;

    cout << "Please enter an integer: " << endl;

    for (int i = 0; i < 1; i++)
    {
        {
            for (int j = 0; j < 5; j++)
                cin >> integer[i][j];
        }
        cout << endl;
    }

    for (int i = 0; i < 1; i++)
    {
        {
           for (int j = 0; j < 5; j++)
                cout << integer[i][j]<< " ";
        }
        cout << endl;
    }

    system("pause");
    return 0;
}
//why wont this output an integer of 12345 individually into an array of [1][5]?
#包括
#包括
使用名称空间std;
int main()
{
整数[1][5];
整数;
cout整数[i][j];
}

cout您不正确地声明了二维数组以获得所需的结果。尝试切换阵列,使其看起来像这样

int integer[5][1];
这也是更好地理解基本阵列功能的一个很好的参考。
54321本身被视为一个整数。 为了在此场景中在数组中实现[5][4][3][2][1],用户必须单独键入每个整数。 5. 进入 4. 进入 3. 进入 2. 进入 1.
输入

这是因为您要输入的每个数字之间必须有空格(或白色字符)。
解析器将其视为一个数字而不是五位数

您接收输入的方法要求您在每次提交每个整数后按“回车”

使用不同的方法从用户获取数据,或者期望用户在每个整数后按enter键

如果希望继续使用std::cin,另一种方法是在for循环之前、提示符之后获取数据,然后使用for循环查找需要的单个整数

示例:查找1的数字

int data[5], input, size;

cout<<"Enter the data: ";
cin>>input;

for(size = 0; size < 5; ++size){//Assumes array limit = 5.
    data[size] = input%10;
    input = input/10;
    if(input==0)
        break;//Escape if fewer characters than 5 entered.
}
int数据[5],输入,大小;
库廷普特;
对于(size=0;size<5;++size){//假定数组限制为5。
数据[大小]=输入%10;
输入=输入/10;
如果(输入==0)
break;//如果输入的字符少于5,则转义。
}
请记住,索引0将包含您的最小数字,索引5将包含您的最大数字: “21354”将存储为{4,5,3,1,2},其中值5位于索引1处。因此,打印将需要一个反向循环

大概是这样的:

for(int i = size; i >= 0; --i){
    cout<<data[i]<<' ';
}
cout<<endl;
for(int i=size;i>=0;--i){

cout请测试这个新代码,我使用char数组获取输入12345,然后将其转换为整数数组,然后以相反的顺序打印它,以实现您所需要的,您可以在第二个for循环中将12345的位置更改为54321,然后修改第三个for循环以将数字从j=0打印到jbecase
54321
是一个有效的整数正如你调用的
操作符>
所关心的。这意味着你必须在你的输入数字之间加上空格才能使之生效。或者,读一个
int
,然后用10的幂除法把它切成数。嘿,你找到了解决办法吗???穆罕默德·伊凡和安德拉斯·迪克谢谢你…你有b即使是很好的帮助,请注意,数字之间的空格也可以,而不仅仅是换行符。如果你阅读其他答案/评论,你会发现有一个更基本的问题。而且,我不确定我是否看到了你所说的错误。我感谢所有的帮助。我会在几天后回家后尝试所有这些并回复。现在这是更好的是,这就是我认为OP的意思:)如果你认为这个答案是正确的,请你把它标记为正确的,这样其他人也可以从中得到帮助吗?刚刚做了,对此很抱歉。我还是一个新来的stackoverflow.com,很棒的网站!答案有问题吗?你只是不接受它?
#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    char cinteger[5];
    int number[5];

    cout << "Please enter an integer: " << endl;

    for (int j = 0; j < 5; j++)
        cin >> cinteger[j];

    for (int j = 0; j < 5; j++)
    {
        number[j]= cinteger[j] - '0';
    }
    cout << endl;

    for (int j = 5; j > 0; j--){
        cout << "[";
        cout << number[j-1]<< "] ";
    }
    cout << endl;

    return 0;
}