精华内容
下载资源
问答
  • 程序中,交换变量a和b的值,可以有3种方法: 1.通过中间变量进行交换 2.使用算术运算进行交换,不借用其他变量 3.使用位运算(异或^)进行交换 一般而言,内排序通常简称为排序,是通过比较与交换操作来实现的。因此...

    程序中的变量是一个名字,代表一个存储空间,存储空间中存储该变量的值。
    变量的存储空间是有其地址的,可以使用地址有关的运算符。

    程序中,交换变量a和b的值,可以有3种方法:
    1.通过中间变量进行交换
    2.使用算术运算进行交换,不借用其他变量
    3.使用位运算(异或^)进行交换

    一般而言,内排序通常简称为排序,是通过比较与交换操作来实现的。因此可以说,交换2个相同类型变量的值是程序中常见的基本操作。

    上述的交换操作可以用C语言来实现,其他程序设计语言也同样可以实现。然而,用C++语言编程时,则可以调用库函数swap()来实现相同类型变量之间的值的交换,也可以自己写一个交换2个变量值的函数并且加上修饰词inline。使用inline后,编程形式上是函数调用,而编译后的机器指令程序代码则采用代码嵌入的方式实现,省去了参数传递和函数调用,时间上程序是快的。

    C语言程序如下:

    /* B00016 交换变量a和b的值 */
    
    #include <stdio.h>
    
    int main()
    {
        int a, b;
    
        scanf("%d %d", &a, &b);
    
        /* 方法一:通过中间变量进行交换 */
        int tmp = b;
        b = a;
        a = tmp;
        printf("%d %d\n", a, b);
    
        /* 方法二:使用算术运算进行交换,不借用其他变量 */
        a = a + b;
        b = a - b;
        a = a - b;
        printf("%d %d\n", a, b);
        a = a + b - (b = a);    /* 也可以这样写 */
        printf("%d %d\n", a, b);
    
        /* 方法三:使用位运算(异或^)进行交换,不借用其他变量 */
        a ^= b ^= a ^= b;
        printf("%d %d\n", a, b);
    
        return 0;
    }
    

    输入样例

    12 20
    

    输出样例:

    20 12
    12 20
    20 12
    12 20
    

    上述程序中的第22行语句“a = a + b - (b = a);”,表面上看似没有使用中间变量,仔细思考一下运算符的优先级和表达式的求值过程,就可以知道,还是使用了中间变量来存储中间结果,所以不能看作没有使用中间变量。

    C++语言程序一如下:

    /* B00016 交换变量a和b的值 */
    
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    int main()
    {
        int a, b;
    
        scanf("%d %d", &a, &b);
        swap(a, b);
        printf("%d %d\n", a, b);
    
        return 0;
    }
    

    输入样例

    12 30
    

    输出样例:

    30 12
    

    C++语言程序二如下:

    /* B00016 交换变量a和b的值 */
    
    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    inline void exchange(int *px, int *py)
    {
        int tmp = *px;
        *px = *py;
        *py = tmp;
    }
    
    int main()
    {
        int a, b;
    
        scanf("%d %d", &a, &b);
        exchange(&a, &b);
        printf("%d %d\n", a, b);
    
        return 0;
    }
    

    输入样例

    20 30
    

    输出样例:

    30 20
    
    展开全文
  • 下面是我用java实现不使用第三方变量进行两个变量的值交换的代码: 1、变量类型是整形() 方法一: int a = 123; int b = 456; a = a + b; b = a - b; a = a - b; 方法二: int a = 123; int b = ...

    下面是我用java实现不使用第三方变量进行两个变量的值交换的代码:

     

    1、变量类型是整形()

    方法一:

    int a = 123;

    int b = 456;

     

    a = a + b;

    b = a - b;

    a = a - b;

     

    方法二:

    int a = 123;

    int b = 456;

     

    a = a ^ b;

    b = a ^ b;

    a = a ^ b;

     

    2、变量类型是字符串

    String a = "china50";

    String b = "Flashdragon";

     

    a = a + b; b = a.substring(0, a.length() - b.length()); a = a.substring(b.length());

     

    3、变量类型是字符

    方法一:

    char a = 'A';

    char b = 'B';

     

    a = (char) (a + b);

    b = (char) (a - b);

    a = (char) (a - b);

     

    方法二:

    char a = 'A';

    char b = 'B';

     

    a = (char) (a ^ cb);

    b = (char) (a ^ cb);

    a = (char) (a ^ cb);

    展开全文
  • A = A + B;B = A - B;A = A - B;或者:A ^= B;B ^= A;A ^= B;
    A = A + B;
    B = A - B;
    A = A - B;
    或者:
    A ^= B;
    B ^= A;
    A ^= B;
    展开全文
  • 交换变量a和b的值

    2020-11-11 12:18:09
    下面程序的功能是交换变量a和b中的值 #include <...printf(“请输入变量a和b的值:”); scanf("%d%d", p,q); t=*p ; j = *q; *q=t ; *p = j; printf(“交换后a和b的值:a=%d b=%d\n”,a,b); } ...

    下面程序的功能是交换变量a和b中的值

    #include <stdio.h>
    main()
    {
    int a,b,*p,*q,t,j;
    p=&a;
    q=&b;
    printf(“请输入变量a和b的值:”);
    scanf("%d%d", p,q);
    t=*p ;
    j = *q;
    *q=t ;
    *p = j;
    printf(“交换后a和b的值:a=%d b=%d\n”,a,b);
    }

    展开全文
  • 题目描述:输入两个整数a和b交换他两的值,然后输出 方法一 直接创建一个临时变量即可完成此功能 代码如下 int main() { int a = 0; int b = 0; printf("请输入两个整数:"); scanf("%d %d", &a, &b);...
  • 误区一:局部变量只能在当前函数中使用,Swap_err1中的a,bmain函数中定义的a,b并不是相同的变量,所以a,b的值并未发生改变,代码如下。 #include<stdio.h> void Swap_err1(int a,int b) { int tmp; tmp=a...
  • 给多个变量赋值 不定义任何变量交换a和b的值
  • // 两种值交换的方式,用中间变量空间复杂度高于不用中间变量,但时间复杂度要低于不用中间变量. // 常规写两个值的交换 int a = 100; int b = 200; System.out.println("初始 a=100 b=200"); //...
  • //通过位异或来交换ab的值 #include <stdio.h> int main(int argc, const char * argv[]) { int a=20,b=10; a=a^b; b=b^a; a=a^b; printf("%d",a); printf("%d\n",b); return 0;} //通过c来交换...
  • 不用中间变量交换a和b的值

    千次阅读 2016-09-21 09:07:16
    定理:如果 a ^ b = c,则 a ^ c = bb ^ c = aa ^ b = [(~a) & b] | [(~b) & a] 异或真a b 结果 1 1 0 0 0 0 1 0 1 0 1 ... 若 a = 5,b = 6,用4位二进制来表示 a b
  • 1、加减法:该方法可以交换整型浮点型数值的变量,但在处理浮点型时候有可能出现精度损失 a = a + b; b = a - b; a = a - b; 2、异或法:可以完成对整型变量的交换,对于浮点型变量它无法完成交换a = ...
  • // 不用中间变量的写法 ,假如 a=13, b=8; a=a+b =21; //此时 a=21; b=8; b=a-b=13; //此时a=21; b=13; a=a-b=8; //相当于 a=21-13=8; // 第二种不用中间变量,换运算,效率比加法高点 a = a ^ b; b = a...
  • 给定两个整数a和b,交换a和b的值 设a为a0,b为b0 常规算法: 申请额外变量c,令: c = a0;//c == a0;a == a0;b == b0; a = b;//c == a0;a == b0;b == b0; b= c;//c == a0;a ==b0; b == a0; 用位运算交换两个...
  • a = 5 b = 6 a = a+b b = a-b a = a-b print(a,b) ...a = 5 ...b = 6 ...a = a^b ...b = b^a ...a = a^b ...print(a,b) ...a = 5 ...b = 6 ...a,b = b,a print(a,b) 输出 (6, 5) (6, 5) (6, 5) ...
  • java 如何不增加变量 交换 a和b 的值

    千次阅读 2013-07-09 21:03:51
    在网上看到一道题,就是有 a 和 b 的值 如何不通过增加变量 交换a和b 的值。在网上找了找有两种方式 ,一种是根据与或关系交换,另外一种就是根据差值来计算。 这里主要是讲一下通过 比较差值交换。 package ...
  • 不用第三个变量交换整形a和b的值

    千次阅读 2009-02-23 12:58:00
    //不用第三个变量交换a和b的值,//即:交换后a=2;b=1. 如果引入第三个参数的话,这是一个很简单的操作。但如果不引入第三个参数的话,该如何操作呢?考虑到a和b都是整形的,所以可以考虑用运算符进行操作: 方法1...
  • package day01; public class Test1 { public static void main(String[] args) { //不利用其它变量时期A和B的值交换 Integer A=1; Integer B=2; // fun1(A, B); ...
  • 方法一: int a = 1; int b = 2; a = a ^ b; b = a ^ b; a = a ^ b; 方法二: int a = 1; int b = 2; a= (a+b)-(b=a);
  • 在学习程序语言进行程序设计的时候,交换两个变量的值是经常要使用的。通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; ...
  • #include<stdio.h>void main() { int a,b; printf("输入两个整数:\n"); scanf("%4d%4d",&a,&b);... printf("交换的值为: a=%d,b=%d\n",a,b); //交换两个变量的值 a = a+b; b = a-b; a = a-b; printf("交换
  • b = a^b; a = a^b; 方法二:(可操作字符) a=a+b; b=a-b; a=a-b; 方法三:(不可以操作字符) a=a*b; b=a/b; a=a/b; 方法四: swap(a,b); 转载于:https://www.cnblogs.com/answer727/p/7451001.html...
  • 一:不用中间变量交换a b值。 分析: a=a+b; #将a b的和赋值给a b=a-b; #a的值已经发生变化,并且保存了值,因此这里要只能对b进行求值,不能改变a的值a=a-b; #同理求得a值。 另一种解法: a=a^b b=a^b...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,208
精华内容 483
关键字:

交换变量a和b的值