(1/2)c++中?void sort(int x int y int z)?int x ,y,z;?cin>>x>>y>>z;?sort(x,

如题所述

题目都没有说明白,不过猜了一下,是不是输入三个整型数x , y , z ,再调用函数sort(x , y , z) ;实现把x , y , z 进行升序或者降序排列?
如果题目要求是这样的话,这个sort(int x ,int y , int z)函数是无法实现的,这涉及到实参赋给形参时值得传递的问题。举一个交换两个数的例子
void swap1(int a , int b)
{
int temp ;
temp = a ;
a = b ;
b = temp ;
}

void swap2(int *pa , int *pb)
{
int temp ;
temp = *pa ;
*pa = *pb ;
*pb = temp ;
}

void swap3(int &a , int &b)
{
int temp ;
temp = a ;
a = b ;
b = temp ;
}

void main()
{
int a = 1 , b = 2 ;
printf("Before swap1 : a = %d , b = %d \n" , a , b) ;
swap1(a , b) ;
printf("Before swap1 : a = %d , b = %d \n" , a , b) ;

printf("Before swap2 : a = %d , b = %d \n" , a , b) ;
swap2(&a , &b) ;
printf("Before swap2 : a = %d , b = %d \n" , a , b) ;

printf("Before swap3 : a = %d , b = %d \n" , a , b) ;
swap(a , b) ;
printf("Before swap3 : a = %d , b = %d \n" , a , b) ;
}

你试试就可以看到实际上第一个函数并没有交换a 和b的值,第二个和第三个之所以能够交换a 和b的值,是因为传递的是指针和引用,直接对a , b进行了修改。而第一个函数仅仅传递了两个数,在swap1()函数里面会生成两个临时变量a 和b ,函数调用完之后临时变量消除,并不会改变实参的值,因此第一个函数不会对a b 进行交换。以此类推,若想调用对x , y , z进行排序,函数形式就得像sort(int *px , int *py , int*pz) 或者 sort(int &x , int &y , int &z)前者容易理解一点,后者用的是引用,稍微难懂一点。希望对你有帮助!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-02
题目不完整啊。本回答被提问者采纳
相似回答
大家正在搜