zoukankan      html  css  js  c++  java
  • C语言基础:两个变量交换值的方法

    学习任何语言基础时,两个数值得交换是必须掌握的,下面是3种不同的方式(c语言)

    方法一:利用数学的计算技巧

     1 #include <stdio.h>
     2 int main()
     3 {
     4     
     5     int a =10, b = 20;
     6     
     7     printf("交换前a=%d, b=%d
    ", a, b);
     8     
     9     a = a - b;
    10     b = a + b;
    11     a = b - a;
    12     
    13     printf("交换后a=%d, b=%d
    ", a, b);
    14     
    15     return 0;
    16 }

    这种方法的写法不唯一,对于a,b;只要先给其中一个先赋予a-b,其他的自己算一下就能写出来;

    方法二:第三方变量,也是最常用,可读性最好的

     1 #include <stdlib.h>
     2 #include <stdio.h>
     3 int main()
     4 {
     5 
     6     int a =10, b = 20;
     7     printf("交换前a=%d, b=%d
    ", a, b);
     8     
     9     int temp = a;//先定义一个临时变量
    10     a = b;
    11     b = temp;
    12     
    13     printf("交换后a=%d, b=%d
    ", a, b);
    14     
    15     return 0;
    16 }

    方法三:位运算,利用^异或运算的特点:a^b^a = a^a^b = 0^b = b,交换律,相同数值异或为0,0和任何数异或为任何数

     1 #include <stdio.h>
     2 int main()
     3 {
     4     int a =10, b = 20;
     5     printf("交换前a=%d, b=%d
    ", a, b);
     6     
     7     a = a^b;
     8     b = b^a;
     9     a = a^b;
    10     
    11     printf("交换后a=%d, b=%d
    ", a, b);
    12     
    13     return 0;
    14 }
  • 相关阅读:
    BZOJ5311,CF321E 贞鱼
    POJ3208 Apocalypse Someday
    POJ1037 A decorative fence
    POJ1737 Connected Graph
    CF559C Gerald and Giant Chess
    NOI2009 诗人小G
    Problem 2726. -- [SDOI2012]任务安排
    POJ1821 Fence
    HDU5542 The Battle of Chibi
    POJ2376 Cleaning Shifts
  • 原文地址:https://www.cnblogs.com/cxbblog/p/3704899.html
Copyright © 2011-2022 走看看