首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-20 
可以帮忙解释下这段吗??voidswap(int*p1,int*p2){intptpt*p1*p1*p2*p2pt}voidexchange(int*q1,int*

可以帮忙解释下这段吗??
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();
}

热点排行