![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C语言问题:输出a,b中较大的值 帮忙看看哪里错了 为什么输入3 5,输出仍是3,5
7个回答
展开全部
C语言对于整数参数是call by value,即按值传递的,a和b的值传到swap函数里面只或,实际上swap中操作的是a和b的值的新的拷贝,也就是说和原来的a和b没有关系,对x和y的更改不会影响外面a和b的值。如果想要影响,则应该传递a和b的指针,然后再函数中对指针指向的值进行改变,才是真正改变了a和b的值
展开全部
#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(a<b) swap(&a,&b);
printf("max=%d min=%d",a,b);
}
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(a<b) swap(&a,&b);
printf("max=%d min=%d",a,b);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
swap(int x, inty)中参数是单向传递的,即3和5只是传到了swap函数开辟的栈上,栈上的值在函数运行完释放了,并没有传回给变量a和b。要想改变a和b的值,参数应改用指针类型,传给swap两个地址。正确答案已经有了。我就不写了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-21
展开全部
因为你的自定义函数没有返回值。。。
int swap(int x,int y)
{return (x>=y?x:y);}
int swap(int x,int y)
{return (x>=y?x:y);}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把main函数里面的void swap(int x, int y)转移到main函数的上面啊
追问
我运行了一遍还是错的。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二楼正解,你的Swap(int,int) 是值传递,如果要交换a,b的值应该使用引用传递。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你交换的是他们的一份拷贝,具体改正办法见2楼
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询