| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 365 人关注过本帖
标题:空前大虾进
收藏  订阅  推荐  打印 
woainiwqz
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2004-9-10
空前大虾进

小弟昨天问的问题,题目为:任意给定4个整数a,b,c,d,编制从打道小顺序输出的程序。您给了个程序:

#define swap(x,y) {x=x+y;y=x-y;x=x-y;}

main() {int a,b,c,d;

printf("Input a,b,c,d:");

scanf("%d%d%d%d",&a,&b,&c,&d);

if(a>b) swap(a,b)

if(a>c) swap(a,c)

if(a>d) swap(a,d)

if(b>c) swap(b,c)

if(b>d) swap(b,d)

if(c>d) swap(c,d)

printf("The order is:%d,%d,%d,%d\n",a,b,c,d);

getch();

}

请问不用循环可以解次题么?或者您可以解释一下您给的程序么?

2004-9-11 18:08
woainiwqz
Rank: 1
等级:新手上路
帖子:6
积分:160
注册:2004-9-10

2004-9-11 18:42
kuangjingbo
Rank: 3Rank: 3
等级:中级会员
帖子:312
积分:3220
注册:2004-4-24

#define swap(x,y) {x=x+y;y=x-y;x=x-y;}

使得x和y交换值

但是,如果这样:

#define swap(x,y) {x=x^y;y=x^y;x=x^y;}

在速度上应该更快一些,毕竟位运算比加法运算要快


永不放弃!
2004-9-11 19:07
空前
Rank: 6Rank: 6
等级:金牌会员
帖子:1145
积分:11600
注册:2004-5-11

以下是引用woainiwqz在2004-09-11 18:08:52的发言:

小弟昨天问的问题,题目为:任意给定4个整数a,b,c,d,编制从打道小顺序输出的程序。您给了个程序:

#define swap(x,y) {x=x+y;y=x-y;x=x-y;}

main() {int a,b,c,d;

printf("Input a,b,c,d:");

scanf("%d%d%d%d",&a,&b,&c,&d);

if(a>b) swap(a,b)

if(a>c) swap(a,c)

if(a>d) swap(a,d)

if(b>c) swap(b,c)

if(b>d) swap(b,d)

if(c>d) swap(c,d)

printf("The order is:%d,%d,%d,%d\n",a,b,c,d);

getch();

}

请问不用循环可以解次题么?或者您可以解释一下您给的程序么?

如果排序的数较少的话,可以不用循环,上面就没用到循环。

#define swap(x,y) {x=x+y;y=x-y;x=x-y;}

这是一个带参数的宏,

如果程序中出现swap(x,y)

就以他后面的字符串:{x=x+y;y=x-y;x=x-y;} 代替,

连括号和符号也一起带进去。


2004-9-12 13:56
空前
Rank: 6Rank: 6
等级:金牌会员
帖子:1145
积分:11600
注册:2004-5-11

以下是引用kuangjingbo在2004-09-11 19:07:04的发言:

#define swap(x,y) {x=x+y;y=x-y;x=x-y;}

使得x和y交换值

但是,如果这样:

#define swap(x,y) {x=x^y;y=x^y;x=x^y;}

在速度上应该更快一些,毕竟位运算比加法运算要快

我用2,3检查了一下这个东西:

#define swap(x,y) {x=x^y;y=x^y;x=x^y;}

发现是错的,应该是这样的:

#define swap(x,y) {x=x^y;y=x^y;x=x|y;}

不知道对不对?

[此贴子已经被作者于2004-09-12 14:01:53编辑过]


2004-9-12 14:00
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.121997 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved