【C语言编程题】输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,并输出对换后的10个数(用指针)

//输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换,并输出对换后的10个数
#include<stdio.h>
void exchange(int* arr, int n)//形参传入数组和数组长度
{
	int* p = arr;
	int *min = arr;
	int *max = arr;
	int i;
	void swap(int*, int*);//声明swap(),因为这个函数的定义在后面
	for (i = 0; i < n; i++)
	{
		if (*min > *(p + i))
			min = (p + i);//min指针指向最小元素
	}
	for (i = 0; i < n; i++)
	{
		if (*max < *(p + i))
			max = (p + i);//max指针指向最大元素
	}
	if (*max == *p && *min == *(p + n - 1))//如果最大元素在arr[0]且最小元素在arr[9],只需要交换一次
		swap(min, max);
	else
	{
		swap(p, min);
		swap(p + n - 1, max);
	}

}
void swap(int* a, int* b)
{//交换a,b所指变量的值
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
}
int main()
{
	int arr[10];
	int i;
	for (i = 0; i < 10; i++)
	{//输入数组数据
		scanf_s("%d", &arr[i]);
	}
	exchange(arr, 10);//调用函数
	for (i = 0; i < 10; i++)
	{
		printf("%-3d", arr[i]);
	}
	return 0;
}


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

程序说明

主函数创建了一个数组,并使用for循环为其输入数据。之后调用函数exchange(),最后再用for循环输出数组元素
exchange()函数的功能主要是使用for循环和if语句依次比较min所指变量和p所指变量的大小,从而找出传入的数组中最小元素的地址,并将其赋值给指针变量min。然后再用同样的方法使指针变量max指向数组中最大的元素。最后调用swap()进行数组元素的交换,使得数组中最小的值放在最前面,最大的值放在最后面。

知识复习

如果有以下代码

int *p,arr[10];
p=arr;//p指向数组arr首地址


*p和arr[0]等价,都表示数组的第一个元素
*(p+i)和arr[i]等价,都表示数组下标为i的元素

p和arr等价,都表示数组的首地址,但是p是可变的,arr是地址常量,不可变
p+i和&arr[i]等价,都表示元素arr[i]的地址

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值