将数组A中的内容和数组B中的内容进行交换。(数组一样大,函数调用法和普通写法的对比)

将数组A中的内容和数组B中的内容进行交换。(数组一样大)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int i;
	int a[10], b[10];
	int t = 0;
	printf("请输入两个数组的值:\n");
	for (i = 0; i < 10; i++){
		printf("a[%d]=", i);
		scanf("%d", &a[i]);
	}
	for (i = 0; i < 10; i++){
		printf("b[%d]=", i);
		scanf("%d", &b[i]);
	}
	for (i = 0; i < 10; i++) {
		t = a[i]; a[i] = b[i]; b[i] = t;
	}
	printf("交换后两个数组的内容为:\n");
	for (i = 0; i < 10; i++) {
		printf("a[%d]=%d\n", i, a[i]);
	}
	for (i = 0; i < 10; i++) {
		printf("b[%d]=%d\n", i, b[i]);
	}
	system("pause");
	
}

编程思路:
首先从键盘键入两个大小为10的整形数组;(用for循环控制每次键入的值时数组小标的变化)
其次是采用引入中间变量t交换两个数组对应位置的值;(对应位置同样采用for循环)
最后是输出交换后两个新的数组的内容。(控制小标同样采用for循环控制下标的变化)

采用函数调用法来编写程序,
我们都知道函数具有很强的移植性,而数组交换若是数组太大的话,我们在主函数中要多次遍历输入输出数组的值,这将使我们的代码变得冗长,大大降低程序的可读性,因此,函数的可移植性在这儿就显得尤为重要。
我采用了void函数来实现数组的输入和输出,数组的交换部分放在main函数中,这样一来,代码显得更加简洁干练,我将原来在主函数遍历数组部分注释掉,用以对比函数给我们带来的移植性和函数的简洁干练。

我的代码如下:

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void scanfArray(int a[], int n){
	int i;
	for (i = 0; i < n; i++){
		scanf("%d", &a[i]);
	}
}

void printArray(int a[], int n){
	int i;
	for (i = 0; i < n; i++){
		printf("%d ", a[i]);
	}
	putchar('\n');
}

int main() {
	int a[10], b[10];
	int i, tmp;
	printf("请输入两个数组的值:\n");
	/*for (i = 0; i < 10; i++){
		printf("a[%d]= ", i);
		scanf("%d\t", &a[i]);
	}
	for (i = 0; i < 10; i++){
		printf("b[%d]= ", i);
		scanf("%d\t", &b[i]);
	}*/
	scanfArray(a, 10);
	scanfArray(b, 10);
	for (i = 0; i < 10; i++){
		tmp = a[i]; a[i] = b[i]; b[i] = tmp;
	}
	/*for (i = 0; i < 10; i++){
		printf("%d ", a[i]);
	}
	for (i = 0; i < 10; i++){
		printf("%d ", b[i]);
	}*/
	printArray(a, 10);
	printArray(b, 10);
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/gp1330782530/article/details/88707591
今日推荐