调换最大数与最小数遇见的问题:
#include<stdio.h>
int max_min(int n,int a[],int *max,int *min)
{
int *p;
int *q=&a[0];
*max=*q;
*min=*q;
for(p=q+1;p<q+n;p++)
if(*p>*max)
*max=*p;
else if(*p<*min)
*min=*p;
return (*min);
}
void swap(int *a,int *b)
{
char temp;
temp=*a;
*a=*b;
*b=temp;
}
void main()
{
int a[10],i,max,min;
printf("please input a array:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max_min(10,a,&max,&min);
printf("the max number is:%d\n",max);
printf("the min number is:%d\n",min);
swap(&max,&min);
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
此程序的最大数与最小数无法实现调换功能,修改方式是在int max_min()函数调用void swap()函数。