| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1283 人关注过本帖
标题:为什么我不能实现两个参数交换啊??
只看楼主 加入收藏
dax
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-13
收藏
 问题点数:0 回复次数:21 
为什么我不能实现两个参数交换啊??

刚编了一个程序,如下
#include<stdio.h>
main()
{
int swap(int a,int b);
int x,y;
x=10;
y=20;
swap(x,y);
printf("%d,%d",x,y);
}
int swap(int a,int b)
{
int m;
if(a<b)
{
m=a;
a=b;
b=m;
}
}
我希望交换a,b的值,但却不可以~~为什么??如果我想交换他们的值,又要用函数,该怎么写??高手给个列子吧~~`

搜索更多相关主题的帖子: 参数 
2007-09-13 23:48
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
[CODE]
#include <stdio.h>
void swap( int* a, int* b )
{
*a+=*b;
*b=*a-*b;
*a-=*b;
}

int main()
{
int a=100, b=200;
swap( &a, &b );
printf("a=%d,b=%d\n",a,b);
return 0;
}
[/CODE]

淘宝杜琨
2007-09-13 23:58
zrgong
Rank: 1
等 级:新手上路
帖 子:95
专家分:0
注 册:2007-6-26
收藏
得分:0 
变量都有作用域的,要想用函数交换a,b,就要传递变量的地址,不是变量值

2007-09-14 00:12
iaw398492065
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-21
收藏
得分:0 
你那个A和B是局部变量!像楼上那样说用指针可以解决
2007-09-14 01:05
iaw398492065
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-8-21
收藏
得分:0 
还要说下,你的编程风格要简洁点,不用那么多行代码的!
2007-09-14 01:07
marmot
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-9-13
收藏
得分:0 

传址和传值的问题呵,换指针来解决,建议看老谭的《c程序设计》


2007-09-14 08:27
SNAKEQX
Rank: 1
等 级:新手上路
帖 子:112
专家分:3
注 册:2006-4-11
收藏
得分:0 
变量的作用域很烦啊
2007-09-14 14:10
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
同意6楼,谭的《c程序设计》讲得非常明白.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-09-14 14:33
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
*a+=*b;
*b=*a-*b;
*a-=*b;


偷学一招```

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-09-14 15:57
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 

形参和实参````采用的是值传递```
X=10,Y=20``穿给A,B
A=10,B=20``在swap里``AB交换了```
A=20,B=10``但是main里``XY没变```

你在main里P出XY``当然不能得到你要的结果```
你的程序可以样改``

#include<stdio.h>
int main(void)
{
int swap(int a,int b);
int x,y;

x=10;y=20;

swap(x,y);

getchar(); -------------加上它看结果``
return 0;

}
void swap(int a,int b)
{
int m;

if(a<b)
{m=a;a=b;b=m;}

printf("%d,%d",a,b);

return ;
}



女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-09-14 16:07
快速回复:为什么我不能实现两个参数交换啊??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017004 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved