2017-03-04 27 views
0

我是c編程的初學者。我試圖編寫一個代碼來反轉數組的元素。以下是我寫如何反轉數組的元素?

#include <stdio.h> 
int main(void) 
{ 
    int a[5], i, j, b[5], k=5; 
    printf("enter 5 numbers"); 
    for (i=0;i<5;i++) 
    { 
     scanf("%d",&a[i]); 
    } 

    for(i=1;i<5;i++) 
    { 
     for(j=k; j>=1; j--) 
     { 
      b[j] = a[i]; 
      k--; 
      break; 
     } 
    } 

    for(j=1; j<5; j++) 
    { 
     printf("%d\n",b[j]); 
    } 
    return 0; 
} 

在輸出我只得到3倒號,而不是所有5 任何人都可以請幫我嗎?

+0

Emmm ......不是你想先儲存的元素,seperately? –

+0

對不起,我沒有得到你!我的意思是我用過scanf,對吧? – user1712

+0

Eh。忽略它。在縮進中搞砸了。 –

回答

2

你真的不需要循環內的循環。它可以很容易地之一進行:

for(i=0; i<5; i++) 
{ 
    b[i] = a[4-i]; 
} 
0

我相信,你的第一個問題是在寫爲

for(j=k; j>=1; j--) 

在您使用j索引循環條件。這使得b[j]一個接一個。你應該將其更改爲

for(j=k-1; j >= 0; j--) 

這就是說,

 k--; 
     break; 

環內也是錯誤的。其實你不需要兩個循環。簡化如下。

for(i=k-1, j =0; j < k; j++, i--) //j goes up, i goes down. 
{ 
    b[j] = a[i]; 
} 

for(j=0; j<5; j++)    //j starts from 0..... 
{ 
    printf("%d\n",b[j]); 
} 
+0

謝謝你的回答.....但我仍然只得到數字倒數而不是5 – user1712

+0

不需要這一切。看看eyalm的答案。很簡單。 –

+0

@TonyTannous和我決定改變我的數組大小和程序炸燬...... :) –

1

首先數組索引從0不是從1開始。所以,如果你聲明大小數組爲4,那麼有效索引是從0 - 3。爲了更清楚地瞭解這一點,請參見https://www.tutorialspoint.com/cprogramming/c_arrays.htm

現在你正在試圖做的只能用單循環來完成!就像這樣:

#include <stdio.h> 
int main(void) { 
    int a[5],i,j,b[5],k=5; 
    printf("enter 5 numbers"); 
    for(i=0;i<5;i++) 
    { 
     scanf("%d",&a[i]); 
    } 

    //see this : 
    for(i=0;i<5;i++)// runs from 0 to 4 
    { 
     int bIndex = 4 - i;//get index of array b to store element of array a 
     b[bIndex] = a[i]; 
    } 

    for(j=0;j<5;j++) 
    { 
     printf("%d\n",b[j]); 
    } 
    return 0; 
} 
1
#include <stdio.h> 
int main(void) 
{ 
    int a[5], i, j, b[5], k=5; 
    printf("enter 5 numbers"); 
    for (i=0;i<5;i++) 
    { 
     scanf("%d",&a[i]); 
    } 
    `for(i=0;i<5;i++)`//see here begin 
    { 
     `for(j=5-k; j>=0; j++)` 
     { 
      b[j] = a[i]; 
      k--; 
      break; 
     } 
    } 
    `for(j=0; j<5; j++)` 
    { 
     printf("%d\n",b[j]); 
    } 
    return 0; 
}