C語言中臨時變量寫在哪里,C語言中不允許創建臨時變量,交換兩個數的內容

在C語言中可以通過建立臨時變量來實現兩個變量的交換,當不允許建立臨時變量時,應該怎樣實現兩變量的交換呢?

假設有兩個變量num1和num2;下面通過兩種方法進行分析。

方法一:利用加減法。具體算法分析如下:

由于 ? ? ? ? ? ? ? ? ??num1+num2-num1=num2;

num1+num2-num2=num1;

則將num1+num2賦給num1;num1-num2賦給num2;num1-num2賦給num1,這樣就可以實現num1和num2兩個數內容的交換。通過相同的思想,我們也可以將加減運算改為乘除運算,但此法存在缺陷。對于不能整除的兩個數,設定的精度不同結果的誤差就不同。

代碼如下:#include

int?main()

{

int?num1=10,num2=20;

num1=num1+num2;

num2=num1-num2;

num1=num1-num2;

/*相同方法:將“+”“-”換成“*”“/”*/

printf("%d?%d",num1,num2);

return?0;

}

方法二:利用按位異或法。C語言中異或運算符“^”也稱為“XOR”運算符,對于二進制數據它的運算規則是:0^0=0;0^1=1;1^0=1;1^1=1;若參加運算的兩個數同號,則結果為0(假);異號時結果為1(真)。

具體算法分析如下:num1^num2^num1=num2;

num1^num2^num2=num1;

則將num1^num2賦給num1;num1^num2賦給num2;num1^num2賦給num1,這樣就可以實現num1和num2兩個數內容的交換。

例如:兩個變量a=2和b=3.

a=2 ? ? ? ? ? ? ? ? ? ?00000000 00000000 00000000 00000010

b=3 ? ? ? ? ? ? ? ? ? ?00000000 00000000 00000000 00000011

a=a^b=2^3 ? ? ? ?00000000 00000000 00000000 00000001

b=a^b=2^3^3 ? ?00000000 00000000 00000000 00000010

a=a^b=2^3^2 ? ?00000000 00000000 00000000 00000011

此時兩個數a,b的內容交換了。

代碼如下:#include

int?main()

{

int?num1=35,num2=56;

num1=num1^num2;

num2=num1^num2;

num1=num1^num2;

/*異或,此法優于用加減法或乘除法*/

printf("num1=%d,num2=%d",num1,num2);

return?0;

}

小知識:如何動態求取數組大小?

例如:對于數組不知道其大小,可通過sizeof求其長度。sizeof運算符可以動態計算類型大小,

對于數組a[],它的數組大小可用sizeof(a)/sizeof(a[0]),求取對于整型數組sizeof(a[0])=4。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452545.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452545.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452545.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python面試題總結(8)--操作類

1. 請寫一個 Python 邏輯,計算一個文件中的大寫字母數量 答:讀取‘A.txt’中的大寫字母數量 with open(A.txt) as f:"""計算一個文件中的大寫字母數量"""count 0for i in f.read():if i.isupper():count 1 print(cou…

聯合主鍵

一個數據庫表只能有一個主鍵,不允許兩個主鍵。但是允許兩個字段聯合起來設置為主鍵,這叫聯合主鍵。

node之post提交上傳

post文件上傳 multer 中間件 在node中 express為了性能考慮采用按需加載的方式,引入各種中間件來完成需求, 平時解析post上傳數據時候,是用body-parse。但這個中間件有缺點,只能解析post的文本內容,(applic…

要有自己的核心競爭力,應對時代變遷

在之前的PC時代和互聯網時代,人們都有一些顧慮,覺得智能化新技術的到來和采用將會導致就業人數急劇減少。 但實際上,無論是PC還是互聯網這樣新技術的到來,其實都對就業有極大的促進作用,其中最明顯的例子,…

ul、li列表簡單實用代碼實例

利用ul和li可以實現列表效果&#xff0c;下面就是一個簡單的演示。 代碼如下: 010203040506070809101112131415161718192021222324252627282930313233<!DOCTYPE html><html> <head> <meta charset" utf-8"> <meta name"author"…

Flask--讀取配置參數的方式

文章目錄方法1. 使用配置文件方法2. 使用對象配置參數方法3. 直接操作config的字典對象項目實例方法1. 使用配置文件 首先將配置參數寫在文件中&#xff0c;例如&#xff1a;config.cfg 然后導入: app Flask("__name__") app.config.from_pyfile("config.cf…

g開頭的C語言編程軟件,C語言函數大全(g開頭)

函數名: gcvt功 能: 把浮點數轉換成字符串用 法: char *gcvt(double value, int ndigit, char *buf);程序例:#include#includeint main(void){char str[25];double num;int sig 5; /* significant digits *//* a regular number */num 9.876;gcvt(num, sig, str);printf(&quo…

什么是總體設計

總體設計的基本目的就是回答“概括地說&#xff0c;系統應該如何實現”這個問題&#xff0c;因此&#xff0c;總體設計又稱為概要設計或初步設計。總體設計階段的另一項重要任務是設計軟件的結構&#xff0c;也就是要確定系統中每個程序是由哪些模塊組成的&#xff0c;以及這些…

程序員成熟的標志《程序員成長路線圖:從入門到優秀》

對好書進行整理&#xff0c;把好內容共享。 我見證過許多的程序員的成長&#xff0c;他們很多人在進入成熟期之后&#xff0c;技術上相對較高&#xff0c;一般項目開發起來比較自信&#xff0c;沒有什么太大的困難&#xff0c;有的職位上也有所提升&#xff0c;成了項目經理、…

Diango博客--1.Django的接客之道

文章目錄0.思路引導1.實現最簡單的HelloWorld2.實現最簡單的HelloWorld(使用Templates)0.思路引導 django 的開發流程&#xff1a; 即首先配置 URL&#xff0c;把 URL 和相應的視圖函數綁定&#xff0c;一般寫在 urls.py 文件里&#xff0c;然后在工程的 urls.py 文件引入。 …

c語言is int number,C語言中NSInteger,NSNumber以及Int的區別

NSInteger和NSNumber首先:NSInteger,NSNumber并沒有什么關系,更不要想當然的以為二者還有什么繼承關系,甚至還有人問NSInteger是不是NSNumber的子類?答案當然是NO!!!NSInteger只是一個基本的數據類型,而NSNumber是OC的對象,并且NSNumber繼承自NSValue,NSValue又繼承自NSObject…

Git的GUI工具sourcetree的使用

一、Git的學習這部分學習廖雪峰的git教程&#xff0c;參加以下鏈接&#xff1a;https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0001、首先是git的基本概念&#xff0c;如下圖所示&#xff1a;整個git管理主要分為工作區、版本庫&#xff0…

YY一下,扎克伯格做了一個什么樣的AI家居助手?

對于這款令小扎太太抓狂的AI家居助手&#xff0c;難道就沒人好奇嗎&#xff1f; 據說&#xff0c;扎克伯格每年都要給自己定個目標&#xff0c;而他也即將完成今年的目標——打造一個AI家居助手。 當初&#xff0c;在定下這個目標時&#xff0c;小扎為我們簡單描述了一下&…

Diango博客--2.博客從“裸奔”到“有皮膚”

文章目錄0.思路引導1.更改視圖函數&#xff0c;從數據庫中獲取數據2.網上下載模板&#xff0c;添加靜態文件3.修改模板Templates中css、js文件的加載路徑4.修改模板&#xff0c;引入模板變量&#xff0c;獲取數據庫數據0.思路引導 前文的Hello World 級別的視圖函數特別簡單&a…

抽象

人類在認識復雜現象的過程中使用的最強有力的思維工具是抽象。人們在實踐中認識到&#xff0c;在現實世界中一定事物、狀態或過程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來&#xff0c;暫時忽略它們之間的差異&#xff0c;這就是抽象。或者說抽象就是…

程序員的成長從開竅開始系列 一、如何擺脫低級錯誤的困擾

最近&#xff0c;有兩位Google Maps API的初學者向我請教他們按照最簡單例子寫的程序為什么不能正常的運行。 其中一位用GTalk跟我交流&#xff0c;我仔細了看了他的代碼&#xff0c;沒看出問題&#xff0c;把代碼保存在本地&#xff0c;打開Firefox的錯誤控制臺&#xff0c;用…

脈沖時間寬度c語言,什么是脈沖寬度_脈沖寬度是什么意思

脈沖寬度是個很廣泛的詞&#xff0c;在不同的領域&#xff0c;脈沖寬度有不同的含義。脈沖寬度從學術角度講就是電流或者電壓隨時間有規律變化的時間寬度&#xff0c;平時研究主要是方波&#xff0c;三角波&#xff0c;鋸齒波&#xff0c;正弦函數波等等&#xff0c;這些波形變…

HDU - 5919 Sequence II

題意&#xff1a; 給定長度為n的序列和q次詢問。每次詢問給出一個區間&#xff08;L&#xff0c;R&#xff09;&#xff0c;求出區間內每個數第一次出現位置的中位數&#xff0c;強制在線。 題解&#xff1a; 用主席樹從右向左的插入點。對于當前點i&#xff0c;如果a[i]出現過…

Django博客--3.創作后臺開啟

文章目錄0.創建admin后臺管理員賬號1.在 admin 后臺注冊模型2.漢化應用的標題3.漢化應用下各個模塊的名稱4.漢化應用下各個模塊的屬性的名稱5.文章列表顯示更加詳細的信息6.簡化新增文章的表單7.自動設置文章作者為當前用戶8.設定創建時間為當前時間9.設定修改建時間為保存時的…

逐步求精

逐步求精定義為為了能集中精力解決主要問題而盡量推遲對問題細節的考慮。 逐步求精最初是由NiklausWirth提出的一種自頂向下的設計策略。按照這種設計策略&#xff0c;程序的體系結構是通過逐步精化處理過程的層次而設計出來的。通過逐步分解對功能的宏觀陳述而開發出層次結構…