C语言,为什么这个输出不对(指针之交换最小值最大值)?

#include <stdio.h>
#define N 10
void input(int *number)
{
	int *p,i;
	p=number;
	for(i=0;i<10;i++){
		scanf("%d",p++);
	}

     ///程序填空,请将该函数填写完整
}
void swap(int *number)
{
	int i,max,min,k=0,t=0,m=0;
	int temp1,temp2=0;
	max=number[0];
	min=number[0];
	for(i=0;i<10;i++){
		if(number[i]>max){
			max=number[i];
			k=i;
		}
		if(number[i]<min){
			min=number[i];
			t=i;
		}
	}
	temp1=number[0];
	number[0]=min;
	number[t]=temp1;
	temp2=number[9];
	number[9]=max;
	number[k]=temp2;
     ///程序填空,请将该函数填写完整
}
void output(int *number)
{	
	int i;
	for(i=0;i<10;i++){
		printf("%d ",number[i]);
	} 
     ///程序填空,请将该函数填写完整
}
int main()
{
    int number[N];
    input(number);
    swap(number);
    output(number);
    return 0;
}

由键盘上输入10个不重复的整数,请将这些数中的最小值与第一个数交换,将最大值与最后一个数交换,然后输出交换后的数列。

这组数据就不成功:

输入示例1

10 7 6 3 9 8 2 5 1 4

输出示例1

1 7 6 3 9 8 2 5 4 10

该怎么改 救救孩子!

因为碰巧第一个数是最大值,所以在交换的时候逻辑需要改一下。代码如下:(如有帮助,请采纳一下,谢谢哦)

#include <stdio.h>
#define N 10
void input(int *number)
{
	int *p,i;
	p=number;
	for(i=0;i<10;i++){
		scanf("%d",p++);
	}
	///程序填空,请将该函数填写完整
}
void swap(int *number)
{
	int i,max,min,k=0,t=0,m=0;
	int temp1,temp2=0;
	max=number[0];
	min=number[0];
	for(i=1;i<10;i++){
		if(number[i]>max){
			max=number[i];
			k=i;
		}
		if(number[i]<min){
			min=number[i];
			t=i;
		}
	}
	temp1=number[0];
	number[0]=min;
	number[t]=temp1;

	if (k == 0)//修改:如果最大值是第一个元素
	{
		k = t;
	}
	temp2=number[9];
	number[9]=max;
	number[k]=temp2;
	

	
	///程序填空,请将该函数填写完整
}
void output(int *number)
{	
	int i;
	for(i=0;i<10;i++){
		printf("%d ",number[i]);
	} 
	///程序填空,请将该函数填写完整
}
int main()
{
	int number[N];
	input(number);
	swap(number);
	output(number);
	return 0;
}