雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++面試題之?dāng)?shù)a、b的值互換(不使用中間變量)

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊:

題目要求:將數(shù)a、b的值進行交換,并且不使用任何中間變量。

程序如下:

 #include<stdio.h>

void swapValue1(int &a, int &b) //使用中間變量交換數(shù)據(jù)
{
 int temp = a;
 a = b;
 b = temp;
}

void swapValue2(int &a, int &b)//使用加減運算完成數(shù)據(jù)交換
{
 a = a + b;
 b = a - b;
 a = a - b; 
}

void swapValue3(int &a, int &b) //使用位運算交換數(shù)據(jù)
{
 a^=b;
 b^=a;
 a^=b;
}
int main()
{
 int a1 = 1, b1 = 2;
 int a2 = 3, b2 = 4;
 int a3 = 5, b3 = 6;
 
 swapValue1(a1, b1);
 swapValue2(a2, b2);
 swapValue3(a3, b3);
 
 printf("a= %d b= %d\n",a1, b1);
 printf("a= %d b= %d\n",a2, b2);
 printf("a= %d b= %d\n",a3, b3);
 
 return 0;
} 

運行結(jié)果:

解析:
第一種:使用中間變量來達到交換數(shù)據(jù)的目的,這是最大眾的方法,當(dāng)然了不滿足本題的要求。 

第二種:
使用簡單的加減操作來達到交換a、b值得目的。
缺點:a+b和a-b時,可能會到導(dǎo)致數(shù)據(jù)溢出。 

第三種:
采用位運算的方法,按位異或運算。(建議采用這種方式)
異或運算:相同的二進制位異或運算為0,不相同的二進制位異或運算為1。 

關(guān)于位運算的知識,參考//www.jb51.net/article/87880.htm

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:簡單掌握桶排序算法及C++版的代碼實現(xiàn)

欄    目:C語言

下一篇:C 語言中實現(xiàn)環(huán)形緩沖區(qū)

本文標(biāo)題:C++面試題之?dāng)?shù)a、b的值互換(不使用中間變量)

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/2184.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有