C语言经典算法100例-067-练习使用指针2
题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
现提供正确答案:
//10个数,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
#include <stdio.h>
#include <stdlib.h>
int main()
{
int number[10];
input(number);
output(number);
max_min(number);
output(number);
return 0;
}
//输入数组
input(number) //为什么可以这样定义函数 经实验可以这样定义 不过还是建议用常规方式定义吧
int number[10];
{
int i;
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
//找出最大最小值并交换
void max_min(int array[])
{
int *max,*min,k,l;
int *p,*arr_end;
arr_end=array+10; //指向数组最后一个元素的后一个位置array[10]
//找出最大最小值所在位置
max=min=array;
for(p=array+1;p<arr_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
//交换
k=*max;
l=*min;
*max=*array;
*array=k;
*min=*(arr_end-1);
*(arr_end-1)=l;
}
//输出数组
void output (int array[])
{
int i;
for(i=0;i<10;i++)
printf("%4d",array[i]);
printf("\n");
}