交换两个变量的值(不能使用第三个变量)

题目要求:输入两个整数变量,并交换两个整数变量的值

在不使用第三个变量的情况下,有以下两种方法

方法一:简单加减法

        假设a,b两个整形变量,从键盘输入值赋值给这两个变量.将a+b的结果赋值给变量a,这时变量a存储着最初两个变量值的和.再将a-b的结果赋值给变量b,这时变量b就存储着a-b的值,也就是最初变量a的值.最后将a-b的结果赋值给变量a,由于上一步代码执行,变量b的值已经变为最初变量a的值,再执行完这一步后,变量a存储着a-b的结果,也就是最初变量b的值.这样变量a,b的值就已经交换好了.

代码实现如下:

#include <stdio.h>
int main()
{
    int a,b;
    printf("请输入a的值:");
    scanf("%d",&a);
    printf("请输入b的值:");
    scanf("%d",&b);
    a=a+b;
    b=a-b;
    a=a-b;
    printf("a:%d,b:%d",a,b);
} 

方法二:两数异或

        假设a,b两个整形变量,从键盘输入值赋值给这两个变量.将a^b的结果赋值给变量a,变量a就存储着最初变量a与变量b值的异或的结果.再将a^b异或结果赋值给变量b,(注意此时变量a的值已经变成a^b的结果),当再进行一次a和b的异或运算就会得到最初变量a的值,所以变量b就得到了最初变量a的值.最后将a^b的运算结果再赋值给a,此时变量a就得到了最初变量b的值.如此,变量a和变量b的值就完成了交换.

代码实现如下:

#include <stdio.h>
int main()
{
    int a,b;
    printf("请输入a的值:");
    scanf("%d",&a);
    printf("请输入b的值:");
    scanf("%d",&b);
    a=a^b;
    b=a^b;
    a=a^b;
    printf("a:%d,b:%d",a,b);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值