程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++面試題之數a、b的值交換(不應用中央變量)

C++面試題之數a、b的值交換(不應用中央變量)

編輯:關於C++

C++面試題之數a、b的值交換(不應用中央變量)。本站提示廣大學習愛好者:(C++面試題之數a、b的值交換(不應用中央變量))文章只能為提供參考,不一定能成為您想要的結果。以下是C++面試題之數a、b的值交換(不應用中央變量)正文


標題請求:將數a、b的值停止交流,而且不應用任何中央變量。

法式以下:

 #include<stdio.h>

void swapValue1(int &a, int &b) //應用中央變量交流數據
{
 int temp = a;
 a = b;
 b = temp;
}

void swapValue2(int &a, int &b)//應用加減運算完成數據交流
{
 a = a + b;
 b = a - b;
 a = a - b; 
}

void swapValue3(int &a, int &b) //應用位運算交流數據
{
 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;
} 

運轉成果:

解析:
第一種:應用中央變量來到達交流數據的目標,這是最年夜眾的辦法,固然了不知足本題的請求。 

第二種:
應用簡略的加減操作來到達交流a、b值得目標。
缺陷:a+b和a-b時,能夠會到招致數據溢出。 

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

關於位運算的常識,參考http://www.jb51.net/article/87880.htm

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved