将int数组转换为单个int

时间:2013-12-20 17:25:54

标签: c++

我正在尝试将array [] = {1,2,3}转换为int number = 123;我怎么能这样做?

我的代码是:

int main()
{

    int array[]={1,2,3};
    int number;

    for (int i =0; 3<i ; i++){
        int val=1;
        for(int j=0; j<i; j++ ){
                val*=10;
        }
        number += array[i] *val;

    }
    cout<<number;

    while(1);
    return 0;
}

4 个答案:

答案 0 :(得分:4)

你在错误的“方向”添加数字。要保持数字顺序,您需要将number变量乘以10,然后添加array[i]而不是乘以array[i]并将其添加到number

在使用它之前,您还需要将number初始化为零,因为变量具有随机值,直到明确给出它为止。

您还需要执行i < 3(“i小于3时循环”而不是3 < i(“循环时3小于i”,这从来都不是真的。)

int array[] = {1,2,3};
int number = 0;

for (int i = 0; i < 3; i++) {
    number *= 10;
    number += array[i];
}

cout << number;

让我们来看看会发生什么。

  • 一开始,number等于零。
  • 我们进入循环。首先,i等于0。
    • 我们将number乘以10.对于第一次迭代,number之后仍为零。
    • 我们将array[0](1)添加到numberNumber现在为1。
  • i现在递增并且等于1. 1小于3,所以我们再次进入循环体。
    • 我们再次将number乘以10,以便为下一个数字腾出空间。 number现在等于10。
    • 我们将array[1](2)添加到numberNumber现在是12。
  • i增量并且等于2. 2小于3,所以我们重复。
    • 我们将number乘以10,再次为下一个数字腾出空间。它现在是120。
    • 我们将array[2](3)添加到number,使其成为123,即期望的结果。
  • i递增并变为3. 3显然不小于3,所以我们退出循环。
  • 我们将number(123)打印到控制台。

答案 1 :(得分:2)

我会使用溪流这样做,因为你的情况实际上是关于词法解释。

int number;
std::array<int, 3> arr { 1,2,3 };
std::stringstream ss;
for(int i : arr) ss << i;
ss >> number;
std::cout << number;

或当然如果您不需要号码本身,您可以使用std::cout

std::array<int, 3> arr { 1,2,3 };
for(int i : arr) std::cout << i;

答案 2 :(得分:1)

#include <iostream>
#include <cmath>

int main()
{
    int numarray[] = {1,2,3};
    int num = 0;

    for(int i = 2; i>=0; i--)
    {
        num += numarray[2-i]*pow(10,i);
    }

    std::cout << num;
    return 0;
}

将2替换为数字数组的最大大小(m)减去1,用于不同大小的数组。

答案 3 :(得分:0)

看起来你的第一个for循环搞砸了。试试这个:

for (int i =0; i<3 ; i++){
    int val=1;
    for(int j=0; j<(3-i); j++ ){
            val*=10;
    }
    number += array[i] *val;

}