请教C语言的一个问题,以下这个程序应该是没问题的,但编译后却无结果,请指教

来源:百度知道 编辑:UC知道 时间:2024/09/26 10:44:31
int max,min;
max_min_value(j,n)
int *j,n;
{int *p;max=min=*j;
for(p=j+1;p<j+n;p++)
if(*p>max)max=*p;
else if(*p<min)min=*p;
return;
}
main()
{int *p,a[3];
printf("enter 3 data:");
for(p=a;p<p+3;p++)
scanf("%d",p++);
p=a;
max_min_value(p,3);
printf("max=%d,min=%d\n",max,min);
getch();
}
输入3个数后,却输不出结果.

首先,for的判断条件是 p<a+3,如果是p<p+3,那么这个是死循环
其次,for里面已经自加1了,scanf时就不要再加了
改好程序如下:
int max,min;
max_min_value(j,n)
int *j,n;
{int *p;max=min=*j;
for(p=j+1;p<j+n;p++)
if(*p>max)max=*p;
else if(*p<min)min=*p;
return;
}
main()
{int *p,a[3];
printf("enter 3 data:");
for(p=a;p<a+3;p++)
scanf("%d",p);
p=a;
max_min_value(p,3);
printf("max=%d,min=%d\n",max,min);
getch();
}

另外,下次提问题先把程序是干什么的说出来

p<p+3
这个死循环
改成
p<a+3