C语言纠正一下这段的毛病

来源:百度知道 编辑:UC知道 时间:2024/06/08 21:27:25
swap(int *p1,int *p2)
{
int i;
i=*p1;
*p1=*p2;
*p2=i;
}
king(int *a,int *b,int *c)
{if(b>c) swap(b,c);
if(a>c) swap(a,c);
if(a>b) swap(a,b);
}
main()
{int a,b,c,*a1,*b1,*c1;
scanf("%d%d%d",&a,&b,&c);
a1=&a;
b1=&b;
c1=&c;
king(*a1,*b1,*c1);
printf("%d,%d,%d",a,b,c);
}
运行结果不尽人意啊,意思很简单,就是输入三个数字按顺序从小到大排,可是排不出来,还有一句NULL pointers 啥啥的

swap(int *p1,int *p2)
{
int i;
i=*p1;
*p1=*p2;
*p2=i;
}
king(int *a,int *b,int *c)
{if(*b>*c) swap(b,c); if里面的要加*
if(*a>*c) swap(a,c);
if(*a>*b) swap(a,b);
}
main()
{int a,b,c,*a1,*b1,*c1;
scanf("%d%d%d",&a,&b,&c);
a1=&a;
b1=&b;
c1=&c;
king(a1,b1,c1); 去掉*
printf("%d,%d,%d",a,b,c);
}

你应该是c的初学者吧,这里面有好多问题:
swap(int *p1,int *p2)
{
int *i;
i=p1;
p1=p2;
p2=i;/*要对它的地址进行操作*/
}
king(int *a,int *b,int *c)
{if(*b>*c) swap(b,c);/*你前面用到的b>c是地址比较,应该改成它们的值进行比较*/
if(*a>*c) swap(a,c);
if(a*>*b) swap(a,b);
}
main()
{int a,b,c,*a1,*b1,*c1;
scanf("%d%d%d",&a,&b,&c);
a1=&a;
b1=&b;
c1=&c;
king(a1,b1,c1);/*你原来这里用的*a1,它就等于a,没啥意思等于白用*/
printf("%d,%d,%d",a,b,c);
}

你先试一下,不行在来问。
你对函数还不是很了解,建议你多去看看,弄