用指针不用数组?
int *p1,*p2,*p3,a,b,c,min;
scanf("%d,%d,%d",&a,&b,&c)
p1=&a;
p2=&b;
p3=&c;
if(*p1<*p)
{min=*p1;
*p1=*p2;
*p2=min;}
if(*p2<*P3)
{min=*p2;
*p2=*p3;
*p3=min;}
if(*p1<*p3)
{min=*P1;
*p1=*p3;
*p3=min;}
printf("%d,%d,%d\n"*p1,*p2,*p3);
这个是最笨的方法,就是直接把a,b,c用指针的形式表达。然后相互比较再交换。
想把程序精简一点的话你就用调用函数的形式。不过你要注意,函数调用的返回值只能是一个数,为什么这里可以一次改变两个值?那是因为这里调用函数中改变的是指针指向的地址里面的内容即令a,b发生改变,但在主函数中p1依然指向&a,a的值发生了改变,所以才引起*p1的改变。
{ int *p1,*p2,*p3,a,b,c;
void max(int *p1,int *p2)
scanf("%d,%d,%d",&a,&b,&c)
p1=&a;
p2=&b;
p3=&c;
if(a<b)max(p1,p2);
if(b<c)max(p2,p3)
if(a<c)max(p1,p3)
printf("%d,%d,%d\n",*p1,*p2,*p3)
}
void max(int *p1,int *p2)
{int min;
min=*p1;
*p1=*p2;
*p2=min;
}