要疯了,指针问题求高手帮忙。
题目:向一个数组(10个元素)中输入数据,要求把数组中最大的元素与第一个元素互换,最小的一个元素与最后一个元素互换。
问题现象:如果顺序输入“1-10”,则按照原样输出,如果输入其它的数据,结果正常。
#include "stdio.h"
void main()
{
int a[10]={0};
int i,*p1;
void k(int a[]);
for(p1=a;p1<(&a[0]+10);p1++)
{
printf("please input nmuber \n");
scanf("%d",p1);
}
p1=a;
for(i=0;i<10;i++)
printf("%5d",*p1++);
k(a);
}
void k(int a[])
{
int max,min,*p,*a_end,*m,*n,t;
a_end=a+10;
max=min=*a;
m=n=a;
for(p=a+1;p<a_end;p++)
{
if(max<*p)
{
max=*p;
m=p;
}
if(min>*p)
{
min=*p;
n=p;
}
}
printf("\nmax=%d,min=%d\n",max,min);
printf("\nmax=%d,min=%d\n",*m,*n);
printf("\nmax=%0x,min=%0x\n",m,n);
t=*m;*m=*a;*a=t;
t=*n;*n=*(a+9);*(a+9)=t;
for(t=0;t<10;t++)
printf("%5d",a[t]);
}
谢谢。