读书人

可以帮忙解释下这段吗?该如何解决

发布时间: 2012-02-20 21:18:24 作者: rapoo

可以帮忙解释下这段吗??
void swap(int *p1,int *p2)
{
int pt;
pt=*p1;
*p1=*p2;
*p2=pt;
}
void exchange(int *q1,int *q2,int *q3)
{
if(*q1 <*q2)
swap(q1,q2);
if(*q1 <*q3)
swap(q1,q3);
if(*q2 <*q3)
swap(q2,q3);
}
void main()
{
int a,b,c,*pa=&a,*pb=&b,*pc=&c;
printf( "please input 3 integers:\n ");
scanf( "%d%d%d ",pa,pb,pc);
exchange(pa,pb,pc);
printf( "%d\t%d\t%d\n ",a,b,c);
getch();
}


[解决办法]
void swap(int *p1,int *p2) //对p1,p2指向的数据进行交换
{
int pt;
pt=*p1;
*p1=*p2;
*p2=pt;
}
void exchange(int *q1,int *q2,int *q3) //从大到小进行排序
{
if(*q1 <*q2) //把大的放到前面
swap(q1,q2);
if(*q1 <*q3)
swap(q1,q3);
if(*q2 <*q3)
swap(q2,q3);
}
void main()
{
int a,b,c,*pa=&a,*pb=&b,*pc=&c;
printf( "please input 3 integers:\n ");
scanf( "%d%d%d ",pa,pb,pc);
exchange(pa,pb,pc);
printf( "%d\t%d\t%d\n ",a,b,c);
getch();
}

[解决办法]
这是一个排列三个数从大到小的程序,可以对它进行改写,让它更简洁。。。代码如下:
void main()
{
int *pa, *pb, *pc;
printf( "please input 3 integers:\n ");
scanf( "%d%d%d ",pa,pb,pc);
exchange(pa,pb,pc);
printf( "%d\t%d\t%d\n ",*pa,*pb,*pc);
getch();
}

读书人网 >C语言

热点推荐