關於PTA中C語言習題中的錯情分析和知識點遺漏

2021-08-21 11:14:04 字數 2011 閱讀 3177

學完浙大翁老師的課程之後,覺得自己已經初窺門徑,遂跑到pta刷題測試,結果發現自己不僅錯漏百出,有一些東西也確實沒有掌握徹底,一些特殊演算法和程式設計思路也缺乏頭緒,在邊刷邊學中,自己對相關知識點也有了更新的認識,記錄如下。(只是初級c語言的一些體會)

1.關於判斷語句中的==

判斷語句中的相等判斷,容易錯寫為=,則判斷語句變為賦值語句,恒為真或者假,大部分情況下編譯不會出錯,所以需要自己在書寫過程中加以注意。例如:

7-20簡單計算器

7-39龜兔賽跑中就出現此類錯誤。

2.關於輸入輸出的格式控制符和型別匹配

pta中的gcc編譯器對於資料型別要求比較嚴格,在有些情況下,對double型資料用%f進行輸入輸出會出現測試資料錯誤,個別題目修改資料為float即通過;double輸出為int時一定進行強制型別轉換,或者%.0lf;注意scanf的特殊匹配字段用法。例如:

7-18日期轉換

7-15厘公尺換英吋

7-18求組合數

課堂內容,scanf讀入gps識別碼

3.double型別資料的臨界值及相等判斷

double型別不能進行==的判斷,會發生不確定的情況,在對[a,b]閉區間的邊界值進行判斷時,只能採用差小於誤差的方法,或者在二者開區間之外再與區間內的確定int值進行比較大小來確定。進行雙向判斷時,如(0.9,1.1),切記統一係數,改為(0.9,2-0.9),如果直接用0.9和1.1可能出現不確定錯誤。

7-40你是不是太胖了

7-65消除-0.0

4.迴圈中的賦初值和退出問題

盡量不要在迴圈中定義變數,這樣會導致執行速度和效率的下降,但是在迴圈體外定義的變數,如果每次迴圈都要從新來過的話,一定不要忘記在迴圈體內進行賦初值的操作,否則該變數會持續參加每一次迴圈,導致錯誤;在巢狀迴圈中,注意break的跳出範圍,需要多層break。例如:

7-31掉入陷阱的數字

6-4查詢子串

7-38支票面額

5.關於取餘取模

在%取餘進行範圍判斷或者獲取區間數的過程中,一定一定注意判斷0值的存在。例如:

7-7後天問題

6.關於演算法

對於**和成長性問題,可以先模擬出初始一些狀態的資料,從中找出數學規律進行程式設計。例如:7-27兔子繁衍問題即為斐波那契數列。

對於問題抽象和反向思考,可以模擬手工演算法。例如:7-42整除光棍。

7-64最長對稱子串,把每個元素看做對稱中心進行測試,然後遍歷。

對於任意步數的模擬操作,可以簡化為操作一步,然後迴圈。例如:7-52陣列迴圈右移

7.最後一定一定看清楚題意,尤其注意輸入輸出的空格、回車、格式控制等要求,切記切記。

關於C語言程式設計中include的用法

1 iostream與iostream.h的區別 include 這個就是1998年標準化以後的標準標頭檔案 include 這個就是標準化以前的標頭檔案 更本質上的區別就是iostream把標準c 庫的元件放在乙個名位std的namespace裡面。而相對的iostream.h則將這些標準 元件放...

關於C語言程式設計中include的用法

1 iostream與iostream.h的區別 include 這個就是1998年標準化以後的標準標頭檔案 include 這個就是標準化以前的標頭檔案 更本質上的區別就是iostream把標準c 庫的元件放在乙個名位std的namespace裡面。而相對的iostream.h則將這些標準 元件放...

關於 和 在C語言的巨集中的使用

原文參考 關於 和 在c語言的巨集中,我們使用 把巨集引數變為乙個字串,用 把兩個巨集引數貼合在一起.define str s s define cons a,b int a e b printf str vck 輸出字串 vck printf d n cons 2,3 2e3 輸出 2000 1....