北京精灵日本柴犬:用函数把两个数值交换

来源:百度文库 编辑:高校问答 时间:2024/05/10 07:49:39
#include<stdio.h>
void swap(int x,int y);
void main()
{
int a,b,c;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
t=swap(a,b);
printf("a=%d,b=%d\n",a,b);
}
void swap(int x,int y)
{
int t;
t=x;x=y;y=t;
return t;
}
这两个数值并没有交换,应该怎样做,谢谢了

你的交换函数是不返回值的,你却在函数中return t;这本身就是一个错误,而且一个函数只能返回一个值,你要输出a,b两个数,函数是不可能通过传值调用来完成的,要不你就在函数中输出。程序如下

#include<stdio.h>
void swap(int x,int y);
void main()
{
int a,b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
swap(a,b);

}
void swap(int x,int y)
{
int t;
t=x;x=y;y=t;
printf("a=%d,b=%d\n",x,y);
return ;
}

如果想用传地址,在主程序中输出的话,程序如下:
#include<stdio.h>
void swap(int *,int *y);
void main()
{
int a,b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
}
void swap(int *x,int *y)
{
int t;
t=*x;*x=*y;*y=t;

return ;
}

用引用 两个值只是在函数内交换 并没有传回到主程序中
而且你程序有问题 t是局部变量 无法在main()函数中使用
写一个完整的给你。

#include<iostream>

using namespace std;

void swap(int &,int &);

int main()
{
int a, b;

cin>> a>> b;

swap(a, b);

cout<< "a="<< a<< " "<< "b="<< b<< endl;

system("pause");

return 0;
}

void swap(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
}

vc 6 编译通过

void swap(int *x,int *y)
{
int t;
t=x;x=y;y=t;
}

t=swap(&a,&b);