C语言小练习10(交换两个数组内容,两个数组大小相同)
原创
©著作权归作者所有:来自51CTO博客作者努力学习想当一个很大的大佬的原创作品,请联系作者获取转载授权,否则将追究法律责任
如何将两个数组里面的元素做一下交换?已知,数组的元素个数相同
我们已知如果想将两个变量进行交换,可以定义一个新的变量,如下面代码
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;
}
结果如下
可以看出 实现了数组交换的功能
如果代码执行的过程和逻辑一样则说明代码正确
加油!!