C语言的问题.随意输入五个数用指数和函数调用.结果是从大到小排列/

来源:百度知道 编辑:UC知道 时间:2024/05/27 05:22:13
我写的是这样.但我不明错的意思.各位可不可以帮我看看,如果觉得我写得不好,就写个被我参考,行吗?谢谢!
swap(int*pt1,int*pt2,int*pt3,int*pt4,int*pt5)
{
int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=*pt3;
*pt3=*pt4;
*pt4=*pt5;
*pt5=*temp;
}
exchange(int*q1,int*q2,int*q3,int*q4,int*q5)
{
if(*q1<*q2) swap(q1,q2);
if(*q2<*q3) swap(q2,q3);
if(*q3<*q4) swap(q3,q4);
if(*q4<*q5) swap(q4,q5);
}
main()
{
int a,b,c,d,e,*p1,*p2,*p3,*p4,*p5;
scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e);
p1=&a;p2=&b;p3=&c;p4=&d;p5=&e;
exchange(p1,p2,p3,p4,p5);
printf("\n%d,%d,%d,%d,%d\n",a,b,c,d,e);
}

看来你还没真正明白“函数”!
swap(int*pt1,int*pt2,int*pt3,int*pt4,int*pt5)
你定义的交换函数swap的参数5个!
而在exchange中调用时,“swap(q1,q2);”都是2个实际参!!
================================================
函数exchange中没有考虑完所有的情况!
====================================
这样改下就可以了:
#include <stdio.h>
swap(int *pt1,int *pt2)
{int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int *q1,int *q2,int *q3,int *q4,int *q5)
{if(*q1<*q2) swap(q1,q2);
if(*q1<*q3) swap(q1,q3);
if(*q1<*q4) swap(q1,q4);
if(*q1<*q5) swap(q1,q5);
if(*q2<*q3) swap(q2,q3);
if(*q2<*q4) swap(q2,q4);
if(*q2<*q5) swap(q2,q5);
if(*q3<*q4) swap(q3,q4);
if(*q3<*q5) swap(q3,q5);
if(*q4<*q5) swap(q4,q5);
}
main()
{int a,b,c,d,e;
printf("Inputa,b,c,d,e:") ;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
exchange(&a,&b,&c,&d,&e);
printf("\n%