2013-12-20 74 views
-2

我试图将array [] = {1,2,3}转换为一个int数= 123;我怎样才能做到这一点 ?将一个int数组转换为一个整数

我的代码是这样的:

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; 
} 
+3

那么它在做什么错了? – user1618143

+1

你确定3

+1

它不应该用两个'for'循环来做到这一点,特别是当第一个有一个错字时,它会阻止它工作:'3

回答

4

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

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

你也需要做i < 3(“循环而i小于三”),而不是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在此之后仍为零。 (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)。
+0

你能解释一下数字* = 10是什么意思; “*”是一个指针吗?为什么价值10? – user3123562

+1

@ user3123562不,它不是指针。 'a * = 10;'等于'number = number * 10;' – user2699298

+0

是的,简写为'a = a + b'。 '*'也*用于指针的不同上下文中,但在这里不是这种情况。 – zneak

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; 

} 
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; 
+1

尽管这样做有效,但我不确定这对于编程显然非常陌生的人来说是最好的方法。 – user1618143

+0

@ user1618143为什么?如何使用原始构造(如int [])比使用高级抽象更好? – 111111

+0

对于真实世界的使用,它显然不是。但这似乎并不是现实世界的问题,只是一个试图找出一些基本内容的学生。 'std :: array'可以合理地在这个上下文中使用,但不是流。 – user1618143

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。

相关问题