用函数把两个数值交换

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:34:46
#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()