版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1課程介紹
一、課本說(shuō)明
二、課程要求
1、課堂
2、上機(jī)
3、作業(yè)
4、參考書(shū)
5、考試
三、學(xué)習(xí)目的1、徐金吾等《TurboC使用大全》北京科海培訓(xùn)中心19902、《C高級(jí)實(shí)用程序設(shè)計(jì)》王士元編著清華大學(xué)出版社19953、《C陷阱及缺陷》AndrewKoenig著高巍譯人民郵電出版社4、《C程序設(shè)計(jì)教程》(美)H.M.Deitel,P.J.Deitel著薛萬(wàn)鵬等譯機(jī)械工業(yè)出版社5、《C語(yǔ)言上機(jī)實(shí)踐指導(dǎo)與水平測(cè)試》(美)EricRoberts著翁惠玉張冬茉等譯機(jī)械工業(yè)出版社平時(shí)作業(yè)和實(shí)驗(yàn)報(bào)告占20%,期中上機(jī)考試占10%,期末考試成績(jī)占70%,總成績(jī)滿分100分,60分即可獲得該課程學(xué)分即2學(xué)分。1、觸類旁通2、掌握編程思想3、良好的程序設(shè)計(jì)風(fēng)格4、解決實(shí)際問(wèn)題5、熟悉上機(jī)環(huán)境2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院2
注:提交作業(yè)方式
四、復(fù)習(xí)計(jì)算機(jī)系統(tǒng)
1、包括:硬件和軟件
2、硬件和軟件共同完成以下4個(gè)主要操作:輸入
處理
輸出
存儲(chǔ)
數(shù)據(jù)進(jìn)入計(jì)算機(jī)系統(tǒng)。組織數(shù)據(jù)、檢查數(shù)據(jù)的正確性、數(shù)據(jù)的運(yùn)算。數(shù)據(jù)處理后,結(jié)果要傳遞給人,以便觀察、解釋和使用。常需要把輸出信息存儲(chǔ)在存儲(chǔ)設(shè)備2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院3
五、計(jì)算機(jī)編程語(yǔ)言語(yǔ)言有管理其單詞使用和標(biāo)點(diǎn)符號(hào)的規(guī)則——語(yǔ)法,除此還有語(yǔ)義。VisualBasic、Pascal、COBOL、C#、C++、Java、Fortran、C等
六、如何學(xué)好C語(yǔ)言——理論+實(shí)踐1、認(rèn)真體會(huì)所有概念(如運(yùn)算符和運(yùn)算順序),并注意前后反復(fù)和貫穿。2、學(xué)好C語(yǔ)言的三種程序控制結(jié)構(gòu)+模塊化。3、掌握一些簡(jiǎn)單的算法4、讀程序:看經(jīng)典案例,善于閱讀和分析程序;及別人交流5、多實(shí)踐:上機(jī)前想好解題思路,寫(xiě)好算法;上機(jī)過(guò)程中,讀懂出錯(cuò)信息,總結(jié)經(jīng)驗(yàn)6、提高學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法方面的內(nèi)容(其它課程)2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院4七、為什么要學(xué)習(xí)程序設(shè)計(jì)
計(jì)算機(jī)的本質(zhì)是“程序的機(jī)器”,只有懂得程序設(shè)計(jì),才能進(jìn)一步懂得計(jì)算機(jī),真正了解計(jì)算機(jī)是怎樣工作的,掌握用計(jì)算機(jī)處理問(wèn)題的方法;培養(yǎng)分析問(wèn)題和解決問(wèn)題的能力。即使將來(lái)不是計(jì)算機(jī)專業(yè)人員,由于學(xué)過(guò)程序設(shè)計(jì)理解軟件生產(chǎn)的特點(diǎn)和生產(chǎn)過(guò)程,就能及程序開(kāi)發(fā)人員個(gè)更好的溝通與合作,開(kāi)展本領(lǐng)域中的計(jì)算機(jī)應(yīng)用,開(kāi)發(fā)與本領(lǐng)域有關(guān)的應(yīng)用程序。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院5八、為什么選擇C語(yǔ)言
進(jìn)行程序設(shè)計(jì),必須用一種計(jì)算機(jī)語(yǔ)言作為工具,否則只是紙上談兵。可選擇的語(yǔ)言很多,各有特點(diǎn)和應(yīng)用領(lǐng)域。而C語(yǔ)言的代碼量?。和瑯庸δ艿能浖肅語(yǔ)言編寫(xiě)容量很小。Wps及office,界面功能基本類似,但是wps只有23.3M,但是微軟office就有千兆左右。Wps的內(nèi)核代碼就是用C語(yǔ)言寫(xiě)的。以及我們的主板驅(qū)動(dòng)、顯卡驅(qū)動(dòng)、攝像頭驅(qū)動(dòng)等都是用c語(yǔ)言。以及數(shù)據(jù)庫(kù)DB2,oracle等都是用c語(yǔ)言和c++來(lái)寫(xiě)的。ACDSee、photoshop、2D(cs)、3D游戲等應(yīng)用軟件也是用C語(yǔ)言來(lái)編寫(xiě)的。速度快:windows內(nèi)核是c語(yǔ)言外核是c++、unix和linux都是用c語(yǔ)言編寫(xiě)的。功能強(qiáng)大:c語(yǔ)言可訪問(wèn)我們的硬件,c語(yǔ)言中有指針可訪問(wèn)我們的內(nèi)存等硬件。
C++是為處理大規(guī)模的程序開(kāi)發(fā)而研制的大型語(yǔ)言,比C語(yǔ)言復(fù)雜難學(xué)。C語(yǔ)言是更為基本的,最基礎(chǔ)的。在它基礎(chǔ)上學(xué)習(xí)java和c#更容易。C語(yǔ)言是當(dāng)前程序員共同的語(yǔ)言。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院6參考書(shū)1、《零基礎(chǔ)學(xué)C語(yǔ)言》,康莉編,機(jī)械工業(yè)出版社。本書(shū)詳細(xì)而透徹地講述了C語(yǔ)言各個(gè)語(yǔ)句的語(yǔ)法規(guī)則,通過(guò)典型的簡(jiǎn)單的例題,將初學(xué)者引入C語(yǔ)言的編程世界。2、《C語(yǔ)言程序(第四版)學(xué)習(xí)指導(dǎo)》,譚浩強(qiáng)編,清華大學(xué)出版社。及《C程序設(shè)計(jì)(第四版)》教材配套的上機(jī)指導(dǎo)。3、《TurboC實(shí)用大全》,徐金梧楊德斌徐科編寫(xiě),機(jī)械工業(yè)出版社。此書(shū)詳細(xì)介紹了C語(yǔ)言庫(kù)函數(shù),是一本適合已掌握C語(yǔ)言基礎(chǔ)之后使用的參考書(shū)。4、《C語(yǔ)言常用算法與子程序》,尹彥芝編著,清華大學(xué)出版社。是一本較系統(tǒng)地提供C語(yǔ)言算法,提供各種C語(yǔ)言常用程序的書(shū)籍,凡是用C語(yǔ)言編寫(xiě)程序的人,相信都會(huì)從這本書(shū)中得到啟發(fā)。5、《C語(yǔ)言程序設(shè)計(jì)習(xí)題集(第二版)》,陳朔鷹陳英主編,人民郵電出版社。匯集近千道不同難度、不同層次、不同類型的習(xí)題,簡(jiǎn)單的題目適合初學(xué)者進(jìn)階和進(jìn)行基本概念自測(cè),復(fù)雜的題目足可以讓你研究上十幾天,使讀者能真正感受到暢游C語(yǔ)言世界的樂(lè)趣。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院7教材、參考書(shū)6、《C語(yǔ)言趣味程序百例精解》,陳朔鷹陳英主編,北京理工大學(xué)出版社。匯集100道從易到難的趣味編程題目,可以通過(guò)對(duì)這些問(wèn)題的求解過(guò)程,進(jìn)一步掌握程序設(shè)計(jì)的基本方法和解題思路。7、《C語(yǔ)言程序設(shè)計(jì)輔導(dǎo)及習(xí)題集》,田淑清等,中國(guó)鐵道出版社。一本典型的與全國(guó)計(jì)算機(jī)等級(jí)考試題型類似的習(xí)題集。整本書(shū)的習(xí)題難易適中。也適合于C語(yǔ)言程序設(shè)計(jì)的進(jìn)階學(xué)習(xí)。
8、《C語(yǔ)言編程常見(jiàn)問(wèn)題解答》,[美]PaulS.R.Chishohm等著,張芳妮呂波譯,清華大學(xué)出版社。是一本以問(wèn)答方式書(shū)寫(xiě)的參考書(shū),在按照章節(jié)回答問(wèn)題的過(guò)程中,讀者可以明確清楚地體會(huì)到C語(yǔ)言的精髓。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院8教材、參考書(shū)9、《TheCProgrammingLanguage》,byBrianW.KernighanandDennisM.Ritchie.,PubilishedbyPrentice-Hallin1988。著名的原版C語(yǔ)言教材,讀者如果有時(shí)間的話可以讀讀它,來(lái)感受感受世界著名的教材的風(fēng)范。10、《全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)教程(C語(yǔ)言程序設(shè)計(jì))》教育部考試中心編,高等教育出版社。課程要求:課前請(qǐng)做好預(yù)習(xí)保持課堂安靜,頭腦清醒,思維活躍認(rèn)真、獨(dú)立、按時(shí)完成并提交作業(yè)重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院9學(xué)習(xí)網(wǎng)站(1)
清華大學(xué)《計(jì)算機(jī)語(yǔ)言及程序設(shè)計(jì)》(2)
浙江大學(xué)《C程序設(shè)計(jì)基礎(chǔ)及實(shí)驗(yàn)》
(3)
C語(yǔ)言寶典,(4)
TurboC編程寶典,/~junl/learning/TC(5)
二級(jí)C語(yǔ)言,(6)
C語(yǔ)言教程,(7)
唯C世界,(8)
C語(yǔ)言編程網(wǎng),(9)
C語(yǔ)言編程寶典,(10)C語(yǔ)言程序基礎(chǔ),(11)鵬程C語(yǔ)言教學(xué)網(wǎng)站,(12)經(jīng)典C,
(13)C語(yǔ)言編程電子書(shū),C程序設(shè)計(jì)(第四版)
譚浩強(qiáng)著云南師范大學(xué)數(shù)學(xué)學(xué)院102024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院11目錄程序設(shè)計(jì)和C語(yǔ)言算法——程序的靈魂最簡(jiǎn)單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)利用數(shù)組處理批量數(shù)據(jù)利用函數(shù)實(shí)現(xiàn)模塊化程序設(shè)計(jì)善于利用指針用戶自己建立數(shù)據(jù)類型對(duì)文件的輸入輸出常見(jiàn)錯(cuò)誤分析2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院12第一章程序設(shè)計(jì)和C語(yǔ)言2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院13
本章要點(diǎn)什么是計(jì)算機(jī)程序什么是計(jì)算機(jī)語(yǔ)言C語(yǔ)言的發(fā)展及其特點(diǎn)運(yùn)行C程序的步驟及方法最簡(jiǎn)單的C語(yǔ)言程序程序設(shè)計(jì)的任務(wù)2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院141、什么是計(jì)算機(jī)程序
計(jì)算機(jī)是萬(wàn)能的嗎?---計(jì)算機(jī)的每一個(gè)操作都是根據(jù)人們事先指定的指令進(jìn)行的。為了使計(jì)算機(jī)執(zhí)行一系列的操作,必須事先編好一條條指令,輸入到計(jì)算機(jī)。
程序:就是一組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令。每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。為了使計(jì)算機(jī)系統(tǒng)能實(shí)現(xiàn)各種功能,需要成千上萬(wàn)個(gè)程序。
總之,計(jì)算機(jī)的一切操作都是由程序控制的,離開(kāi)程序計(jì)算機(jī)將一事無(wú)成。所以,計(jì)算機(jī)的本質(zhì)是程序的機(jī)器,只有懂得程序設(shè)計(jì),才能真正了解計(jì)算機(jī)是怎樣工作的,才能更深入的使用計(jì)算機(jī)。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院152、什么是計(jì)算機(jī)語(yǔ)言
計(jì)算機(jī)能識(shí)別的語(yǔ)言,就是計(jì)算機(jī)語(yǔ)言。發(fā)展階段:機(jī)器語(yǔ)言--匯編語(yǔ)言—高級(jí)語(yǔ)言計(jì)算機(jī)是不能直接識(shí)別高級(jí)語(yǔ)言編寫(xiě)的程序,要進(jìn)行“翻譯”。用一種稱為編譯程序的軟件把高級(jí)語(yǔ)言寫(xiě)的程序(稱為源程序)轉(zhuǎn)換為機(jī)器指令的程序(稱為目標(biāo)程序),然后讓計(jì)算機(jī)執(zhí)行機(jī)器指令程序,最后得到結(jié)果2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院16#include<stdio.h>intmain()//一個(gè)簡(jiǎn)單的C語(yǔ)言程序{printf("ThisisaCprogram.\n");return0;}高級(jí)語(yǔ)言源程序機(jī)器語(yǔ)言目標(biāo)程序程序執(zhí)行結(jié)果編譯程序運(yùn)行程序2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院173.C語(yǔ)言發(fā)展及其特點(diǎn)C語(yǔ)言是國(guó)際上廣泛流行的高級(jí)語(yǔ)言。C語(yǔ)言是在B語(yǔ)言的基礎(chǔ)上發(fā)展起來(lái)的。B(BCPL)語(yǔ)言是1970年由美國(guó)貝爾實(shí)驗(yàn)室設(shè)計(jì)的,并用于編寫(xiě)了第一個(gè)UNIX操作系統(tǒng),在PDP7上實(shí)現(xiàn)。優(yōu)點(diǎn):精練,接近硬件,缺點(diǎn):過(guò)于簡(jiǎn)單,數(shù)據(jù)無(wú)類型。1973年貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語(yǔ)言的基礎(chǔ)上設(shè)計(jì)出了C語(yǔ)言,對(duì)B取長(zhǎng)補(bǔ)短,并用之改寫(xiě)了原來(lái)用匯編編寫(xiě)的UNIX,(即UNIX第5版),但僅在貝爾實(shí)驗(yàn)室使用。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院18C語(yǔ)言出現(xiàn)的歷史背景1975年UNIX第6版發(fā)布,C優(yōu)點(diǎn)突出引起關(guān)注。1977年出現(xiàn)了《可移植C語(yǔ)言編譯程序》,推動(dòng)了UNIX在各種機(jī)器上實(shí)現(xiàn),C語(yǔ)言也得到推廣,其發(fā)展相輔相成。1978年影響深遠(yuǎn)的名著《TheCProgrammingLanguage》由BrianW.Kernighan和DennisM.Ritchie合著,被稱為標(biāo)準(zhǔn)C。之后,C語(yǔ)言先后移植到大、中、小、微型計(jì)算機(jī)上,已獨(dú)立于UNIX和PDP,風(fēng)靡世界,成為最廣泛的幾種計(jì)算機(jī)語(yǔ)言之一。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院19C語(yǔ)言出現(xiàn)的歷史背景1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語(yǔ)言各種版本對(duì)C的發(fā)展和擴(kuò)充,制定了新的標(biāo)準(zhǔn)ANSIC,比標(biāo)準(zhǔn)C有了很大的發(fā)展。1988年K&R按照ANSIC修改了他們的《TheCProgrammingLanguage》。1989年,ANSI公布了一個(gè)完整的c語(yǔ)言標(biāo)準(zhǔn)——ANSIC或C89。1990年,國(guó)際標(biāo)準(zhǔn)化組織接受了C89為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)。1995年,ISO又修訂了C語(yǔ)言標(biāo)準(zhǔn)。1999年,ISO有對(duì)C語(yǔ)言標(biāo)準(zhǔn)進(jìn)行修訂在基本保留原來(lái)的c語(yǔ)言特征的基礎(chǔ)上,針對(duì)應(yīng)用的需要又增加一些功能。命名ISO/IEC9899:19992001和2004年先后進(jìn)行兩次技術(shù)修正(TC1、TC2)ISO/IEC9899:1999及其技術(shù)修正被稱為C99。講課依據(jù)c99標(biāo)準(zhǔn)。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院20說(shuō)明:不同版本的C編譯系統(tǒng)所實(shí)現(xiàn)的語(yǔ)言功能和語(yǔ)法規(guī)則又略有差別,因此我們應(yīng)了解所用的C語(yǔ)言編譯系統(tǒng)的特點(diǎn)(可以參閱網(wǎng)上相關(guān)資料)。我們使用的是二級(jí)語(yǔ)言考試的編譯程序VisiuaC++6.0.2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院21C語(yǔ)言的特點(diǎn)(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。37個(gè)關(guān)鍵字、9種控制語(yǔ)句,程序形式自由,主要用小寫(xiě)字母表示,壓縮而一切不必要的成分。(2)運(yùn)算符豐富。34種運(yùn)算符,把括號(hào)、復(fù)制和強(qiáng)制類型轉(zhuǎn)化等都作為運(yùn)算符處理,從而使C語(yǔ)言的運(yùn)算類型機(jī)極其豐富,表達(dá)式類型多樣化,靈活使用各種運(yùn)算符。(3)數(shù)據(jù)類型豐富,具有現(xiàn)代語(yǔ)言的各種數(shù)據(jù)結(jié)構(gòu)。整型、浮點(diǎn)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型和共用體類型,C99擴(kuò)充了復(fù)數(shù)浮點(diǎn)類型、超長(zhǎng)整型和布爾類型。(4)具有結(jié)構(gòu)化的控制語(yǔ)句,是完全模塊化和結(jié)構(gòu)化的語(yǔ)言。(5)語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。例如對(duì)數(shù)組越界不進(jìn)行檢查,由程序編寫(xiě)者自己保證程序的正確,對(duì)變量的類型使用比較靈活。c語(yǔ)言允許程序編寫(xiě)者有較大的自由度,放寬了語(yǔ)法檢查。一般的高級(jí)語(yǔ)言語(yǔ)法檢查比較嚴(yán)。
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院2237個(gè)關(guān)鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifinlineintlongregisterrestrictreturnshortsignedsizeofstaicstructswitchtypedefunionunsignedvoidvolatilewhile_bool_Complex_Imaginary
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院23C語(yǔ)言的特點(diǎn)(6)允許直接訪問(wèn)物理地址,能進(jìn)行位操作,能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可直接對(duì)硬件進(jìn)行操作。兼有高級(jí)和低級(jí)語(yǔ)言的特點(diǎn)。既是成功的系統(tǒng)描述語(yǔ)言,有時(shí)通用的程序設(shè)計(jì)語(yǔ)言。(7)目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比匯編程序生成的目標(biāo)代碼效率低10%-20%。(8)程序可移植性好(及匯編語(yǔ)言比)。基本上不做修改就能用于各種型號(hào)的計(jì)算機(jī)和各種操作系統(tǒng)。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院24
1.4簡(jiǎn)單的C語(yǔ)言程序#include<stdio.h>void
main(){
printf("ThisisaCprogram.\n");}//文件包含/*主函數(shù)*///函數(shù)體開(kāi)始//輸出語(yǔ)句//函數(shù)體結(jié)束說(shuō)明:main-主函數(shù)名,void-函數(shù)類型每個(gè)C程序必須有一個(gè)主函數(shù)main{}是函數(shù)開(kāi)始和結(jié)束的標(biāo)志,不可省每個(gè)C語(yǔ)句以分號(hào)結(jié)束使用標(biāo)準(zhǔn)庫(kù)函數(shù)時(shí)應(yīng)在程序開(kāi)頭一行寫(xiě):
#include<stdio.h>說(shuō)明:
本程序的作用是輸出一行信息:ThisisaCprogram.2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院25例1.2求兩數(shù)之和
#include<stdio.h>
voidmain()//求兩數(shù)之和
{
inta,b,sum;//聲明,定義變量為整型
/*以下3行為C語(yǔ)句*/
a=123;b=456;
sum=a+b;
printf(″sumis%d\n″,sum);
}說(shuō)明:
//……及/*……*/表示注釋。注釋只是給人看的,對(duì)編譯和運(yùn)行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨(dú)成為一行。說(shuō)明:
輸出一行信息:sumis5792024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院26例1.3求2個(gè)數(shù)中較大者。
#include<stdio.h>
voidmain()//主函數(shù)
{
intmax(intx,inty);//對(duì)被調(diào)用函數(shù)max的聲明
inta,b,c;//定義變量a、b、c
scanf(″%d,%d″,&a,&b);//輸入變量a和b的值
c=max(a,b);//調(diào)用max函數(shù),將得到的值賦給c
printf(″max=%d\n″,c);//輸出c的值
}程序運(yùn)行情況如下:8,5↙(輸入8和5賦給a和b)max=8(輸出c的值)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}max(int
x,
int
y)
max(a,b);
說(shuō)明:本程序包括main和被調(diào)用函數(shù)max兩個(gè)函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語(yǔ)句將z的值返回給主調(diào)函數(shù)main。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院27C程序:(1)C程序是由函數(shù)構(gòu)成的。這使得程序容易實(shí)現(xiàn)模塊化。
(2)一個(gè)函數(shù)由兩部分組成:
函數(shù)的首部:例1.3中的max函數(shù)首部
intmax(intx,inty)
函數(shù)體:花括號(hào)內(nèi)的部分。若一個(gè)函數(shù)有多個(gè)花括號(hào),則最外層的一對(duì)花括號(hào)為函數(shù)體的范圍。函數(shù)體包括兩部分:聲明部分:inta,b,c;可缺省執(zhí)行部分:由若干個(gè)語(yǔ)句組成。可缺省2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院28注意:函數(shù)的聲明部分和執(zhí)行部分都可缺省,例如:voiddump(){}
這是一個(gè)空函數(shù),什么也不做,但是合法的函數(shù)。
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院29小結(jié):(3)C程序總是從main函數(shù)開(kāi)始執(zhí)行的,及main函數(shù)的位置無(wú)關(guān)。(4)C程序書(shū)寫(xiě)格式自由,一行內(nèi)可以寫(xiě)幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以分寫(xiě)在多行上,C程序沒(méi)有行號(hào)。(5)每個(gè)語(yǔ)句和數(shù)據(jù)聲明的最后必須有一個(gè)分號(hào)。分號(hào)是C語(yǔ)句的必要組成部分。即使是程序中最后一個(gè)語(yǔ)句也應(yīng)包含分號(hào)。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院30小結(jié):(6)C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。輸入和輸出的操作是由庫(kù)函數(shù)scanf和printf等函數(shù)來(lái)完成的。C對(duì)輸入輸出實(shí)行“函數(shù)化”。(7)可以用/*……*/或//……對(duì)C程序中的任何一行或數(shù)行做注釋。一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院311.5運(yùn)行C程序的步驟和方法1.5.1運(yùn)行C程序的步驟上機(jī)輸入及編輯源程序?qū)υ闯绦蜻M(jìn)行編譯與庫(kù)函數(shù)連接運(yùn)行目標(biāo)程序2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院321.5運(yùn)行C程序的步驟和方法
上機(jī)運(yùn)行C程序的方法目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的??梢杂貌煌木幾g系統(tǒng)對(duì)C程序進(jìn)行操作常用的有TurboC2.0、TurboC++3.0、VisualC++6.0等前一段時(shí)間,TurboC2.0用得比較多,但TurboC2.0是用于DOS環(huán)境的,不能用鼠標(biāo)進(jìn)行操作,很不方便,所以今年來(lái)不少人改為用TurboC++3.0或VisualC++6.0對(duì)C程序進(jìn)行編譯
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院33例:VC++6.0的使用1.安裝VC++6.0和進(jìn)入VC++6.0集成環(huán)境
(1)VisualC++6.0適用于Windows環(huán)境。首先在所用的計(jì)算機(jī)上安裝VisualC++6.0系統(tǒng)。安裝完后,雙擊VisualC++6.0圖標(biāo),就能進(jìn)入VC++6.0集成環(huán)境。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院34(2)在VC++主窗口的頂部是VC++的主菜單欄。其中包含9個(gè)項(xiàng)∶FileEditViewInsertProjectBuildToolswindowsHelp;主窗口的左側(cè)是項(xiàng)目工作區(qū)窗口(用來(lái)顯示所設(shè)定的工作區(qū)的信息),右側(cè)是程序編輯窗口(用來(lái)輸入和編輯源程序)。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院352.輸入和編輯源程序(1)新建一個(gè)源程序
①在VC++主窗口的主菜單欄中選擇“File”
,然后選擇“New”
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院36單擊屏幕上出現(xiàn)的“New”對(duì)話框上方的“Files”,在其下拉菜單中選擇“C++SourceFile”項(xiàng);然后在對(duì)話框右半“Location”文本框中輸入準(zhǔn)備編輯的源程序文件的存儲(chǔ)路徑(假定為D:\cc);在其上方的File(文件)文本框中輸入準(zhǔn)備編輯的源程序文件的名字(輸入c1-1.c)。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院37②輸入和編輯源程序單擊“OK”
按鈕后,回到VC++主窗口程序,編輯窗口已激活,即可輸入和編輯源程序。在輸入過(guò)程中如發(fā)現(xiàn)有錯(cuò)誤,可以利用全屏幕編輯方法進(jìn)行修改編輯。
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院38③源程序的保存檢查無(wú)誤后,在主菜單欄中選擇“File”(文件),并在其下拉菜單中選擇“Save”(保存)項(xiàng)
說(shuō)明:
VC++6.0可以編譯后綴為.c的C源程序,也可以編譯后綴為.cpp的C++源程序。
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院39
(2)打開(kāi)一個(gè)已有的程序
①在“我的電腦”中按路徑找到已有的C程序名;
②雙擊此文件名,則進(jìn)入了VC++集成環(huán)境,并打開(kāi)了該文件,程序已顯示在編輯窗口中;
③修改后選擇“File”(文件)→“Save”(保存),保存在原來(lái)的文件中;
(3)通過(guò)已有的程序建立一個(gè)新程序
①打開(kāi)任何一個(gè)已有的源文件2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院403.程序的編譯單擊主菜單欄中的“Build”,在其下拉菜單中選擇“Compliec1-1.c”項(xiàng)。
在單擊編譯命令后,屏幕上出現(xiàn)一個(gè)是否同意建立一個(gè)默認(rèn)的項(xiàng)目工作區(qū)的對(duì)話框單擊“Yes”(是)按鈕后開(kāi)始編譯。也可以不用選擇菜單的方法,而用“Ctrl+F7”來(lái)完成編譯。編譯完成后,調(diào)試窗口出現(xiàn)編譯信息,如果無(wú)錯(cuò)生成目標(biāo)文件c1-1.obj,否則指出錯(cuò)誤位置和性質(zhì)。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院414.程序的連接
生成目標(biāo)文件后,把程序和系統(tǒng)提供的資源(如函數(shù)據(jù)庫(kù)、頭文件)建立連接。選擇“Build”→“Buildtest.exe”
。
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院42執(zhí)行連接后,在調(diào)試輸出窗口中顯示連接時(shí)的信息,生成可執(zhí)行文件c1-1.exe。說(shuō)明:
選擇菜“Build”→“Build”(
或按“F7”鍵)一次完成編譯及連接。但提倡初學(xué)者分步進(jìn)行編譯和鏈接,因?yàn)槌绦虺鲥e(cuò)的機(jī)會(huì)較多,最好等到上一步完全正確后才進(jìn)行下一步2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院435程序的執(zhí)行執(zhí)行c1-1.exe文件,選擇“Build”→“!Executec1-1.exe”2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院44程序執(zhí)行后,屏幕切換到輸出結(jié)果的窗口,顯示輸出結(jié)果。第1行:程序的輸出第2行:是VC++在輸出完運(yùn)行結(jié)果后由VC++6.0系統(tǒng)自動(dòng)加上的一行信息,通知用戶∶“按任何一鍵以便繼續(xù)”。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院45運(yùn)行一個(gè)C語(yǔ)言程序的一般過(guò)程:(1)啟動(dòng)VC++,進(jìn)入VC++集成環(huán)境。(2)編輯(或修改)源程序。
(3)保存文件(3)編譯、連接、運(yùn)行。如果有錯(cuò),則修改源程序,再重新編譯、連接和運(yùn)行,直至程序正確。(4)退出VC++集成環(huán)境,結(jié)束本次程序運(yùn)行。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院461.6程序設(shè)計(jì)的任務(wù)問(wèn)題分析設(shè)計(jì)算法編寫(xiě)程序?qū)υ闯绦蜻M(jìn)行編輯、編譯和連接運(yùn)行程序,分析結(jié)果(調(diào)試、測(cè)試)編寫(xiě)程序文檔第二章算法--程序的靈魂47
主要內(nèi)容2.1算法的概念2.2簡(jiǎn)單算法舉例2.3算法的特性2.4怎樣表示一個(gè)算法2.5結(jié)構(gòu)化程序設(shè)計(jì)方法482024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院49一個(gè)程序應(yīng)包括兩個(gè)方面的內(nèi)容:對(duì)數(shù)據(jù)的描述即在程序中指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式:數(shù)據(jù)結(jié)構(gòu)(datastructure)對(duì)操作的描述即操作步驟:算法(algorithm)著名計(jì)算機(jī)科學(xué)家沃思提出一個(gè)公式:
數(shù)據(jù)結(jié)構(gòu)+算法=程序
數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語(yǔ)言工具完整的程序設(shè)計(jì)應(yīng)該是:2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院502.1什么是算法
廣義地說(shuō),為解決一個(gè)問(wèn)題而采取的方法和步驟,就稱為“算法”。方法1:1+2,+3,+4,一直加到100加99次方法2:100+(1+99)+(2+98)+…+(49+51)+50=100+49×100+50加51次對(duì)同一個(gè)問(wèn)題,可有不同的解題方法和步驟例:求2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院51§2.1算法的概念
為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法。希望方法簡(jiǎn)單,運(yùn)算步驟少。計(jì)算機(jī)算法可分為兩大類別:數(shù)值運(yùn)算算法:求數(shù)值解,例如求方程的根、求函數(shù)的定積分等。非數(shù)值運(yùn)算:包括的面十分廣泛,最常見(jiàn)的是用于事務(wù)管理領(lǐng)域,例如圖書(shū)檢索、人事管理、行車調(diào)度管理等。計(jì)算機(jī)算法分為數(shù)值運(yùn)算算法、非數(shù)值運(yùn)算算法2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院522.2簡(jiǎn)單算法舉例例2.1:求1×2×3×4×5步驟1:先求1×2,得到結(jié)果2步驟2:將步驟1得到的乘積2再乘以3,得到結(jié)果6步驟3:將6再乘以4,得24步驟4:將24再乘以5,得120太繁瑣如果要求1×2×…×1000,則要寫(xiě)999個(gè)步驟2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院532.2簡(jiǎn)單算法舉例例2.1求12345=5!Step1:1pStep2:2iStep3:pipStep4:i+1iStep5:若i<=5,返回Step3;否則,結(jié)束。求1357911Step1:1pStep2:3iStep3:pipStep4:i+2iStep5:若i<=11,返回Step3;否則,結(jié)束。關(guān)鍵:抽象、提煉出解決問(wèn)題的一般步驟1.記錄每一步的結(jié)果及最終結(jié)果(p)每一步處理的數(shù)據(jù)(i)2.初始狀態(tài)及動(dòng)態(tài)過(guò)程算法具有一般性、通用性和靈活性便于執(zhí)行循環(huán)等操作2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院542.2簡(jiǎn)單算法舉例例2.2有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者的學(xué)號(hào)和成績(jī)打印出來(lái)。第i個(gè)學(xué)生的學(xué)號(hào)為ni,成績(jī)?yōu)間i。Step1:1iStep2:若gi>=80,則打印ni和gi;否則不打印。Step3:i+1iStep4:若i<=50,返回Step2;否則,結(jié)束。
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院552.2簡(jiǎn)單算法舉例例2.3判定2000—2500年中的每一年是否閏年,將結(jié)果輸出閏年的條件:
能被4整除但不能被100整除的年份是閏年;能被400整除的年份是閏年。設(shè)year為被檢測(cè)的年份,算法如下:S1:2000yS2:若year不能被4整除,則輸出year“不是閏年”,然后轉(zhuǎn)到S6S3:若year能被4整除,不能被100整除,則輸出year“是閏年”,然后轉(zhuǎn)到S6S4:若year能被400整除,則輸出year“是閏年”,然后轉(zhuǎn)到S6S5:輸出year“不是閏年”S6:year+1yearS7:若year<=2500,返回S2繼續(xù)執(zhí)行;否則,結(jié)束。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院562.2簡(jiǎn)單算法舉例例2.4求算法如下:S1:sign=1S2:sum=1S3:deno=2S4:sign=(1)×signS5:term=sign×(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno<=100返回S4;否則算法結(jié)束。……2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院572.2簡(jiǎn)單算法舉例例2.4對(duì)于一個(gè)大于或等于3的正整數(shù),判斷是否為素?cái)?shù)算法如下:S1:輸入n的值S2:i=2(i作為除數(shù))S3:n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,打印n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1iS6:若i<=n1返回S3;否則打印n“是素?cái)?shù)”,然后結(jié)束。S6步驟可改為:S6:若i<=返回S3;否則打印n“是素?cái)?shù)”,然后結(jié)束。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院582.3算法的特性1.有窮性(要考慮合理的范圍內(nèi))2.確定性3.有零個(gè)或多個(gè)輸入4.有一個(gè)或多個(gè)輸出5.有效性2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院592.4怎樣表示一個(gè)算法自然語(yǔ)言傳統(tǒng)流程圖結(jié)構(gòu)化流程圖偽代碼2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院602.4.2用流程圖表示算法常用的流程圖符號(hào)起止框輸入輸出框判斷框處理框流程線連接點(diǎn)注釋框X>=0?打印x打印–xYN
2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院612.4.2用流程圖表示算法例2.6將例2.1求5!的算法用流程圖表示如下。開(kāi)始1t2ititi+1ii>5?打印t結(jié)束NY2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院622.4.2用流程圖表示算法例2.7將例2.2的算法用流程圖表示如下。開(kāi)始1ii+1igi
80?打印ni,gi結(jié)束Ni>50?YNY2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院632.4.2用流程圖表示算法例2.8將例2.3的算法用流程圖表示如下。開(kāi)始2000yy+1yy不能被4整除打印y“是閏年”結(jié)束Y>2500?y不能被100整除y不能被400整除打印y“不是閏年”打印y“是閏年”打印y“不是閏年”YYNNYNYN2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院642.4.2用流程圖表示算法例2.10將例2.5的算法用流程圖表示如下。i>
?開(kāi)始i+1ir=0?打印n“是素?cái)?shù)”結(jié)束2in/i的余數(shù)
r打印n“不是素?cái)?shù)”YNNY輸入n2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院652.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖1.傳統(tǒng)流程圖的弊端
BS型算法:aBowlofSpaghetti.例圖2.13。2.三種基本結(jié)構(gòu)(1966年,Bohra&Jacopini)(1)順序結(jié)構(gòu)(2)選擇結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)
ABabABbp成立不成立Abp成立不成立aaAbp成立不成立aAbp不成立成立a當(dāng)型While型直到型Until型2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院662.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖(3)循環(huán)結(jié)構(gòu)
Abp成立不成立a當(dāng)型While型Abp不成立成立a直到型Until型0xx<5x+1x打印x值0xx>=5x+1
x打印x值NYNY2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院672.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖三種基本結(jié)構(gòu)的共同特點(diǎn):(1)只有一個(gè)入口(2)只有一個(gè)出口(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”ABabABbp成立不成立Abp成立不成立aaAB死循環(huán)三種基本結(jié)構(gòu)可解決任何復(fù)雜的問(wèn)題2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院682.4.4用N-S流程圖表示算法N-S(I.Nassi&B.Shneiderman)流程圖的基本符號(hào)其中A或B框可以是簡(jiǎn)單操作,也可以是三種結(jié)構(gòu)之一ABA當(dāng)p1成立A直到p1成立ABp成立不成立順序結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)p(1+r)p當(dāng)n<=10r=0.08P>=100成立不成立r=0.06AB2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院692.4.4用N-S流程圖表示算法例2.111t2ititi+1i直到i>5打印t例2.121i打印ni,gii+1i直到i>50gi
80是否2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院702.4.4用N-S流程圖表示算法2000y
y/4的余數(shù)為0y/100的余數(shù)
不為0
是否打印y“是閏年”y/400的余數(shù)為0打印y“是閏年”打印y“不是閏年”打印y“非閏年”y+1y直到y(tǒng)>2500是否是否例2.132024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院712.4.4用N-S流程圖表示算法例2.15開(kāi)始i+1ir=0?打印n“是素?cái)?shù)”結(jié)束2in/i的余數(shù)
ri>
?打印n“不是素?cái)?shù)”YNNY輸入n開(kāi)始i+1ir=0?
輸出n“是素?cái)?shù)”結(jié)束0w
2in/i的余數(shù)
ri
和
w=0YNYN輸入n1ww=0
輸出n“不是素?cái)?shù)”YN2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院722.4.4用N-S流程圖表示算法例2.15開(kāi)始i+1ir=0?
輸出n“是素?cái)?shù)”結(jié)束0w
2in/i的余數(shù)
ri
和
w=0YNYN輸入n1ww=0
輸出n“不是素?cái)?shù)”YN輸出n“是素?cái)?shù)”1w輸入n0ww=02in/i的余數(shù)
rr=0是否i+1i直到i>或w0輸出n“不是素?cái)?shù)”是否2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院732.4.5用偽代碼表示算法2.4.6用計(jì)算機(jī)語(yǔ)言表示算法#include<stdio.h>intmain(){inti,t;t=1;i=2;while(i<=5){t=t*i;i=i+1;}printf("%d",t);return0;}#include<stdio.h>intmain(){intsign=1;doubledeno=2.0,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}printf("%f",sum);return0;}2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院742.5結(jié)構(gòu)化程序設(shè)計(jì)方法(1)自頂向下;(2)逐步細(xì)化(3)模塊化設(shè)計(jì);(4)結(jié)構(gòu)化編碼工作報(bào)告當(dāng)前問(wèn)題前一階段工作對(duì)策工廠概況………………………………………………………………頂層設(shè)計(jì)第二層設(shè)計(jì)第三層設(shè)計(jì)2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院75第3章最簡(jiǎn)單的C程序設(shè)計(jì)
——順序程序設(shè)計(jì)3.1順序程序設(shè)計(jì)舉例P37_383.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算3.2.1常量和變量1.常量在程序運(yùn)行過(guò)程中,其值不能被改變的量。(1)整型常量(2)實(shí)型常量(3)字符常量(4)字符串常量(5)符號(hào)常量2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院761.常量(1)整型常量十進(jìn)制整數(shù)。八進(jìn)制整數(shù)。以0開(kāi)頭。如0123、–011。十六進(jìn)制整數(shù)。以0x開(kāi)頭。如0x123、–0x12。(2)實(shí)型常量十進(jìn)制小數(shù)形式指數(shù)形式形式:12.34e3、-1.23E-72024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院771.常量(3)字符常量普通字符,用單撇號(hào)括起來(lái)的字符。如'a','D','1','','$'。此為源程序級(jí)的表示,例如c='a';若在計(jì)算機(jī)中表示,則為其ASCII碼的二進(jìn)制。注意ASCII表的規(guī)律,空字符、空格字符轉(zhuǎn)義字符:以字符\開(kāi)頭的字符序列。例如'\n'2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院78轉(zhuǎn)義字符字符形式\n\t\b\r\f\\\'\"\ooo\xhh含義換行水平制表退格回車換頁(yè)字符\字符'字符"1~3位8進(jìn)制所代表的字符1~2位16進(jìn)制所代表的字符ASCII代碼109813129239342024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院79利用\ddd和\xhh可表示任何字符(只要已知其ASCII碼)例如'\101'等同于'A','\012'等同于'\n‘;'\0'、'\000'為空字符。
例轉(zhuǎn)義字符的應(yīng)用。#include<stdio.h>intmain(){printf("abc\tde\rf\tg\n");printf("h\ti\b\bjk");return0;}輸出:abcdefabcgdehihj
ikhj
kfgde2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院80(4)字符串常量字符串常量是一對(duì)雙引號(hào)括起來(lái)的字符序列。例如:"Howdoyoudo","abc","a""a"及'a'的不同。字符串常量在內(nèi)存中的存放。例如"CHINA"CHINA\02024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院81(5)符號(hào)常量例符號(hào)常量的使用
#definePRICE30intmain(){intnum,total;num=10;total=num*PRICE;printf("Total=%d",total);return0;}符號(hào)常量的作用:(1)含義清楚(2)便于修改intmain(){intnum,total;num=10;total=num*30;printf("Total=%d",total);return0;}2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院822.變量其值可以改變的量稱為變量。源程序中變量有一個(gè)名字。程序運(yùn)行時(shí)對(duì)應(yīng)內(nèi)存相應(yīng)的存儲(chǔ)單元(地址)。C語(yǔ)言中變量:“先定義,后使用”。便于保證(1)變量使用的正確性;(2)為其分配合適的單元;(3)變量進(jìn)行運(yùn)算的正確性。a123變量名變量值對(duì)應(yīng)單元地址存儲(chǔ)單元2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院833.常變量constinta=3;在該變量存在期間其值不能改變。及變量的異同?與常量的異同?與符號(hào)常量的異同?2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院844.標(biāo)識(shí)符標(biāo)識(shí)符(identifier):用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。有效標(biāo)識(shí)符:只能由字母、數(shù)字、下劃線組成,且第一個(gè)字符必須為字母或下劃線。注1:C語(yǔ)言中大、小寫(xiě)字母是有區(qū)別的。注2:標(biāo)識(shí)符的長(zhǎng)度(各個(gè)C編譯系統(tǒng)自己的規(guī)定)。注3:形象的標(biāo)識(shí)符。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院853.2.2數(shù)據(jù)類型所謂類型,就是對(duì)數(shù)據(jù)分配存儲(chǔ)單元的安排,包括存儲(chǔ)單元的長(zhǎng)度以及數(shù)據(jù)的存儲(chǔ)形式。數(shù)據(jù)類型基本類型整型(int)字符型(char)實(shí)型(浮點(diǎn)型)枚舉類型單精度型(float)雙精度型(double)指針類型空類型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院863.2.3整型數(shù)據(jù)1.整型數(shù)據(jù)的分類(1)基本整型
inti;//int型數(shù)據(jù)單元為2個(gè)字節(jié)或4個(gè)字節(jié)
i=10;數(shù)值是以補(bǔ)碼表示的。例如
–10的補(bǔ)碼。0000000000001010i20002001i的地址為2000000000000000101010的原碼1111111111110101按位取反1111111111110110再加12024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院871.整型數(shù)據(jù)的分類基本整型:int短整型:shortint或short長(zhǎng)整型:longint或
long雙長(zhǎng)整型:longlongintsizeof(short)≤sizeof(int)≤sizeof(long)≤sizeof(longlong)2.整型變量的符號(hào)屬性表3.2ANSI標(biāo)準(zhǔn)定義的整數(shù)類型[signed]intunsignedint[signed]short[int]unsignedshort[int][signed]long[int]unsignedlong[int]比特?cái)?shù)161632321616類型最小取值范圍–32768~32767即–215~(215–1)0~4294967275即0~(232–1)–2147483648~2147483647即–231~(231–1)–32768~32767即–215~(215–1)0~65535即0~(216–1)0~65535即0~(216–1)2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院883.2.3整型數(shù)據(jù)整型變量的溢出#include<stdio.h>intmain(){inta,b;a=32767;b=a+1;printf("%d,%d",a,b);return0;}運(yùn)行結(jié)果為:32767,-32768說(shuō)明:(2)用%u格式輸出無(wú)符號(hào)數(shù)據(jù)。01111111111111111000000000000000ab2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院893.2.4字符型數(shù)據(jù)1.字符及字符代碼字符按ASCII碼形式存儲(chǔ)字符'1'與整數(shù)1的不同:1+1=?'1'+'1'=?2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院903.2.4字符型數(shù)據(jù)2.字符變量charc1,c2;c1='a';c2='b';字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法字符在內(nèi)存中以二進(jìn)制形式存放其對(duì)應(yīng)的ASCII碼!例向字符變量賦以整數(shù)。main(){charc1,c2;c1=97;c2=98;//等價(jià)于c1='a';c2='b';printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}97c198c2c1c22024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院91例大小寫(xiě)字母的轉(zhuǎn)換main(){charc1,c2;c1='a';c2='b';c1=c1–32;
c2=c2–32;
printf("%c%c\n",c1,c2);}字符數(shù)據(jù)及整型數(shù)據(jù)可以互相賦值。charc=130;printf("%c,%d",c,c);2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院923.2.5浮點(diǎn)型數(shù)據(jù)實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式——是以指數(shù)形式存放在存儲(chǔ)單元中的。指數(shù)形式:123e3、123E3規(guī)范化的指數(shù)形式:1.23e5、1.23000e+05例:將5.25在內(nèi)存存放。5.25=(101.01)2=1.0101
22.實(shí)型變量的分類+.0101+00000010系數(shù)部分?jǐn)?shù)符系數(shù)部分小數(shù)指數(shù)類型floatdoublelongdouble比特?cái)?shù)3264128有效數(shù)字61519數(shù)值范圍(±)1.2×
10
38~3.4×
1038(±)
2.3×
10
308~1.7×
10308(±)
3.4×
10
4932~
1.1×
1049322024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院933.2.6怎樣確定常量的類型(1)整型常量在某類型的取值范圍內(nèi)即可?;颍嚎稍谡麛?shù)的末尾加L或l。(2)浮點(diǎn)型常量實(shí)型常量都是雙精度浮點(diǎn)型常量?;颍嚎稍趯?shí)數(shù)的末尾加F或f,L或l。例:floatf=3.14159;floatf=3.14159f;longdoublea=1.23L;2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院943.2.7運(yùn)算符和表達(dá)式1.基本的算術(shù)運(yùn)算符+、–、*、/、%注意:(1)兩個(gè)整數(shù)相除的結(jié)果為整數(shù)。若至少有一個(gè)運(yùn)算數(shù)為實(shí)數(shù),則算術(shù)運(yùn)算的結(jié)果為雙精度實(shí)數(shù)。例:1/2為0,1.0/2等于0.5(2)+、–還可為單目運(yùn)算符。3.算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)及結(jié)合性2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院952.自增自減運(yùn)算符++i,––ii++,i––j=++i;j=i++;注1.自增自減運(yùn)算符,只能作用于變量,而不能用于常量或表達(dá)式。5++、(a+b)++不合法。注2.自增自減運(yùn)算符的結(jié)合方向“自右至左”例如(1)–i++(參見(jiàn)TurboC程序)
(2)i=3;j=(++i)+(++i)+(++i);2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院962024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院974.各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算10+'a'+1.5-8765.1234*'b'(系統(tǒng)自動(dòng)進(jìn)行轉(zhuǎn)換)5.強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:
(類型)(表達(dá)式)(int)3.14、(float)1doublefloatlongunsignedintchar,short高低2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院986.C運(yùn)算符(1)算術(shù)運(yùn)算符(+—*/%++––)(2)關(guān)系運(yùn)算符(><==>=<=!=)(3)邏輯運(yùn)算符(!&&||)(4)位運(yùn)算符(<<>>~|^&)(5)賦值運(yùn)算符(=及其擴(kuò)展賦值運(yùn)算符)(6)條件運(yùn)算符(:)(7)逗號(hào)運(yùn)算符(,)(8)指針運(yùn)算符(*和&)(9)求字節(jié)數(shù)運(yùn)算符(sizeof)(10)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符((類型))(11)成員運(yùn)算符(.—>)(12)下標(biāo)運(yùn)算符([])(13)其他(如函數(shù)調(diào)用運(yùn)算符())2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院993.3C語(yǔ)句3.3.1C語(yǔ)句的作用和分類源程序文件1C程序局部變量聲明源程序文件2源程序文件n預(yù)處理命令全局變量聲明函數(shù)1函數(shù)首部函數(shù)n函數(shù)體執(zhí)行語(yǔ)句…………2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1003.3.1C語(yǔ)句的作用和分類(1)控制語(yǔ)句
if()…else…(條件語(yǔ)句)
for()…(循環(huán)語(yǔ)句)
while()…(循環(huán)語(yǔ)句)
do…while()(循環(huán)語(yǔ)句)
continue(結(jié)束本次循環(huán)語(yǔ)句)
break(終止執(zhí)行switch或循環(huán)語(yǔ)句)
switch(多分支選擇語(yǔ)句)
return(從函數(shù)返回語(yǔ)句)
goto(轉(zhuǎn)向語(yǔ)句)2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1013.3.1C語(yǔ)句的作用和分類(2)函數(shù)調(diào)用語(yǔ)句
printf("ThisisaCstatement.");(3)表達(dá)式語(yǔ)句
a=3;x+y;(4)空語(yǔ)句;(5)復(fù)合語(yǔ)句
{……}2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1023.3.2最基本的語(yǔ)句——賦值語(yǔ)句例3.4給出三角形的三邊長(zhǎng),求三角形面積。解題思路、編寫(xiě)程序、程序分析(略)。注意數(shù)學(xué)函數(shù)及'\t'的應(yīng)用。賦值運(yùn)算符:=例如:a=3;k=i*j;其作用2.復(fù)合的賦值運(yùn)算符:+=、*=、%=、……a+=3等價(jià)于a=a+3x*=y+8等價(jià)于x=x*(y+8)x%=3等價(jià)于x=x%3一般地:v=vopexp(此處v為變量,exp為表達(dá)式,op為運(yùn)算符)等價(jià)于vop=exp目的:簡(jiǎn)化程序提高效率2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1033.3.2最基本的語(yǔ)句——賦值語(yǔ)句3.賦值表達(dá)式:
整個(gè)作為一個(gè)表達(dá)式有此概念后,就可以理解并實(shí)現(xiàn):a=b=c=5a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/c=2)a+=a–=a*a(若a的初值為12)printf("%d",a=b)變量=表達(dá)式2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1044.賦值過(guò)程中的類型轉(zhuǎn)換賦值運(yùn)算符兩側(cè)的數(shù)據(jù)類型不一致時(shí),賦值運(yùn)算符右端的表達(dá)式計(jì)算結(jié)果要轉(zhuǎn)換為賦值運(yùn)算符左端變量的類型。注意:表達(dá)式的值是否超過(guò)變量所屬類型的取值范圍。
實(shí)型數(shù)據(jù)整型變量取整數(shù)部分,但注意范圍(1)實(shí)型變量整型數(shù)據(jù)以浮點(diǎn)形式存儲(chǔ)(2)double數(shù)據(jù)float變量取7位有效數(shù)字,但注意范圍(3)double變量float數(shù)據(jù)有效位數(shù)擴(kuò)展char數(shù)據(jù)整型變量字符數(shù)據(jù)送到整型變量低8位但注意符號(hào)擴(kuò)展(4)char變量整型數(shù)據(jù)取低8位(5)2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1056.變量賦初值inta=3;floatf=3.56;charc='a';inta,b,c=5;相當(dāng)于inta,b,c;c=5;2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1063.4數(shù)據(jù)的輸入輸出標(biāo)準(zhǔn)輸入輸出函數(shù):putchar()、getchar()、printf()、scanf()、puts()、gets()#include<stdio.h>2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1073.4.1字符數(shù)據(jù)的輸入輸出1.putchar函數(shù)(字符輸出函數(shù))putchar函數(shù)的功能是向終端輸出一個(gè)字符。一般形式:putchar(表達(dá)式)先計(jì)算表達(dá)式之值,然后在終端輸出其ASCII碼為該值的字符。例如:chara='B';putchar(a);putchar('O');putchar('Y');putchar('\n');putchar('A');putchar('A'+1);此時(shí)在屏幕上輸出:BOYAB2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1083.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))getchar函數(shù)的功能是從終端(實(shí)際上是從輸入緩沖區(qū))讀入一個(gè)字符。一般形式:getchar()例3.9從鍵盤輸入BOY3個(gè)字符,然后把它們輸出到屏幕。#include<stdio.h>intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar('\n');return0;}注意程序運(yùn)行過(guò)程中的輸入。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1093.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))getchar函數(shù)的功能是從終端(實(shí)際上是從輸入緩沖區(qū))讀入一個(gè)字符。getchar()將輸入緩沖區(qū)下一個(gè)可讀字符的字符值作為函數(shù)值返回。注1.getchar()從輸入緩沖區(qū)讀入下一個(gè)可讀字符后(例如右圖中b),再下一個(gè)字符成為下一個(gè)可讀字符(右圖中c)注2.若當(dāng)前輸入緩沖區(qū)可讀字符為空(例如程序開(kāi)始時(shí),或輸入緩沖區(qū)字符被讀完后——例如上圖讀完換行符
后),getchar將等待用戶從鍵盤向緩沖區(qū)輸入數(shù)據(jù),直到輸入一行字符(鍵入
后),才開(kāi)始讀輸入緩沖區(qū)(此時(shí)剛輸入的第一個(gè)字符為下一個(gè)可讀字符)。剛輸入的一行字符同時(shí)顯示在屏幕上。abc123
下一個(gè)可讀字符輸入緩沖區(qū)2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1103.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))補(bǔ)充1:getch()函數(shù)——直接讀鍵盤(而不是讀輸入緩沖區(qū),也就不必理會(huì)輸入緩沖區(qū)是否為空),此時(shí)該函數(shù)等待用戶從鍵盤輸入一個(gè)字符,當(dāng)用戶按任一鍵后(不必為
),getch()將該字符作為函數(shù)值返回。注意:為執(zhí)行g(shù)etch()函數(shù)而在鍵盤上鍵入的字符不顯示在屏幕上。該函數(shù)常常用來(lái)響應(yīng)用戶是否敲擊鍵盤。補(bǔ)充2:getche()函數(shù),基本同getch();只是為執(zhí)行g(shù)etche()函數(shù)而在鍵盤上鍵入的字符顯示在屏幕上。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1113.4.2格式輸入輸出1.printf函數(shù)(格式輸出函數(shù))printf()的功能是向終端輸出若干個(gè)任意類型(格式)的數(shù)據(jù)。一般形式:printf(參數(shù)1,參數(shù)2,參數(shù)3……參數(shù)n);
轉(zhuǎn)換控制字符串
輸出表列例如:printf("%d,%c\n",i,c);其中printf()的第一個(gè)參數(shù)為轉(zhuǎn)換控制字符串,它包括:
格式說(shuō)明,由%和格式字符等組成,如%d,%6.2f等。其作用是將后面對(duì)應(yīng)的參數(shù)表達(dá)式的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。
普通字符,將原樣輸出。2024/3/2云南師范大學(xué)數(shù)學(xué)學(xué)院1121.printf函數(shù)(格式輸出函數(shù))格式字符(1)d格式符。將對(duì)應(yīng)參數(shù)的數(shù)據(jù)以十進(jìn)制形式輸出。
%d:以十進(jìn)制形式按實(shí)際長(zhǎng)度輸出。
%md:m為指定的輸出數(shù)據(jù)的最小寬度。若實(shí)際輸出字符個(gè)數(shù)小于m,則在左端補(bǔ)以空格(右端對(duì)齊)。若實(shí)際輸出字符個(gè)數(shù)超過(guò)m,則m不起作用。
%md:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 有關(guān)基金投資的課程設(shè)計(jì)
- 電子電路的精密測(cè)量技巧考核試卷
- 電影道具機(jī)械設(shè)計(jì)的生命周期評(píng)估考核試卷
- 2024年度廣西壯族自治區(qū)國(guó)家保安員資格考試??寄M試題(全優(yōu))
- 搪瓷制品在汽車行業(yè)中的創(chuàng)新研究考核試卷
- 硫酸鉛在涂料添加劑中的作用與應(yīng)用考核試卷
- 環(huán)保技術(shù)項(xiàng)目實(shí)施的質(zhì)量控制體系考核試卷
- 2024年度物業(yè)管理與社區(qū)環(huán)境美化合同3篇
- 2025年度海洋油氣田9A級(jí)建筑工程施工合同2篇
- 2025年公路旅客運(yùn)輸服務(wù)合作協(xié)議書(shū)
- 陜西省西安市碑林區(qū)鐵一中學(xué)2020-2021學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案解析)
- 簡(jiǎn)支梁、懸臂梁撓度計(jì)算程序(自動(dòng)版)
- 埋地鋼管結(jié)構(gòu)計(jì)算
- X-Y數(shù)控工作臺(tái)及其控制系統(tǒng)設(shè)計(jì)
- 統(tǒng)編版小學(xué)四年級(jí)語(yǔ)文上冊(cè)五六單元測(cè)試卷(附答案)
- 高支模技術(shù)交底(新版)
- 電工新技術(shù)介紹(課堂PPT)
- 我最喜歡的節(jié)日的小學(xué)英語(yǔ)作文我喜歡的節(jié)日英語(yǔ)作文.doc
- 機(jī)電設(shè)備維護(hù)保養(yǎng)技術(shù)
- 對(duì)于部門整體支出績(jī)效評(píng)價(jià)結(jié)果整改報(bào)告
- 121課堂教學(xué)新模式
評(píng)論
0/150
提交評(píng)論