| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 832 人关注过本帖
标题:[新手求助]麻烦看下这个程序的问题
只看楼主 加入收藏
naski
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-7-5
收藏
 问题点数:0 回复次数:3 
[新手求助]麻烦看下这个程序的问题
问题:输入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
----------------
求助:当中可能出现了什么问题?我也知道大概是实参的值在交换过程中出现了混乱,但暂时没找到原因。初学指针,有点困惑,谢谢大侠指点。
搜索更多相关主题的帖子: int 整数 three 
2007-12-06 08:28
naski
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-7-5
收藏
得分:0 
找了半天,原来问题出现在swap_two函数中
void swap_two(int *pm,int *pn)
{
  int t;
  t=*pm;
  pm=pn; //修改为*pm=*pn;
  *pn=t;
}

    │      ∠_
丿亅\   ├─┤
            └─┘
2007-12-06 08:46
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
void swap_two(int *pm,int *pn)
{
  int t;
  t=*pm;
  pm=pn;  //改为*pm=*pn
  *pn=t;
}

樱花大战,  有爱.
2007-12-06 08:50
naski
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-7-5
收藏
得分:0 
谢谢楼上的热心解答,我明白了。

    │      ∠_
丿亅\   ├─┤
            └─┘
2007-12-06 08:59
快速回复:[新手求助]麻烦看下这个程序的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023821 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved