加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在c中反转一个数组

发布时间:2020-12-16 10:05:18 所属栏目:百科 来源:网络整理
导读:我检查了一些在C中反转数组的视频,因此我知道我的逻辑是正确的.这是我的代码: #include stdio.hvoid reverse( int arr[],unsigned int len ){int i=0;int n=len;int j=len-1;int temp;while (in) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; i++; j--; }}v
我检查了一些在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;
}

它输出相同的数组.我找不到问题所在.我应该为反向功能返回一些东西吗?

解决方法

你正在反转阵列两次;这就是你拥有原始阵列的原因.

怎么样?举一个10元素数组的例子.作为您的第一步,您将交换第0和第9个元素.作为你的最后一步,你将交换第9和第0个元素.净结果:没有变化.

你不想让我跑到n.你想把i运行到j,这样你就不会交换元素(即将条件改为while(i< j){...})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读