-
此過程涉及資料表示範圍。 double 型別是雙精度浮點數,double 的有效數是 51 位二進位數,分為格式化表示和未格式表示,這實際上意味著雙精度可以表示的有效數不能大於 2 的 51 次方,即 2251799813685248,近似且小於 1e16。 因此,如果 sum 的值大於 2251799813685248,則 sum 的實際儲存值將是小於 16 位的最接近其真實值的小數位的值,並且會出現精度損失。
還有 50 個! 它大約是 3e64,比 1e16 大得多。 為了解決這個問題,只能使用整數陣列來儲存計算結果。
要編寫整數陣列乘法的實現,您需要考慮進位,就像垂直的正常乘法一樣。
乙個 32 位正整數表示乙個 2 的 32 次方以內的數字,兩個 32 位整數可以表示乙個 2 的 64 次方以內的數字,50! 需要 7 個 32 位正整數來表示。
-
你可以用這個應用做你想做的事。 此外,您的總和不想與陣列相乘; Sprintf 的功能有限。 希望對你有所幫助!
-
階乘。。 LZ 是否知道遞迴? 或者 for 迴圈也可以。
-
輸出為 nes
原因:*(p++)1,結果與*p+1的結果相同,*p為1,所以*p+1為ne
我們再分析乙個語句 **p-1,因為上一步有乙個 p++ 操作,p 是二級指標,你可以把 p 想象成乙個儲存 *p 的陣列,所以 *p 是 2,*p 是字串 2 的第乙個位址,所以 **p 是 t,所以 **p-1 是 s,綜上所述,輸出應該是: 其他
-
ne,s
p 原來指向 a 位址的雙指標,*p 是字元 *,1 指向字母 n,注意 p 後的 ++ 計算出來生效,所以在第乙個 printf 輸出 ne 之後,p 又是 ++,但 p 是指向 A[1] 後的雙指標 ++,所以這個時候, **p 指向 t,'t'-1 是 s
-
此函式的目的是輸出......反向的二進位數
讓我們具體解釋一下這個 bin 函式:
首先,要確定 x 2 是否大於 0,當它大於 0 時,呼叫 bin(x 2) 實際上是將 x 除以 2 然後再次呼叫該函式,因此該函式每次都會將原來的 x 除以 2,直到 x 等於 1。 至此,函式結束。
然後,bin 函式此時輸出 x 的餘數為 2,當 x 等於偶數時為 0,當 x 等於奇數時為 0
其實這就是我們以相反的順序找到乙個數字的二進位表示式的順序,我們來看看在普通情況下如何找到乙個數字的二進位:
例如,如果原始數字為 10,則:
1)先找到這個數字的餘數到2,然後用“個位數”寫成。現在 10 比 2 的餘數是 0,所以現在的數字是“0”。
2)判斷數是否大於1,等於1時計算完成,大於1時除以2求商,返回(1)。10 大於 1,當它大於 1 時,將這個數字除以 2 並找到整數(商),現在 10 除以 2,等於 5
3)再次回到(1),現在找到5比2的餘數,寫在“十”上,現在5比2的餘數是1,所以原來的數字現在是“10”。
4)再次回到2,將5除以2,找到整數,等於2
5)再次回到(1),寫在“百”上的現在的2到2的餘數是0,現在的數字是“010”。
6) 再次回到 (2),2 除以 2,等於 1
7)再次回到(1),這一次,1到2的餘數,等於1,寫在“千”的地方,現在數字是“1010”。
8)現在回到(2)1等於1,計算完成,所以10的二進位數是“1010”。
而現在這個bin函式會把這個二進位數倒過來寫,因為printf函式會把當前數字的餘數一一列印到2,不會把第乙個餘數放在“個位數”,第二次放在“十”位,第三次放在“百”位, 所以我們手動計算(從右到左寫)的原始結果會在bin中完全顛倒(從左到右寫),不知道我是否這樣解釋,你明白沒有......
-
首先,這個問題的目的是將十進位數 12 轉換為二進位數 1100。 你可以用 bin(2) 替換 12,輸入這個函式先確定 2 2=1,然後迭代呼叫 bin(1),輸入 bin(1) 並判斷 1 2=0,然後輸出 1%2=1,兩者都輸出 1,返回 bin(2),輸出 2%2=0。 最終結果是 10 是與十進位數對應的二進位數。
-
程式條目, main(), 呼叫函式, bin(12)x=12
x=12,x 2==6 是 呼叫自身 x=6,x 2==3 是 呼叫自身 x=3,x 2==1 是 呼叫自身 x=1,x 2==0 否 輸出:1%2=1 回到上一層,3%2=1
回到上一層,6%2=0
回到上一層,12%2=0
程式執行結果:
-
執行程式的詳細過程可以在下圖中找到
因此,完整輸出為 0
-
如果 n= 之後的所有 if 更改為 n==
兩個相等是判斷。
-
如果你在 if(n=1) 語句中犯了乙個錯誤,它是絕對正確的,所以 2 3 應該是 if(n==1),所有 ifs 都必須是這樣的。
-
1 全部 i=10, j=6
運算子的優先順序低於 + 運算子。
所以:i%=j+1 實際上可以寫成:i=i%(j+1) 所以:i=3