[新手求助]麻烦看下这个程序的问题
问题:输入3个整数,将其从小到大排序后输出,要求用指针的方法完成。试求解:
-----------------------------------------------------------------------------------------------------------
//对输入的3个整数从小到大排序后输出
#include<iostream>
using namespace std;
void swap_three(int *pa,int *pb,int *pc); //对3个整数进行从小到大的排序
void swap_two(int *pm,int *pn); //交换两个整数
int main()
{
int x,y,z;
cout<<"input three number:"<<endl;
cin>>x>>y>>z;
swap_three(&x,&y,&z);
cout<<"the new order is:"<<x<<" "<<y<<" "<<z<<endl;
return 0;
}
void swap_three(int *pa,int *pb,int *pc)
{
if(*pa>*pb)
swap_two(pa,pb);
if(*pa>*pc)
swap_two(pa,pc);
if(*pb>*pc)
swap_two(pb,pc);
}
void swap_two(int *pm,int *pn)
{
int t;
t=*pm;
pm=pn;
*pn=t;
}
----------------------------------------------------------------------------------------------------------------
调试结果:
在c-free3.5和vc++6下均通过,但结果不对,例如:
----------------
输入:3 2 1
结果:3 3 3
----------------
输入:2 3 1
结果:2 3 3
----------------
求助:当中可能出现了什么问题?我也知道大概是实参的值在交换过程中出现了混乱,但暂时没找到原因。初学指针,有点困惑,谢谢大侠指点。