2017-03-04 25 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; 
}