C语言。输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数。指针

2025-03-10 21:15:25
推荐回答(2个)
回答1:

#include 
#include 
void deal(int a[10])
{ int i,temp;
  int *p,*pmax,*pmin;
  p=pmax=pmin=a;
  for(i=0; i<10; i++,p++)
  { if(*p>*pmax)
      pmax=p;
    if(*p<*pmin)
      pmin=p;
  }
  temp=a[0];
  a[0]=*pmin;
  *pmin=temp;
  if(pmax==a)
  { pmax=pmin;
  }
  temp=a[9];
  a[9]=*pmax;
  *pmax=temp;
}
void out(int a[10])
{ int i;
  for(i=0; i<10; i++)
    printf("%d ",a[i]);//有修改
}
int main()
{ int a[10],i;
  for(i=0; i<10; i++)
    scanf("%d",&a[i]); 
  deal(a);//有修改
  out(a);//有修改
  return 0;
}

回答2:

void deal(int *a)
{
int i,temp;
int pmax,pmin;
pmax = 9;
for(i=0;i<10;i++)
if( a[i]> a[pmax])pmax=i;
temp=a[9];a[9]=a[pmax];a[pmax]=temp;
pmin=0;
for(i=0;i<10;i++)
if( a[i]< a[pmin])pmin=i;
temp=a[0];a[0]=a[pmin];a[pmin]=temp;
}
void out(int a[10])
{
int i;
for(i=0;i<10;i++) printf("%d ",a[i]);
}
int main()
{
int a[10],i;
for(i=0;i<10;i++)scanf("%d",&a[i]);
deal(a); // 调用
out(a); //调用
return 0;
}