《劍指offer》的第三張開始講關於高質量**的內容,裡面涉及到了關於程式設計時的邊界條件,細節疏忽的問題,這裡記錄一下;
關於異常的處理有三種方法:
1:返回值:利用函式的返回值,判斷是否出現問題,在windows下面,一般返回零表示成功,返回非零值,根據不同的值,代表不同的問題;
2:全域性變數:當發生錯誤的時候,我們可以把錯誤的值傳遞到全域性變數中,然後判斷全域性變數;
3:使用異常的方式:當有錯誤發生的時候,可以直接丟擲異常;
分析這三種的優缺點:
返回值:優點:和系統的api統一。缺點:不能將函式的返回值作為引數,賦值給其他變數,或者當作函式引數;
全域性變數:優點:可以方便的使用 計算結果,但是使用者很肯能忘記檢查全域性變數。
異常方式:優點:可以很方便的定義不同的異常型別。缺點:有些語言不支援,丟擲異常的時候會打亂程式的執行順序,對效能有影響。
如何判斷兩個double或者float型別的資料是否相等,對於剛開始學習程式設計的人肯定會直接寫 a == b 但是這種方式只適用於int型別,對於double和float型別由於精度的問題,不能保證所以要設定乙個誤差範圍:
bool equal(double a, double b)
對於乙個數的平方,我們需要考慮的問題有:底數是否為零、指數是否為零、指數大於零還是小於零、如果底數為零並且指數也為零的時候,零的倒數是多少???
尤其是對於乙個除法:一定要注意除數不能為零
面試題12:輸入數字n,按順序列印出從1到最大的n位十進位制數,比如輸入3,則列印出1,2,3一直到最大的3為數999.
這裡正常的想法肯定的設定乙個int型別或者long long型別的,但是最終都會溢位。。。所以最好的方式是利用陣列,為了是所用的記憶體最少,所以使用字元陣列。可以無限制的輸出很多位數了。具體如何實現,這裡就不講了。
面試題13:在o(1)的時間內刪除鍊錶節點,並且給定單向鍊錶的頭指標和乙個要刪除的節點的指標;
由於這種題很多人說,所以大家都知道了,但是有幾個地方需要注意的,首先:如果刪除的是鍊錶的最後乙個元素呢?最後乙個元素的next指向的是null,沒法像正常的元素那樣,把下乙個元素的內容複製到要刪除的元素內,然後把下乙個元素刪掉,所以對於最後乙個元素沒有別的辦法,只能從頭指標進行掃瞄,這時被刪除的元素即是頭元素也是尾元素,要讓頭指標也指向null,所以這裡也要分開討論。
關於《高質量C C程式設計指南》
這本書是林銳博士寫於2001年7月,現在都2012年了,相隔10年多,用了兩天時間看完這個100頁的書,裡面幾乎沒有廢話,全是精煉的總結性的東西,思路順暢,語言流暢,看起來不費勁。一共11章,其中1 6章的內容,和我自己的習慣是一致的,看此書之前已經是我的習慣了,看了之後更加印證了正確性。第7章,記...
高質量程式設計 筆記
1.高質量軟體開發之道 1.提高軟體質量的基本方法 2.軟體質量屬性 3.質量 生成率和成本 4.軟體過程改進 5.高質量軟體開發的基本方法 2.程式的基本概念 1.程式語言 一套規範的集合,主要包括語言使用字符集 資料型別集合 運算子集合 關鍵字集合 指令集合 語法規則 對特定構造的支援 函式 繼...
高質量程式設計C C
一 請填寫bool float,指標變數與 零值 比較的 if 語句。10 分 請寫出 bool flag 與 零值 比較的 if 語句。3 分 標準答案 if flag if flag 如下寫法均屬不良風格,不得分。if flag true if flag 1 if flag false if f...