输入三个整数,按从小到大顺序输出(C++)

#include <iostream>
using namespace std;
void chang(int ,int);
int main()
{
int a,b,c;
a=2;
b=3;
c=1;
/*cout<<"请您输入三个整数:"<<endl;
cin>>a;
cin>>b;
cin>>c;*/
chang(a,b);
chang(a,c);
chang(b,c);
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;
}
void chang(int x,int y)
{
int k;
if(x>y)
{
k=x;
x=y;
y=k;
}
}
请问哪里出错了,谢谢!

原程序中所定义的函数void chang(int x,int y)参数传递为传值方式,因此数据交换后不能返回给调用函数,现在改为引用,传递给chang函数的是两个变量x,y的地址,在函数中所做的变量修改实际是对x,y变量的修改。另外chang函数中if(x>y)语句有误,应该改为if(x<y)
程序已经过测试

#include <iostream>
using namespace std;
void chang(int& ,int&);
int main()
{
int a,b,c;
a=2;
b=3;
c=1;
/*cout<<"请您输入三个整数:"<<endl;
cin>>a;
cin>>b;
cin>>c;*/
chang(a,b);
chang(a,c);
chang(b,c);
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;
}
void chang(int& x,int& y)
{
int k;
if(x<y)
{
k=x;
x=y;
y=k;
}
}
若满意请及时采纳,谢谢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-02

你chang函数里面的变量生命周期只在函数内,不会对外面造成影响,所以要用到指针。

#include <iostream>
using namespace std;
void chang(int *x, int *y);
int main() {
int a, b, c;
int *pa = &a, *pb = &b, *pc = &c;
a = 2;
b = 3;
c = 1;
/*cout<<"请您输入三个整数:"<<endl;
 cin>>a;
 cin>>b;
 cin>>c;*/
chang(pa, pb);
chang(pa, pc);
chang(pb, pc);
cout << a << " " << b << " " << c << endl;
return 0;
}
void chang(int *x, int *y) {
int k;
if (*x > *y) {
k = *x;
*x = *y;
*y = k;
}
}

第2个回答  2014-11-02
这就涉及到局部变量的关系了 change函数中的形参,函数内部大小改变了,但只是局部改了,这里你可以改成引用 change(int @x,int @y)
相似回答