




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、編寫簡單的C語言程序(NOI培訓(xùn))劉汝佳何為“簡單?百度風(fēng)格:簡單可依賴簡單不等于簡陋我們的目標(biāo):用簡單、直觀、不容易出錯(cuò)的程序來完成任意復(fù)雜的功能,而不是把各種“高級的東西堆砌在一起,然后把包括自己在內(nèi)的所有人搞糊涂在編程語言中,不是所有語言特性都是必須的。對于算法程序來說尤其如此。為什么要學(xué)習(xí)C語言應(yīng)用范圍廣,是學(xué)習(xí)C+, Java, C#等語言的根底功能強(qiáng)大,語法也不算復(fù)雜,適合描述算法,也適合用C語言體會設(shè)計(jì)、編碼、調(diào)試和測試這些步驟的最正確實(shí)踐。學(xué)些啥?語法、語義常用庫函數(shù)從實(shí)例中學(xué)習(xí)如何設(shè)計(jì)如何編碼如何調(diào)試如何測試C語言的特性三大特性源碼可移植性(在一定程度上)可編寫底層程序高效U
2、nix操作系統(tǒng)就是由C寫成。在嵌入式領(lǐng)域應(yīng)用十分廣泛,但也有很多用C寫成的字處理程序和數(shù)據(jù)庫系統(tǒng)程序結(jié)構(gòu)C語言是面向過程的,因此根本構(gòu)造塊是函數(shù)。函數(shù)可以自己寫,也可以用標(biāo)準(zhǔn)庫里已有的。函數(shù)中包含語句,而語句可以組合成語句塊。/ a hello world program#include int main() printf(“hello world!n); return 0;從一開始培養(yǎng)編碼習(xí)慣簡單的hello world函數(shù)也可以看出編碼習(xí)慣注釋:要有,但不要過量空格:大多數(shù)token之間需要加空格縮進(jìn):可以2,3,4格或者tab縮進(jìn),但要統(tǒng)一花括號換行:是否單獨(dú)另加一行均可,但要統(tǒng)一多語句
3、:盡量不要一行寫多條語句;不要用逗號代替花括號盡量把邏輯復(fù)雜的長語句分成簡單的多條語句。這樣不僅程序更漂亮、易寫易讀,而且方便測試和調(diào)試。不要追求炫的寫法,要遵守KISS類型根本類型:整數(shù)、實(shí)數(shù)與復(fù)數(shù)枚舉無值(void)派生類型指針數(shù)組結(jié)構(gòu)體聯(lián)合函數(shù)算術(shù)類型聚集類型C語言中沒有函數(shù)和過程的區(qū)別C語言的函數(shù)不能嵌套定義。說明和定義可以分開可以防止使用指針是雙刃劍,在提供靈活性的同時(shí)犧牲了平安整數(shù)如何表示正整數(shù)?如何表示負(fù)整數(shù)?有符號整數(shù)和無符號整數(shù)有何區(qū)別?為什么會有不同大小范圍的整數(shù)類型?如何表示正無窮和負(fù)無窮?整數(shù)有哪些常見運(yùn)算?有什么需要注意的地方?如何表示高精度整數(shù)?如何編寫它的運(yùn)算?字
4、符:一種特殊的整數(shù)問題:如何改變大小寫?變種:Latin-1,Unicode實(shí)數(shù)如何表示有理數(shù)?如何表示無理數(shù)如果可以的話?既然實(shí)數(shù)表示的范圍比整數(shù)大,那為什么還需要整數(shù)類型?為什么要盡量防止比較實(shí)數(shù)是否相等?如何表示正無窮?負(fù)無窮?是否有其他特殊的實(shí)數(shù)?有哪些常見的實(shí)數(shù)函數(shù)?如何取整?如何表示高精度實(shí)數(shù)?如何編寫它的運(yùn)算?數(shù)組數(shù)組里必須是相同的數(shù)據(jù)類型數(shù)組名代表它的首地址。無法根據(jù)這個(gè)首地址獲取該數(shù)組的元素個(gè)數(shù)特殊的數(shù)組:字符串?dāng)?shù)組中的每個(gè)元素是一個(gè)字符以特殊字符0 (ASCII碼為0) 結(jié)尾結(jié)構(gòu)體相當(dāng)于Pascal語言中的記錄數(shù)據(jù)封裝的例子問題:如果要表示二叉樹,結(jié)點(diǎn)類型必須自己包含自己?
5、建議:盡管不推薦使用,指針在某些時(shí)候還是必須的。在需要使用指針的場合,盡管只用取地址和取內(nèi)容運(yùn)算符,不要對地址本身進(jìn)行運(yùn)算。這將大大降低出錯(cuò)的可能運(yùn)算符八類運(yùn)算符算術(shù)運(yùn)算賦值運(yùn)算自增自減比較運(yùn)算邏輯運(yùn)算位運(yùn)算地址運(yùn)算其他運(yùn)算函數(shù)調(diào)用、取大小、強(qiáng)制類型轉(zhuǎn)換等Lvalue = 表達(dá)式1 = a& | !& | 沒有乘方運(yùn)算表達(dá)式的副作用如果在計(jì)算一個(gè)表達(dá)式后,程序的執(zhí)行環(huán)境發(fā)生改變,我們說這個(gè)表達(dá)式有副作用副作用往往隱藏著陷阱!副作用的源頭自增自減運(yùn)算 (不要寫出a = a+ +a 這樣的東西)能修改數(shù)組和結(jié)構(gòu)體的函數(shù)全局變量問題:你能想到哪些由副作用引起的錯(cuò)誤?語句空語句表達(dá)式語句:要么是賦值語
6、句,要么有副作用,否那么意義不大盡管合法控制流語句條件分支: if, else. 可以嵌套循環(huán): for, while, do-while. 可以嵌套無條件跳轉(zhuǎn):break, continue, goto語句可以用花括號復(fù)合到一起問題:可以完全防止goto語句嗎?新的作用域不要goto語句?程序設(shè)計(jì)方法的進(jìn)步:結(jié)構(gòu)化程序設(shè)計(jì)三大根本結(jié)構(gòu):順序、分支、循環(huán)合理的設(shè)計(jì)程序流程圖是一個(gè)必須熟練掌握的根本功. 推薦在紙上寫清楚了,再動手編碼畫N-S圖寫偽代碼,只包含if-else, for, while/do-while, break和continue,不含gotoC語言并非嚴(yán)格的結(jié)構(gòu)化編程語言,因此
7、更多的是靠自覺!函數(shù)函數(shù)的定義:參數(shù)、返回值、函數(shù)體函數(shù)的聲明:類似Pascal的forward聲明參數(shù)傳遞方法:傳值、通過指針傳參問題:何時(shí)需要傳參?輸入輸出不同語言的輸入輸出方法很不一樣C語言:printf, scanf等C+語言:除了printf和scanf外還可以用流(cin, cout etc)Java語言:流,但輸入經(jīng)常需要自己解析建議:學(xué)會自己解析和生成字符串,而不要只會用系統(tǒng)提供的格式化輸入輸出函數(shù)。其他內(nèi)容預(yù)編譯指令包含頭文件宏的應(yīng)用動態(tài)內(nèi)存管理malloc, free動態(tài)結(jié)構(gòu)不一定需要?jiǎng)討B(tài)分配內(nèi)存!例1. 3n+1問題例1. 3n+1問題提示最重要的子問題是什么?該問題可以單元測試嗎?你的程序是否包含了重復(fù)的運(yùn)算?如果是,可以防止嗎?此題有什么陷阱嗎?例2. Jolly Jumper提示是否可以把“取遍
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)集資合同范本
- 合同范本甲方名字過長
- 農(nóng)村澆地用電合同范本
- 合伙辦鞋廠合同范本
- 合同范本橫豎
- 中介臨時(shí)勞動合同范例
- 協(xié)議購車合同范本
- 專業(yè)監(jiān)理安裝合同范本
- 吉利采購合同范本
- 廠房賃合同范本
- 2025年中央一號文件高頻重點(diǎn)考試題庫150題(含答案解析)
- 接觸隔離標(biāo)準(zhǔn)操作流程
- 港股基礎(chǔ)知識
- 2025年溫州市甌海旅游投資集團(tuán)有限公司下屬子公司招聘筆試參考題庫附帶答案詳解
- 2025年天津三源電力集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 2025年上半年浙江嘉興桐鄉(xiāng)市水務(wù)集團(tuán)限公司招聘10人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年腹腔穿刺術(shù)課件 (1)2
- (八省聯(lián)考)2025年高考綜合改革適應(yīng)性演練 物理試卷合集(含答案逐題解析)
- 2024年干式電力電容器項(xiàng)目可行性研究報(bào)告
- 河南12系列建筑設(shè)計(jì)圖集一(12YJ1)
- 2025年度智能倉儲管理系統(tǒng)軟件開發(fā)合同6篇
評論
0/150
提交評論