如何将两个数组里面的元素做一下交换?已知,数组的元素个数相同

我们已知如果想将两个变量进行交换,可以定义一个新的变量,如下面代码

int a=0;
int b=0;
int c=0;
c=a;
a=b;
b=c;

我代码没有写完整,但大概意思写出来了,就是这样通过第三个变量c实现变量ab之间的交换

如果我们同理把这个方法用在数组上,如以下代码这样写,行不行呢

int arr1[]={1,2,3,4,5};
int arr2[]={6,7,8,9,0};
int arr3[6]={};

arr3=arr1;
arr1=arr2;
arr2=arr3;

这样可行吗?

答案是万万不可的

原因是:例如arr1数组名只是一个地址,表示数组中首元素的地址,如这里的int arr1[]={1,2,3,4,5};  arr1表示首元素1的地址

所以我们只能把下标相同的元素做修改。

所以正确的完整代码如下

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{

int arr1[]={1,2,3,4,5};
int arr2[]={6,7,8,9,0};
int sz=sizeof(arr1)/sizeof(arr1[0]);
int i=0;
int tmp=0;
for(i=0;i<sz;i++)
{
tmp=arr1[i];
arr1[i]=arr2[i];
arr2[i]=tmp;
}

for(i=0;i<sz;i++)
{
printf("%d ",arr1[i]);

}
printf("\n");

for(i=0;i<sz;i++)
{
printf("%d ",arr2[i]);

}
printf("\n");
return 0;

}

结果如下

C语言小练习10(交换两个数组内容,两个数组大小相同)_C语言

可以看出 实现了数组交换的功能

如果代码执行的过程和逻辑一样则说明代码正确



加油!!