将数组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;
}