将俩个数组的内容交换

我们之前做过俩个变量的值的交换,这次的题目是将俩个数组的内容交换,其本质是一样的。众所周知,数组中的值是不可以通过赋值来交换的。不同在于我们需要遍历数组,将数组1与数组2中的内容一一进行交换。和之前一样,我们有俩种方法。

因为我们俩种方法的主函数是一致的,这样我们就可以根据俩个方法创建俩个函数,在主函数中直接调用,就可以减少好多工作量啦!

方法一:创建临时变量

#include
#include

void changearray(int arr1[], int arr2[])
{
	int i = 0; int temp = 0;
	for (i = 0; i <5; i++)
	{
		temp = arr1[i];
		arr1[i] = arr2[i];
		arr2[i] = temp;
	}

}
int main()     //主函数
{
	int arr1[5] = { 2, 7, 12, 5, 9 };
	int arr2[5] = { 9, 13, 23, 6, 1 };
	int i, j;
	printf("before arr1: ");
	for (i = 0; i < 5; i++){
		printf("%d ", arr1[i]);		
	}
	printf("\n");
	printf("before arr2: ");
	for (j = 0; j < 5; j++){
		printf("%d ", arr2[j]);
	}
	printf("\n");
	changearray(arr1, arr2);
	int m; int n;
	printf("after arr1: ");
	for (m = 0; m < 5; m++){
		printf("%d ", arr1[m]);
	}
	printf("\n");
	printf("after arr2: ");
	for (n = 0; n < 5; n++){
		printf("%d ", arr2[n]);
	}
	printf("\n");

	system("pause");
	return 0;
}

方法二:异或法

#include
#include

void changearray(int arr1[], int arr2[])
{
	int i = 0; int temp = 0;
	for (i = 0; i <5; i++)
	{
		arr1[i] = arr1[i] ^ arr2[i];
		arr2[i] = arr1[i] ^ arr2[i];
		arr1[i] = arr1[i] ^ arr2[i];
	}

}
int main()    //主函数
{
	int arr1[5] = { 2, 7, 12, 5, 9 };
	int arr2[5] = { 9, 13, 23, 6, 1 };
	int i, j;
	printf("before arr1: ");
	for (i = 0; i < 5; i++){
		printf("%d ", arr1[i]);		
	}
	printf("\n");
	printf("before arr2: ");
	for (j = 0; j < 5; j++){
		printf("%d ", arr2[j]);
	}
	printf("\n");
	changearray(arr1, arr2);
	int m; int n;
	printf("after  arr1: ");
	for (m = 0; m < 5; m++){
		printf("%d ", arr1[m]);
	}
	printf("\n");
	printf("after  arr2: ");
	for (n = 0; n < 5; n++){
		printf("%d ", arr2[n]);
	}
	printf("\n");

	system("pause");
	return 0;
}

编写程序中遇到的问题:
追求完美的程序,就要求我们在标准输出格式中下功夫,鉴于目前程序功能不完整,所以力求整洁明了,所以我在输出格式中做了一些调整,使输出界面更美观。

你可能感兴趣的:(C语言)