用户输入到数组中

时间:2015-08-29 21:42:57

标签: 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: " << 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]?

5 个答案:

答案 0 :(得分:1)

请测试这个新代码,我使用char数组取输入12345然后将其转换为整数数组,然后以相反的顺序打印它以达到你所需要的,你可以在第二个for循环中改变12345到54321的位置然后修改第3个循环以打印从j = 0到j <5

的数字
#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;
}

答案 1 :(得分:0)

54321本身被认为是一个整数。 为了在这种情况下在数组中实现[5] [4] [3] [2] [1],用户必须单独键入每个整数。 五 输入 4 输入 3 输入 2 输入 1 输入

答案 2 :(得分:0)

这是因为您要输入的每个号码之间必须有空格(或白色字符)。 解析器看起来就像一个不是五位数的数字......

答案 3 :(得分:0)

您接收输入的方法要求您按&#34;输入&#34;每次提交每个整数后。

使用不同的方法从用户获取数据,或者希望用户在每个整数后按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.
}

请记住,索引0将包含您的最小数字,索引5将包含您的最大数字: &#34; 21354&#34;将存储为{4,5,3,1,2},其中值5为索引1.因此打印将需要反向循环。

这样的事情:

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

答案 4 :(得分:-1)

您正在声明您的二维数组错误地获得您想要的结果。尝试切换阵列,使其看起来像这样。

int integer[5][1];

这也是更好地理解基本数组功能的一个很好的参考。 http://www.cplusplus.com/doc/tutorial/arrays/