演算法競賽入門經典 第四章答案

2021-06-28 14:31:43 字數 1849 閱讀 9081

4.4.1 小問題集錦

任務1:使用assert巨集,讓解不唯一時退出。

#include#includevoid solve(double a,double b, double c,double d, double e,double f,double &x,double &y)

int main()

任務2:解不唯一時仍然正常返回,但呼叫者有辦法知道解的數量(無解、唯一解,無窮多組解)。

#includeint solve(); 

double a,b,c,d,e,f,x,y;

int main()

int solve()

else

}

思考:任務一:定義int  a,b,要求依次執行a=f(),b=f()後,a和b的值不同。

#includeint i=1; 

int f()

;int main()

任務二:定義int a,b,要求在依次執行a=(f()+g())+h()和b=(f()+(g()+h())後,a和b的值不同。

#includeint i=1;

int f()

int g()

int h()

int main()

問題一:區域性變數是否可以和全域性變數重名?如果可以,實際上用的是哪個?這可能會引起什麼樣的難以察覺到的錯誤?當然可以重名,我們可以通過下面程式來看。

#includeint a=1;

int main()

執行結果如下圖:

從程式的結果看,好像是有效的。實驗一:宣告全域性變數int a[1000000],不要宣告其他變數,編譯後可執行檔案大小。

#includeint a[1000000];

int main()

實驗二:宣告全域性變數int a[1000000]=,不要宣告其他變數,編譯後檢視可執行檔案大小。在我電腦裡可執行檔案的大小為3929kb.

#includeint a[1000000]=;

int main()

我的電腦中可執行檔案大小是23kb。

《演算法競賽入門經典》第四章小結

題目 編寫乙個函式solve,給定浮點數a,b,c,d,e,f,求解方程組ax by c,dx ey f.任務1 使用assert巨集,讓解不唯一時異常退出。任務2 解不唯一時仍正常返回,但呼叫者有辦法知道解的數量 無解,唯一解,無窮多組解 思考 函式的引數都有哪些,各是什麼型別?任務1 inclu...

演算法競賽入門經典第四章習題

習題4 1 題目大意就是 乙個象棋殘局,紅方有n 2 n 7 個棋子,黑方只有乙個將,紅方除了帥,還可能有車,馬,炮,並且要考慮 蹩馬腿 輸入所有棋子的位置,保證局面合法並且紅方已經將軍,判斷紅方是否已經將黑方將死,解題思路 用乙個棋盤儲存紅方可以打到的地方,看黑方將是否有其餘的地方去,在豎直方向只...

演算法競賽入門經典 紫書 第四章

關於判斷素數的幾點 該函式有嚴重缺點 不能用於n 1和n較大的情況 在n接近int的最大值時 若i 46340時,i i 2147395600 若i 46341時,i i 2147488281超過了int的最大值,溢位變成了負數,就會繼續進行下去 intis prime int n return1 ...