C++的一道编程题,我看不懂,求解释!
1、#include<iostream>usingnamespacestd;voidfun(int&a,int&b){intp;p=a;a=b;b=p;}voidexch...
1、#include<iostream >
using namespace std;
void fun(int &a,int &b)
{ int p;
p=a; a=b; b=p;
}
void exchange(int &a,int &b,int &c)
{ if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
}
int main()
{ int a=12,b=89,c=56;
exchange(a,b,c);
cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
return 0;
}
像开始的fun函数这里我就不知道是干嘛的,然后fun函数这里为什么要引用,下面exchange为什么再引用,就知道交换数值,是不是只交换a和b的值,和c没关系啊,最后结果是什么啊?求帮助! 展开
using namespace std;
void fun(int &a,int &b)
{ int p;
p=a; a=b; b=p;
}
void exchange(int &a,int &b,int &c)
{ if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
}
int main()
{ int a=12,b=89,c=56;
exchange(a,b,c);
cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
return 0;
}
像开始的fun函数这里我就不知道是干嘛的,然后fun函数这里为什么要引用,下面exchange为什么再引用,就知道交换数值,是不是只交换a和b的值,和c没关系啊,最后结果是什么啊?求帮助! 展开
5个回答
展开全部
这个程序的作用就是把a, b,c 按从小到大的顺序输出, 其中a 中存储的是最小的,b 是中间的,c是最大的
至于为什么是引用,首先清楚引用的作用的是变量的副本,副本改变,变量也会改变,同理,变量改变,副本也会改变。
exchange为什么是引用,原因是为了传递给fun的;fun 的引用是为了使被调函数内的数据交换能和主函数的交换保持一致,如果传递的不是引用,而是变量,那么传入的数只是变量的一份copy,所以在fun内交换的只是copy那份,而不是主函数那份。
至于为什么是引用,首先清楚引用的作用的是变量的副本,副本改变,变量也会改变,同理,变量改变,副本也会改变。
exchange为什么是引用,原因是为了传递给fun的;fun 的引用是为了使被调函数内的数据交换能和主函数的交换保持一致,如果传递的不是引用,而是变量,那么传入的数只是变量的一份copy,所以在fun内交换的只是copy那份,而不是主函数那份。
展开全部
fun函数的作用就是交换两个数的值。
exchange函数的作用是排序,最后a最大,b其次,c最小。
引用就是为了直接交换a,b,c的值,这里跟指针的意思是一样的。
exchange函数的作用是排序,最后a最大,b其次,c最小。
引用就是为了直接交换a,b,c的值,这里跟指针的意思是一样的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
、#include<iostream >
using namespace std;
//这个fun是交换数值的。不用引用的话,不会交换主函数的值。
void fun(int &a,int &b)
{ int p;
p=a; a=b; b=p;
}
额,这个函数是a>b>c.
//
void exchange(int &a,int &b,int &c)
{ if(a<b)fun(a,b);
if(a<c)fun(a,c);
if(b<c)fun(b,c);
}
int main()
{ int a=12,b=89,c=56;
exchange(a,b,c);
cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fun函数是交换两个数据,exchange函数是把这三个数字从小到大排序,a里面是最大的数字,c里面是最小的数字。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
引用可以修改实参但是不加引用的话,修改的只是实参的副本,交换不了数据。不明白继续问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询