在数组中存储数字,C ++

时间:2016-12-18 16:26:38

标签: c++

我从数字中取数字,如何将它们存储在数组中?

int main()
{
    int n;
    std::cin>>n;
    while (n > 0)
        {
            int digit = n%10;
            n /= 10;
            std::cout<<digit<<" ";
        }

    return 0;
}

4 个答案:

答案 0 :(得分:5)

最好的方法是使用矢量,因为它们可以在运行时轻松调整大小,例如:

int main()
{
    int n;
    std::cin>>n;
    std::vector<int> digitArray;
    while (n > 0)
    {
        int digit = n%10;
        n /= 10;
        std::cout<<digit<<" ";
        digitArray.push_back(digit);
    }
    std::reverse(digitArray.begin(), digitArray.end()); // reverse the order of digits

    return 0;
}

可以像C风格的数组一样访问向量:digitArray[0] =第一个数字。

另一种方法可能是使用固定大小的数组,因为我们知道32位整数只能长达10位,如:

int main()
{
    int n;
    std::cin>>n;
    int digitArray[10] = {0}; //initialize all elements to 0
    int size = 0;
    while (n > 0)
    {
        int digit = n%10;
        n /= 10;
        std::cout<<digit<<" ";
        digitArray[size] = digit;
        ++size;
    }
    std::reverse(std::begin(digitArray), std::begin(digitArray)+(size-1)); // reverse the order of digits

    return 0;
}

这会在大多数时间里给你留下无用的元素,虽然这可能无关紧要。

答案 1 :(得分:0)

首先计算位数,然后创建一个动态数组,并在从lsb移动到msb时将数字从最高指数推送到最低指数0

int main()
{
    int n, count = 0;
    std::cin>>n;
    int m = n;
    while(n > 0)
    {
       n /= 10;
       ++count;
    }
    int *a = new int[count];
    while(m > 0)
    {
       a[--count] = m % 10;
       m /= 10;
    }
    delete[] a;  //don't forget to release the memory.
    return 0;   
}

答案 2 :(得分:0)

要在中执行此操作,必须先分配一个数组。对于32位int,这可以是具有10位数的固定数组(+ NUL char),例如

int main()
{
    int n;
    std::cin >> n;
    char a[11];
    int i = 0;
    while (n > 0) {
        int digit = n % 10;
        a[i] = digit;
        ++i;
        n /= 10;
        std::cout << digit << " ";
    }

    a[i] = '\0'; // final NUL byte
    // the digits are now stored in reverse order in `a`
    return 0;
}

答案 3 :(得分:0)

这种方法可能会帮助您将任何类型的数字输入到数组中。甚至 tou 也可以在其中输入任何二进制数字,例如 00001111。

#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;          //enter size of your number
cin>>n;
string input;
cin>>input;      //enter your number
int arr[n];
for( int i=0;i<n;i++)
{
    arr[i]=input[i] - '0';
}
    for(int i=0;i<n;i++)
    {
        cout<<arr[i];
    }
}