排序函数为什么不能排序?????请教

来源:百度知道 编辑:UC知道 时间:2024/05/28 09:03:49
#include<iostream>
using namespace std;
int main(){
int sawp(int ,int);
int a,b,c,d; //声明4个数字
cout<<"请输入四个整数";
cin>>a>>b>>c>>d;
if(a>b)
sawp(a,b);
if(a>c)
sawp(a,c);
if(a>d)
sawp(a,d);
if(b>c)
sawp(b,c);
if(b>d)
sawp(b,d);
if(c>d)
sawp(c,d);
cout<<a<<b<<c<<d<<endl;
return 0;
}
int sawp(int x ,int y)
{ int temp=0;
temp=x;
x=y;
y=temp;
return (x,y);
}
如果用 return 返回的话该怎样表示???

return语句只能返回一个值,return()语句的参数可以使常量,变量,也可以是表达式,所以你写的return(x,y)的参数属于逗号表达式(取最后一个表达式的值),返回的值y的值。但是程序是值专递方式(形参和实参所占的内存空间不同),也就是形参的改变改变不了实参。
你的算法错啦,想排序4个整数的循环语句可以排序。上面的swap函数如果形参是传地址方式,可以实现两个数的交换。希望你写程序的时候也注意一下缩进,其实C/C++是自动缩进!
#include<iostream>
using namespace std;
int main()
{

void sawp(int&,int&);
int a,b,c,d;
cout<<"请输入四个整数";
cin>>a>>b>>c>>d;
if(a>b)
sawp(a,b);
if(a>c)
sawp(a,c);
if(a>d)
sawp(a,d);
if(b>c)
sawp(b,c);
if(b>d)
sawp(b,d);
if(c>d)
sawp(c,d);
cout<<a<<b<<c<<d<<endl;
return 0;
}
void sawp(int &x,int &y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}

楼主请看:
注意你的return (x,y);
最后只能返回y值(逗号运算,取最右边的值)。而且y还只是一个形参。所以并不能改变x,y的值。
想用return 返回两个值