(指针法)输入十个整数,最小值与第一个数对换,最大值与最后一个数对换

在成功编译之前,也曾经在挣扎,还有考虑使用二维指针。有在网上查了一下,但是是数组的用法,所以自己尝试使用一下指针的方法,有可能自己还没学到位,大家可以指点一下。
#include<stdio.h>
#define N 10 //题目要求为10,所以这里定义N=10;
int main()
{
void input(int *p);//定义同一个指针来接收,
void income(int *p);//那么改变这个指针的值,
void print(int *p);//相应的其它函数指针值也改变。
int p[N];
input§;
income§;
print§;
system(“pause”);
return 0;
}
void input(int *p)//输入10个整数的函数
{
int i;
for (i = 0;i < N;i++)
{
scanf("%d", p++);
}
}
void income(int p)//处理的函数
{
int max, min, i, k=0, y=N-1;
for (i = 0;i < N;i++)
{
if (
(p + k) > *(p + i))//判断最小值的位置
{
k = i;
}
}
min = *(p + k), *(p + k) = *p, p = min;//将最小值与第一个数对换。
for (i = 0;i < N;i++)
{
if (
(p + y) < *(p + i))//判断最大值
{
y = i;
}
}
max = *(p + y), *(p + y) = *(p+N-1), *(p + N-1) = max;//将最大值与最后一个数对换
}
//这里注意做完循环判断后就需要对换,在两个循环完之后再对换会有一些特殊值导致结果偏差。
void print(int *p)//输出10个整数的函数
{
int i;
for (i = 0;i < N;i++)
printf("%d ", *p++);
}
在这里插入图片描述