前言
今天我们来看看如何交换两个数组中的内容吧,这两个数组是一样大的哦
题目描述
今天杰克想要将两个数组中的内容进行交换,你可以帮杰克使用C语言的方式实现嘛。
输入描述
无
输出描述
两行,两个数组置换之后的结果
题目分析
我们如何将两个数组中的内容进行交换呢,在这里我们以前交换两个数的那种方式还可不可以使用呢。我们来看看:
我们设置数组arr1和arr2,再设置一个数组tmp,tmp作为数组的中转站,第一步将arr1数组给tmp数组,第二步将arr2数组给arr1,第三步将tmp数组给arr2。
如图:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 4,5,6,7,8 };
int tmp[] = { 0 };
tmp = arr1;
arr1 = arr2;
arr2 = tmp;
return 0;
}
听起来是不是可以,如果你认为可以那就错啦,如果arr1和arr2都是一个具体值的话这当然没问题,但是它是一个数组,所以这种情况不能实现,主要有两个原因:
1.在定义tmp数组的时候我们一定会将其初始化,但是在我们想利用tmp数组作为中转站的时候,中转站的元素也必须是5个元素啊,但是这里没有,我们初始化tmp数组之后只会有一个元素,所以它的空间不够。
2.数组名是什么?它是一个地址啊,数组名的概念就是数组首元素的地址,我们需要交换的是两个数组中的元素,我们这样将地址赋予给一个地址是不行的,地址是一个常量值,我们需要的是地址背后的空间。
虽然思路有点问题,但是我们的方式也不是全错的,让我们修改一下
代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 4,5,6,7,8 };
int i;
int sz = sizeof(arr1) / sizeof arr1[0];//计算数组中元素个数
//置换两个数组中的元素
for (i = 0;i < sz;i++)
{
int tmp;
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;
}
运行结果
我们使用一个循环完成,我们将数组中每一个元素进行交换,完成循环之后我们对arr1数组中元素和arr2数组中元素进行打印,之后看看是否已经完成置换。
这是我们程序输出的结果,结果显示已经完成置换。
今天就到这里啦,杰克得到了你们的帮助很开心呢,继续加油哦!有任何问题都可以评论区留言嘞!一起努力!!