回覆列表
-
1 # 使用者474522086324
-
2 # 愛大海的聲音
C語言中的演算法是指為解決某個特定問題而採取的確定且有限的步,主要的五個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。演算法是指為解決某個特定問題而採取的確定且有限的步驟。
一個演算法包含的操作步驟應該是有限的;演算法中每一條指令必須有確切的含義,不能有二義性,對於相同的輸入必須能得到相同的執行結果;演算法中指定的操作,都可以透過已經驗證過可以實現的基本運算執行有限次後實現;在計算機上實現的演算法是用來處理資料物件的,在大多數情況下這些資料物件需要透過輸入來得到;演算法的目的是為了求解,這些解只有透過輸出才能得到(注意:演算法要有一個以上的輸出)。一個演算法應該具有以下五個重要的特徵:1、有窮性(Finiteness)演算法的有窮性是指演算法必須能在執行有限個步驟之後終止。2、確切性(Definiteness)演算法的每一步驟必須有確切的定義。3、輸入項(Input)一個演算法有0個或多個輸入,以刻畫運算物件的初始情況,所謂0個輸入是指演算法本身定出了初始條件。4、輸出項(Output)一個演算法有一個或多個輸出,以反映對輸入資料加工後的結果。沒有輸出的演算法是毫無意義的。5、可行性(Effectiveness)演算法中執行的任何計算步都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成。(也稱之為有效性)。
先說一下printf處理引數的原理。
該函式的實現用的是可變引數,函式並不知道你會輸入多少引數,函式先按引數從右到左進行壓棧,最後把格式化字串壓入棧,然後根據格式化字串中%c、%d等等,順序從壓棧倒序獲取資料。取資料即有可能取出部分資料,也可能取出一些垃圾資料。
浮點數在記憶體中的儲存方式:任何資料在記憶體中都是以二進位制的形式儲存的。
float型資料1轉換為標準浮點格式1二進位制表示形式為1,由於規定尾數的整數部分恆定為1,表示為1.0*2^0,階碼為0,加上127為1111111;尾數去掉1,則為0。在其後邊補0使其位數達到23位。
則其二進位制表示形式為
00000000低地址
00000000
10000000
00111111高地址
如果printf("%d",x);輸出則為0
如果printf("%f",x);輸出則為3
綜上所述,兄弟提了個好問題,回答有點亂,還居然搞了半小時,老闆很生氣。