Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4213774
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类:

2011-05-05 11:37:57

原文地址:a、b交换 作者:dongfs_love

1.有两个变量a和b,不用“if”、“?:”、“switch”或其它判断语句,找出两个数中间比较大的。

方案一:此法不错

  1. int max=((a+b)+abs(a-b))/2;

方案二:此种方法未懂其中的意思。

  1. int c=a-b;

  2. char *strs[2]={"a大","b大");

  3. c=unsigned(c)>>(sizeof(int)*8-1);

方案三:此法满足要求,希望大家提意见哈

  1. #include <iostream.h>

  2. int main()
  3. {
  4.     int a=3,b=5;
  5.     int max;

  6.     max = a;
  7.     while (a<b)
  8.     {
  9.         max = b;
  10.         break;
  11.     }

  12.     cout<<"max="<<max<<endl;
  13.     return 0;
  14. }

2.如何将a、b的值进行交换,并且不使用任何中间变量?

方案一:

a=a+b;

b=a-b;

a=a-b;

此方案的缺点是如是a、b都比较大,a=a+b时就会超界。

方案二:

a=a∧b;

b=a∧b;

a=a∧b;

此方案的优点是不用担心超界的问题。

阅读(786) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~