标题:为什么要有中间量
只看楼主
月之神
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-26
 问题点数:0 回复次数:11 
为什么要有中间量

#include<stdio.h>
main()
{
int x,y,t;
scanf("%d%d",&x,&y);
if(x>y)
{
t=x;
x=y;
y=t;
}
printf("%d, \n%d\n",x,y);
return 0;
}

why use "t"?

搜索更多相关主题的帖子: 间量 int main why 
2006-11-01 20:34
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
在你这个阶段
如果不用t,你怎么来保存x的值进行后面操作呢

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-01 20:42
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
得分:0 
这个方法实现大小交换时要用到临时变量的
如果x>y 把x,y互相交换:
先把x的值复制到t中,然后用y的值把x中的值覆盖掉,在用t中的值把y的值覆盖掉,这样x,y内容不就互换了

unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-11-01 20:44
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 
这是中间变量真正目的

谁有强殖装甲第二部,可以Q我460054868
2006-11-01 20:48
hackboyo
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2006-10-27
得分:0 
这个很简单,比如说不要中间量
将x的值直接转给y
y=x;
那y的值就弄丢了!~
所以说先要定义一个中间量来储存y的值了!~
2006-11-02 12:27
月之神
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-26
得分:0 

那怎么按顺序输出3个或以上的数呢?
谢谢

2006-11-02 20:09
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
得分:0 

用数组与循环。


谁有强殖装甲第二部,可以Q我460054868
2006-11-02 20:18
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
排序嘛~

羊肉串 葡萄干 哈密瓜!!
2006-11-02 21:30
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
得分:0 

使用中间变量使某些将被覆盖的值存在另一个地方以备再次使用,
t=x;
x=y; /* x 是内存的单元,它的值被 y 覆盖*/
y=t;

x 被 y 的值更新后,x 的原值便没有了,
做为一个事前的准备,使用 t 来先存放 x 的值,
以备在 y = t; 中赋给 y 来实现值的交换。

关于一个删除整条链表的题外话,
看过很多删除整条链表的实现会类似这样写:

int DelLink(NODE* HeadNode)
{
NODE* pNode = HeadNode;

while( pNode )
{
free( pNode ); /*释放当前结点*/
pNode = pNode->Next; /*移动到下一结点(这是错误的写法,此时 pNode 已经被释放)*/
}
}

这种实现是不正确的,
此时需要借助一个中间变量(或称临时变量)才是正确实现。

int DelLink(NODE* HeadNode)
{
NODE* pNode = HeadNode, pTempNode;

while( pNode )
{
pTempNode = pNode->Next;
free( pNode );
pNode = pTempNode;
}
}

这是中间变量的一个用处的体现。


欢迎加入 MVC 技术讨论群(新群:90093426)
2006-11-02 22:42
半兽人
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-10-26
得分:0 
如果不用中间变量,这样行不行?

...
int a,b;
scanf("%d %d",&a,&b);
b=a+b;
a=b-a;
b=b-a;
printf("%d %d",a,b);
...
2006-11-03 15:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-100210-1-1.html




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

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