输入10个整数存放于数组中,并将最小的数与数组的第一个元素交换,最大的数与数组的最后一个元素交换
//输入10个整数存放于数组中,并将最小的数与数组的第一个元素交换,最大的数与数组的最后一个元素交换
//写三个函数实现:1.输入十个数 2.进行处理 3.输出十个数
代码实现:
#include<stdio.h>
#define N 10 //数组个数
//数组赋值函数
void Input(int* p,int x)
{
for(int i=0;i<x;i++)
{
scanf("%d",p+i);
}
}
//交换函数
void Swap(int* p,int x)
{
//最大最小值初始化为数组首元素
int min = *p;
int max = *p;
//记录数组起始位置
int* t = p;
int* t1 = p;
int* t2 = p;
//记录最大最小值相对于起始位置的偏移量
int pos1 = 0;
int pos2 = 0;
int i;
//遍历数组找到最小值并记录其偏移量
for(i=1;i<x;i++)
{
if(*(p+i)<min)
{
min = *(p+i);
pos1 = i;
}
}
//交换最小值和数组首元素位置
{
int t11 = *t1;
*t1 = *(t1+pos1);
*(t1+pos1) = t11;
}
//指针回到数组起始位置
p = t;
//遍历数组找到最大值并记录偏移量
for(i=0;i<x;i++)
{
if(*(p+i)>max)
{
max = *(p+i);
pos2 = i;
}
}
//交换最大值和数组最后一个元素的位置
{
int t22 = *(t2+pos2);
*(t2+pos2) = *(t2+x-1);
*(t2+x-1) = t22;
}
}
//打印交换位置后的数组
void Print(int* p,int x)
{
for(int i=0;i<x;i++)
{
printf("%d ",*(p+i));
}
}
int main()
{
int array[N];
Input(array,N); //输入函数
Swap(array,N); //交换函数
printf("元素交换后:\n");
Print(array,N); //打印函数
return 0;
}
程序运行结果:

