2013-12-20 92 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。

相關問題