练习小程序1

在CU看到的帖子,写了一个程序。

使用C语言写出以下函数,给你三个变量a,b,c,请不使用其他变量的情况下交换他们的值,使得a=b, b=c, c=a;

原帖地址:
 http://bbs.chinaunix.net/viewthread.php?tid=883665&extra=page%3D1%26filter%3Ddigest

此程序有问题,待修改
#include  < stdio.h >

void  swapp( int  a, int  b, int  c)
{
    a
=a+b;      //没有考虑到a溢出
    b
=a-b;
    a
=a-b;

    b
=b+c;
    c
=b-c;
    b
=b-c;
}


void  main()
{
    
int a = 1;
    
int b = 2;
    
int c = 3;
    swapp(a,b,c);    
//mk a=b,b=c,c=a
    printf("a = %d,b = %d,c = %d ");
}


还有人的解决方法:
c = (a+c)-(a=b,b=c);

a ^= b ^= c ^= a ^= b ^= c ^= a ^= b;

狠啊狠
        __asm
        
{
                push a;
                push b;
                push c;
                pop b;
                pop a;
                pop c;
        }


没去测试,以后有空的话细看。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值