在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){...}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |