使用指针交换两个数组中的最大值

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容