C程序設(shè)計(第四版)任正云-教案_第1頁
C程序設(shè)計(第四版)任正云-教案_第2頁
C程序設(shè)計(第四版)任正云-教案_第3頁
C程序設(shè)計(第四版)任正云-教案_第4頁
C程序設(shè)計(第四版)任正云-教案_第5頁
已閱讀5頁,還剩270頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1課程介紹

一、課本說明

二、課程要求

1、課堂

2、上機

3、作業(yè)

4、參考書

5、考試

三、學(xué)習(xí)目的1、徐金吾等《TurboC使用大全》北京科海培訓(xùn)中心19902、《C高級實用程序設(shè)計》王士元編著清華大學(xué)出版社19953、《C陷阱與缺陷》AndrewKoenig著高巍譯人民郵電出版社4、《C程序設(shè)計教程》(美)H.M.Deitel,P.J.Deitel著薛萬鵬等譯機械工業(yè)出版社5、《C語言上機實踐指導(dǎo)與水平測試》(美)EricRoberts著翁惠玉張冬茉等譯機械工業(yè)出版社平時作業(yè)和實驗報告占20%,期中上機考試占10%,期末考試成績占70%,總成績滿分100分,60分即可獲得該課程學(xué)分即2學(xué)分。1、觸類旁通2、掌握編程思想3、良好的程序設(shè)計風(fēng)格4、解決實際問題5、熟悉上機環(huán)境2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院2

注:提交作業(yè)方式

四、復(fù)習(xí)計算機系統(tǒng)

1、包括:硬件和軟件

2、硬件和軟件共同完成以下4個主要操作:輸入

處理

輸出

存儲

lwshida@數(shù)據(jù)進入計算機系統(tǒng)。組織數(shù)據(jù)、檢查數(shù)據(jù)的正確性、數(shù)據(jù)的運算。數(shù)據(jù)處理后,結(jié)果要傳遞給人,以便觀察、解釋和使用。常需要把輸出信息存儲在存儲設(shè)備2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院3

五、計算機編程語言語言有管理其單詞使用和標(biāo)點符號的規(guī)則——語法,除此還有語義。VisualBasic、Pascal、COBOL、C#、C++、Java、Fortran、C等

六、如何學(xué)好C語言——理論+實踐1、認(rèn)真體會所有概念(如運算符和運算順序),并注意前后反復(fù)和貫穿。2、學(xué)好C語言的三種程序控制結(jié)構(gòu)+模塊化。3、掌握一些簡單的算法4、讀程序:看經(jīng)典案例,善于閱讀和分析程序;與別人交流5、多實踐:上機前想好解題思路,寫好算法;上機過程中,讀懂出錯信息,總結(jié)經(jīng)驗6、提高學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法方面的內(nèi)容(其它課程)2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院4七、為什么要學(xué)習(xí)程序設(shè)計

計算機的本質(zhì)是“程序的機器”,只有懂得程序設(shè)計,才能進一步懂得計算機,真正了解計算機是怎樣工作的,掌握用計算機處理問題的方法;培養(yǎng)分析問題和解決問題的能力。即使將來不是計算機專業(yè)人員,由于學(xué)過程序設(shè)計理解軟件生產(chǎn)的特點和生產(chǎn)過程,就能與程序開發(fā)人員個更好的溝通與合作,開展本領(lǐng)域中的計算機應(yīng)用,開發(fā)與本領(lǐng)域有關(guān)的應(yīng)用程序。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院5八、為什么選擇C語言

進行程序設(shè)計,必須用一種計算機語言作為工具,否則只是紙上談兵??蛇x擇的語言很多,各有特點和應(yīng)用領(lǐng)域。而C語言的代碼量小:同樣功能的軟件用C語言編寫容量很小。Wps與office,界面功能基本類似,但是wps只有23.3M,但是微軟office就有千兆左右。Wps的內(nèi)核代碼就是用C語言寫的。以及我們的主板驅(qū)動、顯卡驅(qū)動、攝像頭驅(qū)動等都是用c語言。以及數(shù)據(jù)庫DB2,oracle等都是用c語言和c++來寫的。ACDSee、photoshop、2D(cs)、3D游戲等應(yīng)用軟件也是用C語言來編寫的。速度快:windows內(nèi)核是c語言外核是c++、unix和linux都是用c語言編寫的。功能強大:c語言可訪問我們的硬件,c語言中有指針可訪問我們的內(nèi)存等硬件。

C++是為處理大規(guī)模的程序開發(fā)而研制的大型語言,比C語言復(fù)雜難學(xué)。C語言是更為基本的,最基礎(chǔ)的。在它基礎(chǔ)上學(xué)習(xí)java和c#更容易。C語言是當(dāng)前程序員共同的語言。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院6參考書1、《零基礎(chǔ)學(xué)C語言》,康莉編,機械工業(yè)出版社。本書詳細(xì)而透徹地講述了C語言各個語句的語法規(guī)則,通過典型的簡單的例題,將初學(xué)者引入C語言的編程世界。2、《C語言程序(第四版)學(xué)習(xí)指導(dǎo)》,譚浩強編,清華大學(xué)出版社。與《C程序設(shè)計(第四版)》教材配套的上機指導(dǎo)。3、《TurboC實用大全》,徐金梧楊德斌徐科編寫,機械工業(yè)出版社。此書詳細(xì)介紹了C語言庫函數(shù),是一本適合已掌握C語言基礎(chǔ)之后使用的參考書。4、《C語言常用算法與子程序》,尹彥芝編著,清華大學(xué)出版社。是一本較系統(tǒng)地提供C語言算法,提供各種C語言常用程序的書籍,凡是用C語言編寫程序的人,相信都會從這本書中得到啟發(fā)。5、《C語言程序設(shè)計習(xí)題集(第二版)》,陳朔鷹陳英主編,人民郵電出版社。匯集近千道不同難度、不同層次、不同類型的習(xí)題,簡單的題目適合初學(xué)者進階和進行基本概念自測,復(fù)雜的題目足可以讓你研究上十幾天,使讀者能真正感受到暢游C語言世界的樂趣。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院7教材、參考書6、《C語言趣味程序百例精解》,陳朔鷹陳英主編,北京理工大學(xué)出版社。匯集100道從易到難的趣味編程題目,可以通過對這些問題的求解過程,進一步掌握程序設(shè)計的基本方法和解題思路。7、《C語言程序設(shè)計輔導(dǎo)與習(xí)題集》,田淑清等,中國鐵道出版社。一本典型的與全國計算機等級考試題型類似的習(xí)題集。整本書的習(xí)題難易適中。也適合于C語言程序設(shè)計的進階學(xué)習(xí)。

8、《C語言編程常見問題解答》,[美]PaulS.R.Chishohm等著,張芳妮呂波譯,清華大學(xué)出版社。是一本以問答方式書寫的參考書,在按照章節(jié)回答問題的過程中,讀者可以明確清楚地體會到C語言的精髓。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院8教材、參考書9、《TheCProgrammingLanguage》,byBrianW.KernighanandDennisM.Ritchie.,PubilishedbyPrentice-Hallin1988。著名的原版C語言教材,讀者如果有時間的話可以讀讀它,來感受感受世界著名的教材的風(fēng)范。10、《全國計算機等級考試二級教程(C語言程序設(shè)計)》教育部考試中心編,高等教育出版社。課程要求:課前請做好預(yù)習(xí)保持課堂安靜,頭腦清醒,思維活躍認(rèn)真、獨立、按時完成并提交作業(yè)重視上機實踐,有效利用寶貴的上機時間2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院9學(xué)習(xí)網(wǎng)站(1)

清華大學(xué)《計算機語言與程序設(shè)計》0/jpkcgc/aao_57/index.jsp(2)

浙江大學(xué)《C程序設(shè)計基礎(chǔ)及實驗》

/crs/ccxsj/index.htm(3)

C語言寶典,/(4)

TurboC編程寶典,/~junl/learning/TC(5)

二級C語言,/proedu/jsjkj/c.htm(6)

C語言教程,/c.htm(7)

唯C世界,/(8)

C語言編程網(wǎng),/(9)

C語言編程寶典,/turboc/index.html(10)C語言程序基礎(chǔ),/c/(11)鵬程C語言教學(xué)網(wǎng)站,/(12)經(jīng)典C,/SoftView/SoftView_24.html

(13)C語言編程電子書,/down/pc/cbible.htmlC程序設(shè)計(第四版)

譚浩強著云南師范大學(xué)數(shù)學(xué)學(xué)院2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院11目錄程序設(shè)計和C語言算法——程序的靈魂最簡單的C程序設(shè)計——順序程序設(shè)計選擇結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計利用數(shù)組處理批量數(shù)據(jù)利用函數(shù)實現(xiàn)模塊化程序設(shè)計善于利用指針用戶自己建立數(shù)據(jù)類型對文件的輸入輸出常見錯誤分析2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院12第一章程序設(shè)計和C語言2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院13

本章要點什么是計算機程序什么是計算機語言C語言的發(fā)展及其特點運行C程序的步驟與方法最簡單的C語言程序程序設(shè)計的任務(wù)2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院141、什么是計算機程序

計算機是萬能的嗎?---計算機的每一個操作都是根據(jù)人們事先指定的指令進行的。為了使計算機執(zhí)行一系列的操作,必須事先編好一條條指令,輸入到計算機。

程序:就是一組計算機能識別和執(zhí)行的指令。每一條指令使計算機執(zhí)行特定的操作。為了使計算機系統(tǒng)能實現(xiàn)各種功能,需要成千上萬個程序。

總之,計算機的一切操作都是由程序控制的,離開程序計算機將一事無成。所以,計算機的本質(zhì)是程序的機器,只有懂得程序設(shè)計,才能真正了解計算機是怎樣工作的,才能更深入的使用計算機。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院152、什么是計算機語言

計算機能識別的語言,就是計算機語言。發(fā)展階段:機器語言--匯編語言—高級語言計算機是不能直接識別高級語言編寫的程序,要進行“翻譯”。用一種稱為編譯程序的軟件把高級語言寫的程序(稱為源程序)轉(zhuǎn)換為機器指令的程序(稱為目標(biāo)程序),然后讓計算機執(zhí)行機器指令程序,最后得到結(jié)果2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院16#include<stdio.h>intmain()//一個簡單的C語言程序{printf("ThisisaCprogram.\n");return0;}高級語言源程序機器語言目標(biāo)程序程序執(zhí)行結(jié)果編譯程序運行程序2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院173.C語言發(fā)展及其特點C語言是國際上廣泛流行的高級語言。C語言是在B語言的基礎(chǔ)上發(fā)展起來的。B(BCPL)語言是1970年由美國貝爾實驗室設(shè)計的,并用于編寫了第一個UNIX操作系統(tǒng),在PDP7上實現(xiàn)。優(yōu)點:精練,接近硬件,缺點:過于簡單,數(shù)據(jù)無類型。1973年貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計出了C語言,對B取長補短,并用之改寫了原來用匯編編寫的UNIX,(即UNIX第5版),但僅在貝爾實驗室使用。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院18C語言出現(xiàn)的歷史背景1975年UNIX第6版發(fā)布,C優(yōu)點突出引起關(guān)注。1977年出現(xiàn)了《可移植C語言編譯程序》,推動了UNIX在各種機器上實現(xiàn),C語言也得到推廣,其發(fā)展相輔相成。1978年影響深遠(yuǎn)的名著《TheCProgrammingLanguage》由BrianW.Kernighan和DennisM.Ritchie合著,被稱為標(biāo)準(zhǔn)C。之后,C語言先后移植到大、中、小、微型計算機上,已獨立于UNIX和PDP,風(fēng)靡世界,成為最廣泛的幾種計算機語言之一。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院19C語言出現(xiàn)的歷史背景1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI)根據(jù)C語言各種版本對C的發(fā)展和擴充,制定了新的標(biāo)準(zhǔn)ANSIC,比標(biāo)準(zhǔn)C有了很大的發(fā)展。1988年K&R按照ANSIC修改了他們的《TheCProgrammingLanguage》。1989年,ANSI公布了一個完整的c語言標(biāo)準(zhǔn)——ANSIC或C89。1990年,國際標(biāo)準(zhǔn)化組織接受了C89為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)。1995年,ISO又修訂了C語言標(biāo)準(zhǔn)。1999年,ISO有對C語言標(biāo)準(zhǔn)進行修訂在基本保留原來的c語言特征的基礎(chǔ)上,針對應(yīng)用的需要又增加一些功能。命名ISO/IEC9899:19992001和2004年先后進行兩次技術(shù)修正(TC1、TC2)ISO/IEC9899:1999及其技術(shù)修正被稱為C99。講課依據(jù)c99標(biāo)準(zhǔn)。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院20說明:不同版本的C編譯系統(tǒng)所實現(xiàn)的語言功能和語法規(guī)則又略有差別,因此我們應(yīng)了解所用的C語言編譯系統(tǒng)的特點(可以參閱網(wǎng)上相關(guān)資料)。我們使用的是二級語言考試的編譯程序VisiuaC++6.0.2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院21C語言的特點(1)語言簡潔、緊湊,使用方便、靈活。37個關(guān)鍵字、9種控制語句,程序形式自由,主要用小寫字母表示,壓縮而一切不必要的成分。(2)運算符豐富。34種運算符,把括號、復(fù)制和強制類型轉(zhuǎn)化等都作為運算符處理,從而使C語言的運算類型機極其豐富,表達式類型多樣化,靈活使用各種運算符。(3)數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。整型、浮點型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型和共用體類型,C99擴充了復(fù)數(shù)浮點類型、超長整型和布爾類型。(4)具有結(jié)構(gòu)化的控制語句,是完全模塊化和結(jié)構(gòu)化的語言。(5)語法限制不太嚴(yán)格,程序設(shè)計自由度大。例如對數(shù)組越界不進行檢查,由程序編寫者自己保證程序的正確,對變量的類型使用比較靈活。c語言允許程序編寫者有較大的自由度,放寬了語法檢查。一般的高級語言語法檢查比較嚴(yán)。

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院2237個關(guān)鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifinlineintlongregisterrestrictreturnshortsignedsizeofstaicstructswitchtypedefunionunsignedvoidvolatilewhile_bool_Complex_Imaginary

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院23C語言的特點(6)允許直接訪問物理地址,能進行位操作,能實現(xiàn)匯編語言的大部分功能,可直接對硬件進行操作。兼有高級和低級語言的特點。既是成功的系統(tǒng)描述語言,有時通用的程序設(shè)計語言。(7)目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比匯編程序生成的目標(biāo)代碼效率低10%-20%。(8)程序可移植性好(與匯編語言比)。基本上不做修改就能用于各種型號的計算機和各種操作系統(tǒng)。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院24

1.4簡單的C語言程序#include<stdio.h>void

main(){

printf("ThisisaCprogram.\n");}//文件包含/*主函數(shù)*///函數(shù)體開始//輸出語句//函數(shù)體結(jié)束說明:main-主函數(shù)名,void-函數(shù)類型每個C程序必須有一個主函數(shù)main{}是函數(shù)開始和結(jié)束的標(biāo)志,不可省每個C語句以分號結(jié)束使用標(biāo)準(zhǔn)庫函數(shù)時應(yīng)在程序開頭一行寫:

#include<stdio.h>說明:

本程序的作用是輸出一行信息:ThisisaCprogram.2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院25例1.2求兩數(shù)之和

#include<stdio.h>

voidmain()//求兩數(shù)之和

{

inta,b,sum;//聲明,定義變量為整型

/*以下3行為C語句*/

a=123;b=456;

sum=a+b;

printf(″sumis%d\n″,sum);

}說明:

//……與/*……*/表示注釋。注釋只是給人看的,對編譯和運行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨成為一行。說明:

輸出一行信息:sumis5792023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院26例1.3求2個數(shù)中較大者。

#include<stdio.h>

voidmain()//主函數(shù)

{

intmax(intx,inty);//對被調(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的值

}程序運行情況如下: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);

說明:本程序包括main和被調(diào)用函數(shù)max兩個函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語句將z的值返回給主調(diào)函數(shù)main。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院27C程序:(1)C程序是由函數(shù)構(gòu)成的。這使得程序容易實現(xiàn)模塊化。

(2)一個函數(shù)由兩部分組成:

函數(shù)的首部:例1.3中的max函數(shù)首部

intmax(intx,inty)

函數(shù)體:花括號內(nèi)的部分。若一個函數(shù)有多個花括號,則最外層的一對花括號為函數(shù)體的范圍。函數(shù)體包括兩部分:聲明部分:inta,b,c;可缺省執(zhí)行部分:由若干個語句組成??扇笔?023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院28注意:函數(shù)的聲明部分和執(zhí)行部分都可缺省,例如:voiddump(){}

這是一個空函數(shù),什么也不做,但是合法的函數(shù)。

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院29小結(jié):(3)C程序總是從main函數(shù)開始執(zhí)行的,與main函數(shù)的位置無關(guān)。(4)C程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在多行上,C程序沒有行號。(5)每個語句和數(shù)據(jù)聲明的最后必須有一個分號。分號是C語句的必要組成部分。即使是程序中最后一個語句也應(yīng)包含分號。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院30小結(jié):(6)C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。C對輸入輸出實行“函數(shù)化”。(7)可以用/*……*/或//……對C程序中的任何一行或數(shù)行做注釋。一個好的、有使用價值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院311.5運行C程序的步驟和方法1.5.1運行C程序的步驟上機輸入與編輯源程序?qū)υ闯绦蜻M行編譯與庫函數(shù)連接運行目標(biāo)程序2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院321.5運行C程序的步驟和方法

1.5.2上機運行C程序的方法目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的??梢杂貌煌木幾g系統(tǒng)對C程序進行操作常用的有TurboC2.0、TurboC++3.0、VisualC++6.0等前一段時間,TurboC2.0用得比較多,但TurboC2.0是用于DOS環(huán)境的,不能用鼠標(biāo)進行操作,很不方便,所以今年來不少人改為用TurboC++3.0或VisualC++6.0對C程序進行編譯

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院33例:VC++6.0的使用1.安裝VC++6.0和進入VC++6.0集成環(huán)境

(1)VisualC++6.0適用于Windows環(huán)境。首先在所用的計算機上安裝VisualC++6.0系統(tǒng)。安裝完后,雙擊VisualC++6.0圖標(biāo),就能進入VC++6.0集成環(huán)境。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院34(2)在VC++主窗口的頂部是VC++的主菜單欄。其中包含9個項∶FileEditViewInsertProjectBuildToolswindowsHelp;主窗口的左側(cè)是項目工作區(qū)窗口(用來顯示所設(shè)定的工作區(qū)的信息),右側(cè)是程序編輯窗口(用來輸入和編輯源程序)。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院352.輸入和編輯源程序(1)新建一個源程序

①在VC++主窗口的主菜單欄中選擇“File”

,然后選擇“New”

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院36單擊屏幕上出現(xiàn)的“New”對話框上方的“Files”,在其下拉菜單中選擇“C++SourceFile”項;然后在對話框右半“Location”文本框中輸入準(zhǔn)備編輯的源程序文件的存儲路徑(假定為D:\cc);在其上方的File(文件)文本框中輸入準(zhǔn)備編輯的源程序文件的名字(輸入c1-1.c)。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院37②輸入和編輯源程序單擊“OK”

按鈕后,回到VC++主窗口程序,編輯窗口已激活,即可輸入和編輯源程序。在輸入過程中如發(fā)現(xiàn)有錯誤,可以利用全屏幕編輯方法進行修改編輯。

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院38③源程序的保存檢查無誤后,在主菜單欄中選擇“File”(文件),并在其下拉菜單中選擇“Save”(保存)項

說明:

VC++6.0可以編譯后綴為.c的C源程序,也可以編譯后綴為.cpp的C++源程序。

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院39

(2)打開一個已有的程序

①在“我的電腦”中按路徑找到已有的C程序名;

②雙擊此文件名,則進入了VC++集成環(huán)境,并打開了該文件,程序已顯示在編輯窗口中;

③修改后選擇“File”(文件)→“Save”(保存),保存在原來的文件中;

(3)通過已有的程序建立一個新程序

①打開任何一個已有的源文件2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院403.程序的編譯單擊主菜單欄中的“Build”,在其下拉菜單中選擇“Compliec1-1.c”項。

在單擊編譯命令后,屏幕上出現(xiàn)一個是否同意建立一個默認(rèn)的項目工作區(qū)的對話框單擊“Yes”(是)按鈕后開始編譯。也可以不用選擇菜單的方法,而用“Ctrl+F7”來完成編譯。編譯完成后,調(diào)試窗口出現(xiàn)編譯信息,如果無錯生成目標(biāo)文件c1-1.obj,否則指出錯誤位置和性質(zhì)。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院414.程序的連接

生成目標(biāo)文件后,把程序和系統(tǒng)提供的資源(如函數(shù)據(jù)庫、頭文件)建立連接。選擇“Build”→“Buildtest.exe”

。

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院42執(zhí)行連接后,在調(diào)試輸出窗口中顯示連接時的信息,生成可執(zhí)行文件c1-1.exe。說明:

選擇菜“Build”→“Build”(

或按“F7”鍵)一次完成編譯與連接。但提倡初學(xué)者分步進行編譯和鏈接,因為程序出錯的機會較多,最好等到上一步完全正確后才進行下一步2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院435程序的執(zhí)行執(zhí)行c1-1.exe文件,選擇“Build”→“!Executec1-1.exe”2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院44程序執(zhí)行后,屏幕切換到輸出結(jié)果的窗口,顯示輸出結(jié)果。第1行:程序的輸出第2行:是VC++在輸出完運行結(jié)果后由VC++6.0系統(tǒng)自動加上的一行信息,通知用戶∶“按任何一鍵以便繼續(xù)”。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院45運行一個C語言程序的一般過程:(1)啟動VC++,進入VC++集成環(huán)境。(2)編輯(或修改)源程序。

(3)保存文件(3)編譯、連接、運行。如果有錯,則修改源程序,再重新編譯、連接和運行,直至程序正確。(4)退出VC++集成環(huán)境,結(jié)束本次程序運行。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院461.6程序設(shè)計的任務(wù)問題分析設(shè)計算法編寫程序?qū)υ闯绦蜻M行編輯、編譯和連接運行程序,分析結(jié)果(調(diào)試、測試)編寫程序文檔第二章算法--程序的靈魂

主要內(nèi)容2.1算法的概念2.2簡單算法舉例2.3算法的特性2.4怎樣表示一個算法2.5結(jié)構(gòu)化程序設(shè)計方法2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院49一個程序應(yīng)包括兩個方面的內(nèi)容:對數(shù)據(jù)的描述即在程序中指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式:數(shù)據(jù)結(jié)構(gòu)(datastructure)對操作的描述即操作步驟:算法(algorithm)著名計算機科學(xué)家沃思提出一個公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計方法+語言工具完整的程序設(shè)計應(yīng)該是:2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院502.1什么是算法

廣義地說,為解決一個問題而采取的方法和步驟,就稱為“算法”。方法1:1+2,+3,+4,一直加到100加99次方法2:100+(1+99)+(2+98)+…+(49+51)+50=100+49×100+50加51次對同一個問題,可有不同的解題方法和步驟例:求2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院51§2.1算法的概念

為了有效地進行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法。希望方法簡單,運算步驟少。計算機算法可分為兩大類別:數(shù)值運算算法:求數(shù)值解,例如求方程的根、求函數(shù)的定積分等。非數(shù)值運算:包括的面十分廣泛,最常見的是用于事務(wù)管理領(lǐng)域,例如圖書檢索、人事管理、行車調(diào)度管理等。計算機算法分為數(shù)值運算算法、非數(shù)值運算算法2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院522.2簡單算法舉例例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,則要寫999個步驟2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院532.2簡單算法舉例例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)鍵:抽象、提煉出解決問題的一般步驟1.記錄每一步的結(jié)果及最終結(jié)果(p)每一步處理的數(shù)據(jù)(i)2.初始狀態(tài)及動態(tài)過程算法具有一般性、通用性和靈活性便于執(zhí)行循環(huán)等操作2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院542.2簡單算法舉例例2.2有50個學(xué)生,要求將他們之中成績在80分以上者的學(xué)號和成績打印出來。第i個學(xué)生的學(xué)號為ni,成績?yōu)間i。Step1:1iStep2:若gi>=80,則打印ni和gi;否則不打印。Step3:i+1iStep4:若i<=50,返回Step2;否則,結(jié)束。

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院552.2簡單算法舉例例2.3判定2000—2500年中的每一年是否閏年,將結(jié)果輸出閏年的條件:能被4整除但不能被100整除的年份是閏年;能被400整除的年份是閏年。設(shè)year為被檢測的年份,算法如下: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é)束。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院562.2簡單算法舉例例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é)束?!?023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院572.2簡單算法舉例例2.4對于一個大于或等于3的正整數(shù),判斷是否為素數(shù)算法如下:S1:輸入n的值S2:i=2(i作為除數(shù))S3:n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,打印n“不是素數(shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1iS6:若i<=n1返回S3;否則打印n“是素數(shù)”,然后結(jié)束。S6步驟可改為:S6:若i<=返回S3;否則打印n“是素數(shù)”,然后結(jié)束。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院582.3算法的特性1.有窮性(要考慮合理的范圍內(nèi))2.確定性3.有零個或多個輸入4.有一個或多個輸出5.有效性2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院592.4怎樣表示一個算法自然語言傳統(tǒng)流程圖結(jié)構(gòu)化流程圖偽代碼2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院602.4.2用流程圖表示算法常用的流程圖符號起止框輸入輸出框判斷框處理框流程線連接點注釋框X>=0?打印x打印–xYN

2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院612.4.2用流程圖表示算法例2.6將例2.1求5!的算法用流程圖表示如下。開始1t2ititi+1ii>5?打印t結(jié)束NY2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院622.4.2用流程圖表示算法例2.7將例2.2的算法用流程圖表示如下。開始1ii+1igi80?打印ni,gi結(jié)束Ni>50?YNY2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院632.4.2用流程圖表示算法例2.8將例2.3的算法用流程圖表示如下。開始2000yy+1yy不能被4整除打印y“是閏年”結(jié)束Y>2500?y不能被100整除y不能被400整除打印y“不是閏年”打印y“是閏年”打印y“不是閏年”YYNNYNYN2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院642.4.2用流程圖表示算法例2.10將例2.5的算法用流程圖表示如下。i>

?開始i+1ir=0?打印n“是素數(shù)”結(jié)束2in/i的余數(shù)r打印n“不是素數(shù)”YNNY輸入n2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院652.4.3三種基本結(jié)構(gòu)和改進的流程圖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型2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院662.4.3三種基本結(jié)構(gòu)和改進的流程圖(3)循環(huán)結(jié)構(gòu)

Abp成立不成立a當(dāng)型While型Abp不成立成立a直到型Until型0xx<5?x+1x打印x值0xx>=5?x+1

x打印x值NYNY2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院672.4.3三種基本結(jié)構(gòu)和改進的流程圖三種基本結(jié)構(gòu)的共同特點:(1)只有一個入口(2)只有一個出口(3)結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行(4)結(jié)構(gòu)內(nèi)不存在“死循環(huán)”ABabABbp成立不成立Abp成立不成立aaAB死循環(huán)三種基本結(jié)構(gòu)可解決任何復(fù)雜的問題2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院682.4.4用N-S流程圖表示算法N-S(I.Nassi&B.Shneiderman)流程圖的基本符號其中A或B框可以是簡單操作,也可以是三種結(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.06AB2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院692.4.4用N-S流程圖表示算法例2.111t2ititi+1i直到i>5打印t例2.121i打印ni,gii+1i直到i>50gi80是否2023/2/5云南師范大學(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.132023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院712.4.4用N-S流程圖表示算法例2.15開始i+1ir=0?打印n“是素數(shù)”結(jié)束2in/i的余數(shù)ri>

?打印n“不是素數(shù)”YNNY輸入n開始i+1ir=0?

輸出n“是素數(shù)”結(jié)束0w

2in/i的余數(shù)ri和

w=0YNYN輸入n1ww=0

輸出n“不是素數(shù)”YN2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院722.4.4用N-S流程圖表示算法例2.15開始i+1ir=0?

輸出n“是素數(shù)”結(jié)束0w

2in/i的余數(shù)ri和

w=0YNYN輸入n1ww=0

輸出n“不是素數(shù)”YN輸出n“是素數(shù)”1w輸入n0ww=02in/i的余數(shù)rr=0是否i+1i直到i>或w0輸出n“不是素數(shù)”是否2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院732.4.5用偽代碼表示算法2.4.6用計算機語言表示算法#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;}2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院742.5結(jié)構(gòu)化程序設(shè)計方法(1)自頂向下;(2)逐步細(xì)化(3)模塊化設(shè)計;(4)結(jié)構(gòu)化編碼工作報告當(dāng)前問題前一階段工作對策工廠概況………………………………………………………………頂層設(shè)計第二層設(shè)計第三層設(shè)計2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院75第3章最簡單的C程序設(shè)計

——順序程序設(shè)計3.1順序程序設(shè)計舉例P37_383.2數(shù)據(jù)的表現(xiàn)形式及其運算3.2.1常量和變量1.常量在程序運行過程中,其值不能被改變的量。(1)整型常量(2)實型常量(3)字符常量(4)字符串常量(5)符號常量2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院761.常量(1)整型常量十進制整數(shù)。八進制整數(shù)。以0開頭。如0123、–011。十六進制整數(shù)。以0x開頭。如0x123、–0x12。(2)實型常量十進制小數(shù)形式指數(shù)形式形式:12.34e3、-1.23E-72023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院771.常量(3)字符常量普通字符,用單撇號括起來的字符。如'a','D','1','?','$'。此為源程序級的表示,例如c='a';若在計算機中表示,則為其ASCII碼的二進制。注意ASCII表的規(guī)律,空字符、空格字符轉(zhuǎn)義字符:以字符\開頭的字符序列。例如'\n'2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院78轉(zhuǎn)義字符字符形式\n\t\b\r\f\\\'\"\ooo\xhh含義換行水平制表退格回車換頁字符\字符'字符"1~3位8進制所代表的字符1~2位16進制所代表的字符ASCII代碼109813129239342023/2/5云南師范大學(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

kfgde2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院80(4)字符串常量字符串常量是一對雙引號括起來的字符序列。例如:"Howdoyoudo","abc","a""a"與'a'的不同。字符串常量在內(nèi)存中的存放。例如"CHINA"CHINA\02023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院81(5)符號常量例符號常量的使用

#definePRICE30intmain(){intnum,total;num=10;total=num*PRICE;printf("Total=%d",total);return0;}符號常量的作用:(1)含義清楚(2)便于修改intmain(){intnum,total;num=10;total=num*30;printf("Total=%d",total);return0;}2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院822.變量其值可以改變的量稱為變量。源程序中變量有一個名字。程序運行時對應(yīng)內(nèi)存相應(yīng)的存儲單元(地址)。C語言中變量:“先定義,后使用”。便于保證(1)變量使用的正確性;(2)為其分配合適的單元;(3)變量進行運算的正確性。a123變量名變量值對應(yīng)單元地址存儲單元2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院833.常變量constinta=3;在該變量存在期間其值不能改變。與變量的異同?與常量的異同?與符號常量的異同?2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院844.標(biāo)識符標(biāo)識符(identifier):用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、類型名、文件名的有效字符序列。有效標(biāo)識符:只能由字母、數(shù)字、下劃線組成,且第一個字符必須為字母或下劃線。注1:C語言中大、小寫字母是有區(qū)別的。注2:標(biāo)識符的長度(各個C編譯系統(tǒng)自己的規(guī)定)。注3:形象的標(biāo)識符。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院853.2.2數(shù)據(jù)類型所謂類型,就是對數(shù)據(jù)分配存儲單元的安排,包括存儲單元的長度以及數(shù)據(jù)的存儲形式。數(shù)據(jù)類型基本類型整型(int)字符型(char)實型(浮點型)枚舉類型單精度型(float)雙精度型(double)指針類型空類型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院863.2.3整型數(shù)據(jù)1.整型數(shù)據(jù)的分類(1)基本整型

inti;//int型數(shù)據(jù)單元為2個字節(jié)或4個字節(jié)

i=10;數(shù)值是以補碼表示的。例如

–10的補碼。0000000000001010i20002001i的地址為2000000000000000101010的原碼1111111111110101按位取反1111111111110110再加12023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院871.整型數(shù)據(jù)的分類基本整型:int短整型:shortint或short長整型:longint或

long雙長整型:longlongintsizeof(short)≤sizeof(int)≤sizeof(long)≤sizeof(longlong)2.整型變量的符號屬性表3.2ANSI標(biāo)準(zhǔn)定義的整數(shù)類型[signed]intunsignedint[signed]short[int]unsignedshort[int][signed]long[int]unsignedlong[int]比特數(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)2023/2/5云南師范大學(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;}運行結(jié)果為:32767,-32768說明:(2)用%u格式輸出無符號數(shù)據(jù)。01111111111111111000000000000000ab2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院893.2.4字符型數(shù)據(jù)1.字符與字符代碼字符按ASCII碼形式存儲字符'1'與整數(shù)1的不同:1+1=?'1'+'1'=?2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院903.2.4字符型數(shù)據(jù)2.字符變量charc1,c2;c1='a';c2='b';字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法字符在內(nèi)存中以二進制形式存放其對應(yīng)的ASCII碼!例向字符變量賦以整數(shù)。main(){charc1,c2;c1=97;c2=98;//等價于c1='a';c2='b';printf("%c%c\n",c1,c2);printf("%d%d\n",c1,c2);}97c198c201100001c101100010c22023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院91例大小寫字母的轉(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);2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院923.2.5浮點型數(shù)據(jù)實型數(shù)據(jù)在內(nèi)存中的存放形式——是以指數(shù)形式存放在存儲單元中的。指數(shù)形式:123e3、123E3規(guī)范化的指數(shù)形式:1.23e5、1.23000e+05例:將5.25在內(nèi)存存放。5.25=(101.01)2=1.010122.實型變量的分類+.0101+00000010系數(shù)部分?jǐn)?shù)符系數(shù)部分小數(shù)指數(shù)類型floatdoublelongdouble比特數(shù)3264128有效數(shù)字61519數(shù)值范圍(±)1.2×

1038~3.4×

1038(±)

2.3×

10308~1.7×

10308(±)

3.4×

104932~1.1×

1049322023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院933.2.6怎樣確定常量的類型(1)整型常量在某類型的取值范圍內(nèi)即可。或:可在整數(shù)的末尾加L或l。(2)浮點型常量實型常量都是雙精度浮點型常量?;颍嚎稍趯崝?shù)的末尾加F或f,L或l。例:floatf=3.14159;floatf=3.14159f;longdoublea=1.23L;2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院943.2.7運算符和表達式1.基本的算術(shù)運算符+、–、*、/、%注意:(1)兩個整數(shù)相除的結(jié)果為整數(shù)。若至少有一個運算數(shù)為實數(shù),則算術(shù)運算的結(jié)果為雙精度實數(shù)。例:1/2為0,1.0/2等于0.5(2)+、–還可為單目運算符。3.算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院952.自增自減運算符++i,––ii++,i––j=++i;j=i++;注1.自增自減運算符,只能作用于變量,而不能用于常量或表達式。5++、(a+b)++不合法。注2.自增自減運算符的結(jié)合方向“自右至左”例如(1)–i++(參見TurboC程序)

(2)i=3;j=(++i)+(++i)+(++i);2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院962023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院974.各類數(shù)值型數(shù)據(jù)間的混合運算10+'a'+1.5-8765.1234*'b'(系統(tǒng)自動進行轉(zhuǎn)換)5.強制類型轉(zhuǎn)換運算符:

(類型)(表達式)(int)3.14、(float)1doublefloatlongunsignedintchar,short高低2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院986.C運算符(1)算術(shù)運算符(+—*/%++––)

(2)關(guān)系運算符(><==>=<=!=)

(3)邏輯運算符(!&&||)

(4)位運算符(<<>>~|^&)

(5)賦值運算符(=及其擴展賦值運算符)

(6)條件運算符(?:)

(7)逗號運算符(,)

(8)指針運算符(*和&)

(9)求字節(jié)數(shù)運算符(sizeof)

(10)強制類型轉(zhuǎn)換運算符((類型))

(11)成員運算符(.—>)

(12)下標(biāo)運算符([])

(13)其他(如函數(shù)調(diào)用運算符())2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院993.3C語句3.3.1C語句的作用和分類源程序文件1C程序局部變量聲明源程序文件2源程序文件n預(yù)處理命令全局變量聲明函數(shù)1函數(shù)首部函數(shù)n函數(shù)體執(zhí)行語句…………2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1003.3.1C語句的作用和分類(1)控制語句if()…else…(條件語句)for()…(循環(huán)語句)while()…(循環(huán)語句)do…while()(循環(huán)語句)continue(結(jié)束本次循環(huán)語句)break(終止執(zhí)行switch或循環(huán)語句)switch(多分支選擇語句)return(從函數(shù)返回語句)goto(轉(zhuǎn)向語句)2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1013.3.1C語句的作用和分類(2)函數(shù)調(diào)用語句

printf("ThisisaCstatement.");(3)表達式語句

a=3;x+y;(4)空語句;(5)復(fù)合語句

{……}2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1023.3.2最基本的語句——賦值語句例3.4給出三角形的三邊長,求三角形面積。解題思路、編寫程序、程序分析(略)。注意數(shù)學(xué)函數(shù)及'\t'的應(yīng)用。賦值運算符:=例如:a=3;k=i*j;其作用?2.復(fù)合的賦值運算符:+=、*=、%=、……a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3一般地:v=vopexp(此處v為變量,exp為表達式,op為運算符)等價于vop=exp目的:簡化程序提高效率2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1033.3.2最基本的語句——賦值語句3.賦值表達式:

整個作為一個表達式有此概念后,就可以理解并實現(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)變量=表達式2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1044.賦值過程中的類型轉(zhuǎn)換賦值運算符兩側(cè)的數(shù)據(jù)類型不一致時,賦值運算符右端的表達式計算結(jié)果要轉(zhuǎn)換為賦值運算符左端變量的類型。注意:表達式的值是否超過變量所屬類型的取值范圍。

實型數(shù)據(jù)整型變量取整數(shù)部分,但注意范圍(1)實型變量整型數(shù)據(jù)以浮點形式存儲(2)double數(shù)據(jù)float變量取7位有效數(shù)字,但注意范圍(3)double變量float數(shù)據(jù)有效位數(shù)擴展char數(shù)據(jù)整型變量字符數(shù)據(jù)送到整型變量低8位但注意符號擴展(4)char變量整型數(shù)據(jù)取低8位(5)2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1056.變量賦初值inta=3;floatf=3.56;charc='a';inta,b,c=5;相當(dāng)于inta,b,c;c=5;2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1063.4數(shù)據(jù)的輸入輸出標(biāo)準(zhǔn)輸入輸出函數(shù):putchar()、getchar()、printf()、scanf()、puts()、gets()#include<stdio.h>2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1073.4.1字符數(shù)據(jù)的輸入輸出1.putchar函數(shù)(字符輸出函數(shù))putchar函數(shù)的功能是向終端輸出一個字符。一般形式:putchar(表達式)先計算表達式之值,然后在終端輸出其ASCII碼為該值的字符。例如:chara='B';putchar(a);putchar('O');putchar('Y');putchar('\n');putchar('A');putchar('A'+1);此時在屏幕上輸出:BOYAB2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1083.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))getchar函數(shù)的功能是從終端(實際上是從輸入緩沖區(qū))讀入一個字符。一般形式:getchar()例3.9從鍵盤輸入BOY3個字符,然后把它們輸出到屏幕。#include<stdio.h>intmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);putchar('\n');return0;}注意程序運行過程中的輸入。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1093.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))getchar函數(shù)的功能是從終端(實際上是從輸入緩沖區(qū))讀入一個字符。getchar()將輸入緩沖區(qū)下一個可讀字符的字符值作為函數(shù)值返回。注1.getchar()從輸入緩沖區(qū)讀入下一個可讀字符后(例如右圖中b),再下一個字符成為下一個可讀字符(右圖中c)注2.若當(dāng)前輸入緩沖區(qū)可讀字符為空(例如程序開始時,或輸入緩沖區(qū)字符被讀完后——例如上圖讀完換行符后),getchar將等待用戶從鍵盤向緩沖區(qū)輸入數(shù)據(jù),直到輸入一行字符(鍵入后),才開始讀輸入緩沖區(qū)(此時剛輸入的第一個字符為下一個可讀字符)。剛輸入的一行字符同時顯示在屏幕上。abc123下一個可讀字符輸入緩沖區(qū)2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1103.4.1字符數(shù)據(jù)的輸入輸出2.getchar函數(shù)(字符輸入函數(shù))補充1:getch()函數(shù)——直接讀鍵盤(而不是讀輸入緩沖區(qū),也就不必理會輸入緩沖區(qū)是否為空),此時該函數(shù)等待用戶從鍵盤輸入一個字符,當(dāng)用戶按任一鍵后(不必為),getch()將該字符作為函數(shù)值返回。注意:為執(zhí)行g(shù)etch()函數(shù)而在鍵盤上鍵入的字符不顯示在屏幕上。該函數(shù)常常用來響應(yīng)用戶是否敲擊鍵盤。補充2:getche()函數(shù),基本同getch();只是為執(zhí)行g(shù)etche()函數(shù)而在鍵盤上鍵入的字符顯示在屏幕上。2023/2/5云南師范大學(xué)數(shù)學(xué)學(xué)院1113.4.2格式輸入輸出1.printf函數(shù)(格式輸出函數(shù))printf()的功能是向終端輸出若干個任意類型(格式)的數(shù)據(jù)。一般形式:printf(參數(shù)1,參數(shù)2,參數(shù)3…

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論