//输入10个整数 将其中最小的数与第一个数对换,把最大的数与最后一个数对换
#include
void input(int *p);
void deal(int *a);
void output(int *p);
void main()
{
int a[10];
input(a);
deal(a);
output(a);
}
void input(int *p)
{
int i;
printf("请输入十个整数:\n");
for(i=0; i<10; i++)
scanf("%d",&p[i]);
}
void deal(int *a)//这个函数是如何实现第一个数换了之后 第二个数及后面的数自动后退一位呢?
{
int *max,*min,*p,temp;
max=min=a;
for(p=a;p<a+10;p++)
if(*p<*min)
min=p;
temp=a[0];
a[0]=*min;
*min=temp;
for(p=a;p<a+10;p++)
if(*p>*max)
max=p;
temp=a[9];
a[9]=*max;
*max=temp;
}
/*void deal(int p) //想问一下这个函数是哪里出错了呢?
{
int i,temp1, temp2, t1, t2;
temp1=*p;
temp2=*p;
for(i=1; i
{
if(temp1 >= *(p+i))
{
t1=(p+i);
*(p+i)=temp1;
temp1=t1;
}
}
*p=temp1;
for(i=1; i<10; i++)
{
if(temp2 <= *(p+i))
{
t2=*(p+i);
*(p+i)=temp2;
temp2=t2;
}
}
*(p+9)=temp2;
}
/
void output(int *p)
{
int i;
printf("输出数据如下:\n");
for(i=0; i<10; i++)
{
printf("%-3d",(p+i));
}
printf("\n");
}