原题目:
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
一、实现代码:
#include <stdio.h>
int main()
{
int arr1[] = { 1,3,5,7,9 };
int arr2[] = { 2,4,6,8,10 };
int tmp = 0;
int i = 0;
int sz = sizeof(arr1) / sizeof(arr1[0]);
for (i = 0; i < sz; i++)
{
tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
return 0;
}
二、代码讲解:
思路一:
因为交换两个变量的时候创建了一个临时变量,所以交换两个数组就创建一个临时数组:
#include <stdio.h>
int main()
{
int arr1[] = { 1,3,5,7,9 };
int arr2[] = { 2,4,6,8,10 };
//交换两个字符串内容,注strcopy是拷贝字符串的
//创建临时数组:
int tmp[5] = { 0 };//这里的5是依据arr1和arr2的数组个数写的,有局限性
tmp = arr1;
arr1 = arr2;
arr2 = tmp;
return 0;
}
注意:上述代码是错误的!
数组名是指针,是首元素的地址,是地址常量,就像门牌号,这种写法只是交换了两个房间的门牌号,并没有交换两个房间里的内容。而要实现的是交换两个房间里的内容。
可以创建一个临时数组,但是不应该对门牌号直接操作,常量地址是不能改的。
思路二:
所以实现代码:
#include <stdio.h>
int main()
{
int arr1[] = { 1,3,5,7,9 };
int arr2[] = { 2,4,6,8,10 };
//创建一个整型变量:
int tmp = 0;
int i = 0;
int sz = sizeof(arr1) / sizeof(arr1[0]);
//两个数组对应元素的下标是一样的
for (i = 0; i < sz; i++)
{
tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}//一次循环交换一对
return 0;
}