C语言问题:输出a,b中较大的值 帮忙看看哪里错了 为什么输入3 5,输出仍是3,5

2025-03-11 13:21:23
推荐回答(7个)
回答1:

C语言对于整数参数是call by value,即按值传递的,a和b的值传到swap函数里面只或,实际上swap中操作的是a和b的值的新的拷贝,也就是说和原来的a和b没有关系,对x和y的更改不会影响外面a和b的值。如果想要影响,则应该传递a和b的指针,然后再函数中对指针指向的值进行改变,才是真正改变了a和b的值

回答2:

#include "stdio.h"
void swap(int *p,int *q)
{ int t;
t=*p;*p=*q;*q=t;

}
int main()
{ int a,b;
scanf("%d%d",&a,&b);
if(aprintf("max=%d min=%d",a,b);
}

回答3:

swap(int x, inty)中参数是单向传递的,即3和5只是传到了swap函数开辟的栈上,栈上的值在函数运行完释放了,并没有传回给变量a和b。要想改变a和b的值,参数应改用指针类型,传给swap两个地址。正确答案已经有了。我就不写了。

回答4:

因为你的自定义函数没有返回值。。。
int swap(int x,int y)
{return (x>=y?x:y);}

回答5:

把main函数里面的void swap(int x, int y)转移到main函数的上面啊

回答6:

二楼正解,你的Swap(int,int) 是值传递,如果要交换a,b的值应该使用引用传递。

回答7:

你交换的是他们的一份拷贝,具体改正办法见2楼