2017-03-04 11 views
0

私はプログラミングの初心者です。私は配列の要素を逆転させるコードを書こうとしました。ここで私は、私は逆にのみ3つの数字を取得していますし、すべてが5 誰もが私を助けてくださいすることができない出力で配列の要素を逆にする方法は?

#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; 
} 

を書かれている何ですか?私は信じて

+0

Emmm ...あなたは別々に、最初の要素を格納すると仮定されていませんか? –

+0

申し訳ありませんが、私はあなたを取得していない!私はscanfを使用したことを意味します。 – user1712

+0

Eh。それを無視します。押し込んだところで台無しになった。 –

答えて

2

ループ内に実際にループは必要ありません。これは、1つで簡単に行うことができます。

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

は、あなたの最初の問題は、索引付けにjを使用

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

として書かれたループ条件です。これにより、b[j]が1つずつオフになります。あなたは、ループ内

 k--; 
     break; 

も間違っている、と述べた

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

にそれを変更する必要があります。実際には2つのループは必要ありません。以下のように簡略化する。

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

このすべての必要はありません。アイアムの答えを見てください。とても簡単。 –

+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; 
} 
関連する問題