1 题目
函数:max()、swap()
功能:使用指针交换两个数组中的最大值
描述:
输入两个五个元素的数组,使用指针将两个数组中的最大值进行交换
并输出最大值交换之后的两个数组
2 思路
以下都使用指针来进行实现
找到最大值创建 int *max(int *a) 函数,指针指向找出的最大值
交换最大值创建 void swap(int *p1, int *p2) 找到的两个最大值进行交换,即进行指针指向的内容进行交换
3 代码
#include <stdio.h>
#include <stdlib.h>
#define N 5
/**
函数:max()、swap()
功能:使用指针交换两个数组中的最大值
描述:
输入两个五个元素的数组,使用指针将两个数组中的最大值进行交换
并输出最大值交换之后的两个数组
**/
int*max(int*a) {
int*p=a;
for(inti=1;i<N;++i) {
if(*(a+i)>*p)
p=a+i;
}
returnp;
}
voidswap(int*p1,int*p2) {
*p1=*p1^*p2;
*p2=*p1^*p2;
*p1=*p1^*p2;
}
intmain(intargc,charconst*argv[]) {
inta[N],b[N];
int*max_a,*max_b;
// 1. 初始化两个数组
printf("输入数组 a 的5个数字:\n");
for(inti=0;i<N;++i) {
scanf("%d", (a+i));
}
printf("输入数组 b 的5个数字:\n");
for(intj=0;j<N;++j) {
scanf("%d", (b+j));
}
printf("\n数组 a 的5个数字为: ");
for(inti=0;i<N;++i) {
printf("%d ",*(a+i));
}
printf("\n数组 b 的5个数字为: ");
for(intj=0;j<N;++j) {
printf("%d ",*(b+j));
}
// 2. 找出各数组中的最大值
max_a=max(a);
max_b=max(b);
printf("\n数组 a 的最大值:%d",*max_a);
printf("\n数组 b 的最大值:%d",*max_b);
// 3. 对两个最大值进行交换
swap(max_a,max_b);
printf("\n交换最大值之后的数组 a 的5个数字为:");
for(inti=0;i<N;++i) {
printf("%d ",*(a+i));
}
printf("\n交换最大值之后的数组 b 的5个数字为:");
for(intj=0;j<N;++j) {
printf("%d ",*(b+j));
}
}
示例结果:
$ gccex026.c-odemo
yaojianguodeMacBook-Pro:C语言100题集合代码 yaojianguo$ ./demo
输入数组 a 的5个数字:
1
3
5
7
9
输入数组 b 的5个数字:
2
4
6
8
10
数组 a 的5个数字为:13579
数组 b 的5个数字为:246810
数组 a 的最大值:9
数组 b 的最大值:10
交换最大值之后的数组 a 的5个数字为:135710
交换最大值之后的数组 b 的5个数字为:24689