8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 c 中反转数组

Howcanoe Wang 2月前

32 0

我查看了一些关于用 C 语言反转数组的视频,因此我知道我的逻辑是正确的。这是我的代码:#include void reverse(int arr[],unsigned int len){int i=0;int n=le...

我查看了一些用 C 语言反转数组的视频,因此我知道我的逻辑是正确的。这是我的代码:

#include <stdio.h>
void reverse( int arr[], unsigned int len )
{
int i=0;
int n=len;
int j=len-1;
int temp;

while (i<n) 
    {
        temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
        i++;
        j--;
    }
}

void reverse( int arr[], unsigned int len ); 

int main( void )
{
  int a[] = {11, 19, 13};
  unsigned int len = 3;

  reverse( a, len );

  int k=0;
  for( k=0; k<len; k++ )
  {   
     printf( "%d ", a[k] );
  }
  printf( "\n" ); 

  return 0;
}

它输出相同的数组。我找不到问题出在哪里。我应该为函数返回一些内容 reverse 吗?

帖子版权声明 1、本帖标题:在 c 中反转数组
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Howcanoe Wang在本站《arrays》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 除此之外,为了养成良好的编程习惯,请尝试手动避免参数。例如,在您使用的代码中,len、i、j、n。

     #include <stdio.h>
    void reverse( int arr[],int i,int j );
    void reverse( int arr[], int i,int j )
    {
    int temp;
    while (i<j) 
    {
        temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
        i++;
        j--;
      }
    }
    int main() 
    { 
     int arr[] = {11, 19, 13};
     int len=sizeof(arr)/sizeof(arr[0]);
      int i=0;
      int j=len-1;
      reverse( arr,i,j);
      for (int k=0; k <len; k++)
      printf("%d ", arr[k]);
      return 0; 
      }
    
  • 您正在反转数组两次,因此一旦您反转它,您就会再次反转它,直到它变得与原始数组相同。

    要停止反转,请勿运行循环直到 n ,而是运行它直到 j .

  • 您正在反转数组两次;这就是为什么您得到原始数组。

    怎么做?以一个包含 10 个元素的数组为例。第一步,你将交换第 0 个和第 9 个元素。最后一步,你将交换第 9 个和第 0 个元素。最终结果:没有变化。

    你不想运行 i n 。你想运行 i j ,这样你就不会交换元素(即改变条件为 while (i < j) { ... } )

返回
作者最近主题: