长春工业大学论坛

 找回密码
 注册(开放注册)
搜索
查看: 3659|回复: 0
打印 上一主题 下一主题

[计算机类] 二C机试基本算法:两个变量互换值

[复制链接]
跳转到指定楼层
1#
发表于 2006-9-7 15:38:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基本算法:两个变量互换值


具体要求:将两个变量的值互换。例如,设有变量x和y,它们的值分别为1和2,经过互换后,它们的值分别变为2和1。


方法1:使用临时变量


算法:
(1)先定义一个临时变量t;
(2)将x的值暂存于t中:t ← x
(3)将y的值赋给x: x ← y
(4)将t中保存的值赋给y: y ← t


程序:
main()
{
 int x=1,y=2,t;
 t=x; x=y; y=t;
 printf("x=%d,y=%d",x,y);
}
该算法从程序写法的角度很容易记忆。如程序中所示,三条赋值语句写在同一行时,每个分号两边的变量名是一样的(将第一个与最后一个符号看作是首尾相连),只要记住一点,第一个符号必须是临时变量t,所以,上述三条语句也可写成:t=y;y=x;x=t;但不能写成:y=x;x=t;t=y;等形式。


若要将这一互换功能写成一个函数供调用,则必须写成如下形式:
void exch(int *x,int *y)
{
 int t;
 t=*x; *x=*y; *y=t;
}


方法2:不用临时变量

算法:
(1)将两个变量的和求出,并保存于x中;
(2)从和中减去原y的值,得到原x的值,赋给y;
(3)在从和中减去原x的值(这是已经在y中),得到原y的值,赋给x.


程序:
main()
{
 int x=1,y=2;
 x+=y;
 y=x-y;
 x=x-y;
 printf("x=%d,y=%d",x,y);
}


若要将这一互换功能写成一个函数供调用,则必须写成如下形式:
void exch(int *x,int *y)
{
 *x+=*y; *x=*y; *y=t;
}

转贴自:http://www.hljcre.com/dispbbs.asp?boardid=15&ID=1865&replyID=1865
您需要登录后才可以回帖 登录 | 注册(开放注册)

本版积分规则

手机访问本页请
扫描左边二维码
         本网站声明
本网站所有内容为网友上传,若存在版权问题或是相关责任请联系站长!
站长联系QQ:7123767   myubbs.com
         站长微信:7123767
请扫描右边二维码
www.myubbs.com

小黑屋|手机版|Archiver|长春工业大学论坛 ( 琼ICP备10001196号-2 )

GMT+8, 2024-4-24 02:18 , Processed in 0.212777 second(s), 14 queries .

Powered by 高考信息网 X3.3

© 2001-2013 大学排名

快速回复 返回顶部 返回列表