2015-10-18 92 views
-1

例如,一個數組:{1, 2, 3}如何循環一個整數數組,並將正數和負數保存到另一個數組中?

我該如何製作一個循環此數組以獲得{1, -1, 2, -2, 3, -3}輸出的程序?

我試圖做這樣的事情:

#include <stdio.h> 

int main() 
{ 
    int n = 3; 
    int arr[3] = {1, 2, 3}; 
    int result[6]; 


    int i, j, k; 
    for(i = 0; i < n*2; i++) 
    { 
     for(j = 0; j < n; j++) 
     { 
      for(k = 0; k < 2; k++) 
      { 
       if((i+1) % 2 != 0) 
       { 
        result[i] = arr[j]; 
       } 
       else if((i+1) % 2 == 0) 
       { 
        result[i] = -arr[j]; 
       } 
      } 
     } 
    } 

    for(i = 0; i < n*2; i++) 
    { 
     printf("%d ", result[i]); 
    } 
} 

但它只輸出{3, -3, 3, -3, 3, -3} 我想我的邏輯是完美的xD。誰能幫忙?

+0

你應該做一些調試。 –

+0

由於'a0_over_a_size'和'possible_roots'未定義,您的代碼將無法編譯。 – MikeCAT

+0

糟糕。當我將代碼放入帖子時,我重命名了這些變量。我可能無法提前更改它。 Imma編輯它noe。 – fixotherm

回答

2

簡單實現:只存儲正值和負值。

#include <stdio.h> 

int main(void) 
{ 
    int n = 3; 
    int arr[3] = {1, 2, 3}; 
    int result[6]; 

    int i; 
    for (i = 0; i < n; i++) 
    { 
     result[i * 2] = arr[i]; 
     result[i * 2 + 1] = -arr[i]; 
    } 

    for(i = 0; i < n * 2; i++) 
    { 
     printf("%d\n", result[i]); 
    } 

    return 0; 
} 
+0

哦。爲什麼我沒有想到這一點。我的想法太複雜了。 – fixotherm

0

或者,如果你只是想輸出你可以這樣做:

#include <stdio.h> 

int main(void) 
{ 
    int n = 3; 
    int arr[3] = {1, 2, 3}; 

    int i; 
    for (i = 0; i < n; i++) 
    { 
     printf("%d ",arr[i]); 
     printf("%d ",-1*arr[i]); 
    } 
    return 0; 
} 
1

此塊似乎工作:

int src[] = { 1, 2, 3}; 

    int dest[(sizeof(src)/sizeof(int)) * 2]; 

    int destCount = 0; 

    for (int i = 0; i < sizeof(src)/sizeof(int); i++) { 
     dest[destCount++] = abs(src[i]); 
     dest[destCount++] = -(abs(src[i])); 
    } 

    for (int i = 0; i < (sizeof(src)/sizeof(int)) * 2; i++) { 
     printf("%d\n", dest[i]); 
    } 

我把ABS()調用,以確保您得到一個正數和一個負數。如果這不是你想要的,那麼就把它們除掉。

相關問題