CS50 2016 Week 2 學習筆記

2021-08-07 20:57:10 字數 1608 閱讀 4729

這一課先講了除錯程式(debug),然後講了**正確性、**設計、**風格,最後講了陣列的概念。

核心思想是程式報錯後,能找到哪兒錯了,怎麼錯的。

如果是語法錯誤,根據報錯資訊,大概能找到怎麼錯的。

如果是邏輯錯誤,可以自己在腦海中過一遍程式執行的流程,看哪兒有邏輯錯誤,或者自己在可能有問題的地方寫測試**。

c語言軟體中有除錯模式,可以幫助找錯。

python中的異常處理,try and except可以在可能會出錯的地方提供解決方案,或者報錯。

對於初學者,只要**正確、能執行就挺好了。

**風格,關於空格、縮排、適當地換行、核心的地方寫注釋、合適的命名這些。

c語言中**風格至少要保證結構清晰、方便閱讀。

python中有pep8編碼規範,要多學習,多看別人好看的**,自然會按照規範書寫**。

c語言中使用使用標準ascii碼,用7位二進位制數來表示128個可能的字元。

c語言中%c輸出格式為字元,%i輸出格式為整型。在最後輸出時可以實現整型字元的轉換,利用這個特性,可以檢視0~127在ascii碼中對應的字元:

97~122對應著a~z; 65~90對應著a~z。(大小寫相差32)

利用這個特性可以自己寫大小寫的轉換,把所有字母轉換成小寫字母,或者把所有字母轉換成大寫字母。

如,將混在一起的大小寫字母轉換成大寫字母:

#include 

main()

else

}printf("\n");

printf("%s (the original string)",c);

}

執行結果:

上節課有c語言中幾種變數型別,整型變數、實型變數、字元變數等。

可以使用char * 來定義字串:char * s = "fengweilei";修改於2017/09/07

c語言中不能直接定義字串變數,只有char字元變數,乙個char變數能儲存乙個位元組,即乙個字母(ascii碼)。

可以用陣列來實現字串的定義,每乙個字元對應陣列中的乙個元素。

如下面**:

#include //匯入stdio標頭檔案(標準庫)

int main(void) // 定義main函式,void表示執行時不需要傳遞引數

printf("%s\n",s ); // 輸出整個字串

printf("the length of s is %i\n",strlen(s) );

}

執行結果:

CS50 2016 Week 0 學習筆記

今天開始從第一課開始學習了。week 0 和大學裡許多的第一節課一樣,只是簡單介紹這門課,沒有太多乾貨。有幾個知識點,比較重要。機器語言,即計算機能直接理解的語言,只有0 和 1 二進位制數 通過字元編碼,能用不同的數字表示不同的字元,能用二進位制數來表示我們熟悉的字元。乙個位元組儲存8個二進位制數...

CS50 2016 Week3 學習筆記

上一課講了陣列,這節課順利過渡到了陣列的查詢 排序。即查詢演算法 排序演算法。關於查詢演算法,除了常見的linear search binary search 還有好多好多。下面是常見的七大查詢演算法 順序查詢 二分查詢 插值查詢 斐波那契查詢 樹表查詢 分塊查詢 雜湊查詢 排序演算法,除了氣泡排序...

CS50 2016 Week4 學習筆記

以下內容摘抄自 c語言程式設計 第9章 根據馮諾依曼提出的 儲存原理 的計算機工作原理,程式要裝入記憶體後才能進行處理,資料也要裝入記憶體才能進行處理。記憶體是以位元組為單位的一片連續儲存空間,每個位元組都有唯一的編號,這個編號稱為記憶體的 位址 如同人們通過房間號來管理旅館一樣,系統通過記憶體位址...