| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1696 人关注过本帖
标题:关于两数互换的问题 为何要引入第三变量
只看楼主 加入收藏
mucshisan
Rank: 2
等 级:论坛游民
帖 子:29
专家分:19
注 册:2009-8-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
关于两数互换的问题 为何要引入第三变量
为什么两数互换时要引入第三个变量,为什么不能直接写成
a=b;b=a;
很困惑呀,学到后面跟赋值弄混了,不理解
如:求2/1+3/2+5/3+8/5+...这个数列的和,为什么不能写成
#include<stdio.h>
main()
{
    int a=2;
    int b=1;
    float n,sum;
    int i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        n=a/b;
        b=a;
        a=a+b;
        sum=sum+n;
    }
    printf("%d",sum);
}
而要写成
main()

{int i=1,n;double t,x=1,y=2,s,sum=0;

scanf("%ld",&n);

while(i<=n) {s=y/x;sum=sum+s;t=y;y=y+x;x=t;i++;}

printf("%f\n",sum);

}
搜索更多相关主题的帖子: 变量 
2009-09-11 18:30
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:10 
这跟两桶水调换是一样道理,你不借助第三只桶能调换这两桶水吗?别说你会《乾坤大挪移》

努力—前进—变老—退休—入土
2009-09-11 18:48
海蓝蓝
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:126
注 册:2009-2-24
收藏
得分:1 
说的精辟
UserYuH 我很佩服你啊,有可能咱们交个朋友
2009-09-11 18:53
mucshisan
Rank: 2
等 级:论坛游民
帖 子:29
专家分:19
注 册:2009-8-25
收藏
得分:0 
回复 2楼 UserYuH
啊哈哈,谢谢啦,有些明白了,这是存储单位满不满的意思是吗。比如说循环sum=sum+n,是不是可以理解成往水桶里加水呀。互换就是要把里面存的东西拿出放到另外一个上;直接放,就会逸出,或者不等同于原来的数,是不?
2009-09-11 21:09
zhiyanzhai33
Rank: 2
等 级:论坛游民
帖 子:50
专家分:15
注 册:2009-7-30
收藏
得分:3 
设a为1,b为2,a=b时,相当于将b的值赋给a,此时a和b都变成2了,再执行b=a,a和b都是2;起不到交换的作用
2009-09-11 22:57
hwdwow
Rank: 2
等 级:论坛游民
帖 子:119
专家分:98
注 册:2009-3-21
收藏
得分:3 
实际上是可以不用第三变量的

a=a+b;
b=a-b;
a=a-b;
2009-09-12 02:40
jig
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:1 
回6楼,其实可以简化成

b = (a+b) - (a=b)

但有个问题,此方法之能用于整数类型,一旦要实现浮点的交换,将有可能会丢失精度

个人网站 -  http://.h001.
2009-09-12 07:32
liuyufeng825
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2009-9-7
收藏
得分:0 
2楼正解,化抽象为具体,高啊
2009-09-12 12:45
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
收藏
得分:2 
以下是引用hwdwow在2009-9-12 02:40的发言:

实际上是可以不用第三变量的

a=a+b;
b=a-b;
a=a-b;



你那个可能会有溢出

我给你不more safe的 code
 a=a^b;
 b=a^b;
 a=a^b;

生命不熄,战斗不止.
2009-09-12 13:00
cgaa1
Rank: 2
来 自:uestc
等 级:论坛游民
帖 子:52
专家分:64
注 册:2009-4-11
收藏
得分:0 
可以不用第三个数,我曾经看过一篇技术贴,作者只用了2个数,通过多次以位为单位的变换就解决了问题
2009-09-12 16:25
快速回复:关于两数互换的问题 为何要引入第三变量
数据加载中...
 
   



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

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