使用C语言实现数组内容的交换

       前言

        今天我们来看看如何交换两个数组中的内容吧,这两个数组是一样大的哦

        题目描述

        今天杰克想要将两个数组中的内容进行交换,你可以帮杰克使用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数组中元素进行打印,之后看看是否已经完成置换。

        

        这是我们程序输出的结果,结果显示已经完成置换。

        今天就到这里啦,杰克得到了你们的帮助很开心呢,继续加油哦!有任何问题都可以评论区留言嘞!一起努力!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值