中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c語言如何交換兩個數的值

發布時間:2020-10-27 10:49:38 來源:億速云 閱讀:1011 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關c語言如何交換兩個數的值,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

c語言交換兩個數的值

程序中有兩個數a,b,其中a=4,b=5,現在希望交換兩個數的值,使得a=5,b=4.

推薦課程:C語言教程

方法1: 使用一個臨時變量來進行保存,這應該也是大家最容易想到的方法

參考代碼:

#include <stdio.h>
int main()
{
    int a = 4;
    int b = 5;
    int nTemp;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    nTemp = a;
    a = b;
    b = nTemp;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

運行結果:

c語言如何交換兩個數的值

方法2:使用加減法來進行交換,這種方法實際上就是先把a+b的結果暫時先保存在變量a中,然后通過這改變后的a和原始的b進行減法就可以得到交換后的b,但是這種方法有一個缺陷,就是a和b都是int類型,a+b的結果可以越界。

參考代碼:

#include <stdio.h>
int main()
{
    int a = 4;
    int b = 5;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a + b;
    b = a - b;
    a = a - b;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

運行結果:

c語言如何交換兩個數的值

方法3:使用乘除法來進行交換,這種方法和方法2類似,只是用a*b代替a+b放在a中暫存,后面思路一樣,這種方法有著和方法2一樣的缺陷,就是越界問題,而且更加容易越界。

參考代碼:

#include <stdio.h>
int main()
{
    int a = 4;
    int b = 5;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a * b;
    b = a / b;
    a = a / b;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

方法4:使用異或的方法來進行交換,這種方法不存在之前越界的缺陷,是一種很完美的方法,這種方法主要利用了異或的特性a^b的值先保存到a,因為a^b^b=a所以可以順利完成交換。

參考代碼:

#include <stdio.h>
int main()
{
    int a = 4;
    int b = 5;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

方法5:使用移位的方法,把原來的int類型的a,把a的值拆分成高16位和低16位,相當于多了16位的暫存空間可以周轉,但是此方法的缺陷也顯而易見,就是如果被賦值的a或者b超過了16位,這種方法就會發生錯誤。

參考代碼:

#include <stdio.h>
int main()
{
    int a = 32123;
    int b = 12345;
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    printf("\n");
    a <<= 16;
    a |= b;
    b = a >> 16;
    a = a & 0xffff;
    printf("----------------------------------我是分割線------------------------------------\n");
    printf("交換前a,b的值為:\n");
    printf("a=%d\n", a);
    printf("b=%d\n", b);
    return 0;
}

運行結果:

c語言如何交換兩個數的值

關于c語言如何交換兩個數的值就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内黄县| 进贤县| 海原县| 丹江口市| 鄂托克旗| 台南市| 宜都市| 通辽市| 榆林市| 仁化县| 阳高县| 马山县| 呼和浩特市| 琼中| 孟州市| 峨眉山市| 辽源市| 宜城市| 思茅市| 延长县| 军事| 昔阳县| 信丰县| 肥城市| 白玉县| 藁城市| 和田市| 神木县| 洪雅县| 耒阳市| 溧阳市| 北票市| 新乐市| 惠州市| 贵溪市| 大连市| 定日县| 阳信县| 斗六市| 苍山县| 水富县|