




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、項目1l技能目標技能目標l知識目標知識目標l項目任務(wù)與解析項目任務(wù)與解析l 主要內(nèi)容主要內(nèi)容1.1 1.1 任務(wù)任務(wù)1: 1: 用輸入輸出函數(shù)初步設(shè)計項目菜單用輸入輸出函數(shù)初步設(shè)計項目菜單1.2 1.2 必備知識與理論必備知識與理論1.3 1.3 擴展知識與理論擴展知識與理論1.4 1.4 運行程序的步驟和方法運行程序的步驟和方法1. 問題描述問題描述現(xiàn)在我們要開發(fā)一套用于班級成績管理的程序,該系統(tǒng)現(xiàn)在我們要開發(fā)一套用于班級成績管理的程序,該系統(tǒng)的功能包括:的功能包括: 信息輸入信息輸入 成績計算成績計算 分類匯總分類匯總 成績單制作成績單制作2. 具體實現(xiàn)具體實現(xiàn) P1-P2程序3. 知識分
2、析知識分析 選擇C語言作為程序的開發(fā)語言,就要了解這種語言都有哪些特點,語言的特征、語言的運行環(huán)境等。程序是按照一定的順序安排的工作步驟。程序是按照一定的順序安排的工作步驟。程序要需要用某種形式(語言)來描述。例如,程序要需要用某種形式(語言)來描述。例如,用算盤進行計算,程序是用口訣描述的,珠算的用算盤進行計算,程序是用口訣描述的,珠算的語言是口訣?,F(xiàn)代計算機的程序則是用計算機程語言是口訣?,F(xiàn)代計算機的程序則是用計算機程序設(shè)計語言來描述的。序設(shè)計語言來描述的。1. 機器語言機器語言一種一種CPU的指令系統(tǒng),也稱該的指令系統(tǒng),也稱該CPU的機器語言,的機器語言,它是該它是該CPU可以識別的一組
3、由可以識別的一組由0和和1序列構(gòu)成的指序列構(gòu)成的指令碼。令碼。這種程序雖然可以被機器直接理解和執(zhí)行,卻由這種程序雖然可以被機器直接理解和執(zhí)行,卻由于它們不直觀,難記、難認、難理解、不易查錯,于它們不直觀,難記、難認、難理解、不易查錯,只能被少數(shù)專業(yè)人員掌握,同時編寫程序的效率只能被少數(shù)專業(yè)人員掌握,同時編寫程序的效率很低,質(zhì)量難以保證。很低,質(zhì)量難以保證。2. 匯編語言匯編語言用一些用一些“助記符號助記符號”來代替來代替0,1碼編程。碼編程。這種用助記符號描述的指令系統(tǒng),稱為符號語言或匯編語言。這種用助記符號描述的指令系統(tǒng),稱為符號語言或匯編語言。用匯編語言編程,程序的生產(chǎn)效率及質(zhì)量都有所提高
4、。但是用匯編語言編程,程序的生產(chǎn)效率及質(zhì)量都有所提高。但是匯編語言指令是機器不能直接識別、理解和執(zhí)行的。用它編匯編語言指令是機器不能直接識別、理解和執(zhí)行的。用它編寫的程序經(jīng)檢查無誤后,要先翻譯成機器語言程序才能被機寫的程序經(jīng)檢查無誤后,要先翻譯成機器語言程序才能被機器理解、執(zhí)行。這個翻譯轉(zhuǎn)換過程稱為器理解、執(zhí)行。這個翻譯轉(zhuǎn)換過程稱為“匯編匯編”。匯編后得。匯編后得到的機器語言程序稱為目標程序到的機器語言程序稱為目標程序(object program),匯編以,匯編以前的程序,稱為源程序前的程序,稱為源程序(source program)。由于匯編語言。由于匯編語言指令與機器語言指令基本上具有一
5、一對應(yīng)的關(guān)系,所以匯編指令與機器語言指令基本上具有一一對應(yīng)的關(guān)系,所以匯編語言源程序的匯編可以由匯編系統(tǒng)以查表的方式進行。語言源程序的匯編可以由匯編系統(tǒng)以查表的方式進行。匯編語言與機器語言,都是依匯編語言與機器語言,都是依CPU的不同而異,它們都稱為的不同而異,它們都稱為面向機器的語言。用面向機器的語言編程,可以編出效率極面向機器的語言。用面向機器的語言編程,可以編出效率極高的程序。但是程序員用它們編程時,不僅要考慮解題思路,高的程序。但是程序員用它們編程時,不僅要考慮解題思路,還要熟悉機器的內(nèi)部結(jié)構(gòu),并且要還要熟悉機器的內(nèi)部結(jié)構(gòu),并且要“手工手工”地進行存儲器分地進行存儲器分配。配。2. 高
6、級語言高級語言高級語言使用接近人類自然語言的、但又消除了自然高級語言使用接近人類自然語言的、但又消除了自然語言中的二義性的語言來描述程序。這些高級語言使語言中的二義性的語言來描述程序。這些高級語言使人們開始擺脫進行程序設(shè)計必須先熟悉機器的桎梏,人們開始擺脫進行程序設(shè)計必須先熟悉機器的桎梏,把精力集中于解題思路和方法上。把精力集中于解題思路和方法上。用高級語言編寫的程序稱為用高級語言編寫的程序稱為“源程序源程序”。通常有解釋。通常有解釋方式和編譯方式兩種方法在計算機上執(zhí)行源程序。方式和編譯方式兩種方法在計算機上執(zhí)行源程序。解釋方式,即讓計算機運行解釋程序,解釋程序逐句解釋方式,即讓計算機運行解釋
7、程序,解釋程序逐句取出源程序中的語句,對它作解釋執(zhí)行,輸入數(shù)據(jù),取出源程序中的語句,對它作解釋執(zhí)行,輸入數(shù)據(jù),產(chǎn)生結(jié)果。其優(yōu)點是計算機與人的交互性好,調(diào)試程產(chǎn)生結(jié)果。其優(yōu)點是計算機與人的交互性好,調(diào)試程序時,能一邊執(zhí)行一邊直接改錯,能較快得到一個正序時,能一邊執(zhí)行一邊直接改錯,能較快得到一個正確的程序。缺點是逐句解釋執(zhí)行,運行速度慢。確的程序。缺點是逐句解釋執(zhí)行,運行速度慢。編譯方式,即先運行編譯程序,從源程序一次翻譯產(chǎn)編譯方式,即先運行編譯程序,從源程序一次翻譯產(chǎn)生計算機可直接執(zhí)行的二進制程序生計算機可直接執(zhí)行的二進制程序(稱為目標程序稱為目標程序);然;然后讓計算機執(zhí)行目標程序,輸入數(shù)據(jù),
8、產(chǎn)生結(jié)果。其后讓計算機執(zhí)行目標程序,輸入數(shù)據(jù),產(chǎn)生結(jié)果。其優(yōu)點是計算機運行目標程序快,缺點是修改源程序后優(yōu)點是計算機運行目標程序快,缺點是修改源程序后必須重新編譯以產(chǎn)生新的目標程序。必須重新編譯以產(chǎn)生新的目標程序。 現(xiàn)在也有將上述兩種方式結(jié)合起來的,即先編譯源程序,產(chǎn)生計算機還是不能直接執(zhí)行的中間代碼,然后讓解釋程序解釋執(zhí)行中間代碼。如Java程序,這樣做的好處首先是比直接解釋執(zhí)行快;更大的好處是中間代碼獨立于計算機,只要有相應(yīng)的解釋程序,就可在任何計算機上運行。 1.分析問題、建立模型分析問題、建立模型一般來說,一個具體的問題要涉及許許多多的方面,一般來說,一個具體的問題要涉及許許多多的方面
9、,這是問題的復(fù)雜性所在。為了便于求解,往往要忽這是問題的復(fù)雜性所在。為了便于求解,往往要忽略一些次要方面。這種通過忽略次要方面,而找出略一些次要方面。這種通過忽略次要方面,而找出解題規(guī)律,就稱為建立模型。解題規(guī)律,就稱為建立模型。2. 表現(xiàn)模型表現(xiàn)模型表現(xiàn)模型就是用一種符號表現(xiàn)模型就是用一種符號-語言系統(tǒng)來描述模型。模語言系統(tǒng)來描述模型。模型的表現(xiàn)會隨著對問題抽象程度的加深和細化,不型的表現(xiàn)會隨著對問題抽象程度的加深和細化,不斷由領(lǐng)域特色向計算機可解釋、執(zhí)行靠近,中間也斷由領(lǐng)域特色向計算機可解釋、執(zhí)行靠近,中間也可能采用一些其他的符號系統(tǒng),如流程圖等,直到可能采用一些其他的符號系統(tǒng),如流程圖等
10、,直到最后用一種計算機程序設(shè)計語言描述出來。最后用一種計算機程序設(shè)計語言描述出來。3. 源程序的編寫源程序的編寫源程序的編輯就是在某種字處理環(huán)境下,用具體的源程序的編輯就是在某種字處理環(huán)境下,用具體的程序設(shè)計語言書寫并修改的過程。為此就要掌握一程序設(shè)計語言書寫并修改的過程。為此就要掌握一種計算機程序設(shè)計語言。種計算機程序設(shè)計語言。4. 程序的編譯與鏈接程序的編譯與鏈接寫出一個高級語言程序后,并不是就可以立即寫出一個高級語言程序后,并不是就可以立即拿來執(zhí)行。要讓機器直接執(zhí)行,還要將它翻譯拿來執(zhí)行。要讓機器直接執(zhí)行,還要將它翻譯成由機器可以直接辨認并可以執(zhí)行的機器語言成由機器可以直接辨認并可以執(zhí)行
11、的機器語言程序。程序。第第1步步:將源程序文件翻譯成:將源程序文件翻譯成0、1碼表示的信碼表示的信息,并用相應(yīng)的目標程序文件保存。由源文件息,并用相應(yīng)的目標程序文件保存。由源文件翻譯成目標文件的過程稱為編譯。在編譯過程翻譯成目標文件的過程稱為編譯。在編譯過程中,還要對源程序中的語法和邏輯結(jié)構(gòu)進行檢中,還要對源程序中的語法和邏輯結(jié)構(gòu)進行檢查。編譯任務(wù)是由稱做編譯器(查。編譯任務(wù)是由稱做編譯器(compiler)的)的軟件完成的。目標程序文件還不能被執(zhí)行,它軟件完成的。目標程序文件還不能被執(zhí)行,它們只是一些目標程序模塊。們只是一些目標程序模塊。第第2步步:將目標程序模塊以及程序所需的系統(tǒng)中固有的:
12、將目標程序模塊以及程序所需的系統(tǒng)中固有的目標程序模塊(如執(zhí)行輸入輸出操作的模塊)鏈接成一目標程序模塊(如執(zhí)行輸入輸出操作的模塊)鏈接成一個完整的程序。經(jīng)正確鏈接所生成的文件才是可執(zhí)行文個完整的程序。經(jīng)正確鏈接所生成的文件才是可執(zhí)行文件。完成鏈接過程的軟件稱為鏈接器(件。完成鏈接過程的軟件稱為鏈接器(linker)。)。程序在編譯、鏈接過程中,也可能發(fā)現(xiàn)錯誤。這時要重程序在編譯、鏈接過程中,也可能發(fā)現(xiàn)錯誤。這時要重新進入編輯器進行編輯。新進入編輯器進行編輯。5. 程序的測試與調(diào)試程序的測試與調(diào)試經(jīng)編譯、鏈接的程序文件,生成可經(jīng)編譯、鏈接的程序文件,生成可執(zhí)行文件,就可以讓計算機執(zhí)行了。執(zhí)行文件,
13、就可以讓計算機執(zhí)行了。因此,每一個人編寫出一個程序后,因此,每一個人編寫出一個程序后,在正式交付使用前,總要測試一下。在正式交付使用前,總要測試一下。測試是以程序通過編譯、沒有語法測試是以程序通過編譯、沒有語法和鏈接上的錯誤為前提,目的是找和鏈接上的錯誤為前提,目的是找出程序中可能存在的錯誤并加以改出程序中可能存在的錯誤并加以改正。正。C語言在語言在1978年由美國電話電報公司年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)貝爾實驗室正式發(fā)表。表。由美國國家標準學(xué)會由美國國家標準學(xué)會(ANSI)在制定了一個在制定了一個C語言標準,于語言標準,于1989年發(fā)表,通常稱之為年發(fā)表,通常稱之
14、為ANSI C(簡稱簡稱“C89”)。國際化標準組織在國際化標準組織在1990年制定的年制定的C標準,通常稱為標準,通常稱為“C90”。從從1995年開始,國際化標準組織著手對年開始,國際化標準組織著手對C標準作全面的修訂,標準作全面的修訂,并于并于1999年形成正式的年形成正式的C語言標準,簡稱語言標準,簡稱“C99”。既有高級語言的程序思想與設(shè)計方法,又有低級語既有高級語言的程序思想與設(shè)計方法,又有低級語言的操作能力。所以它也被稱為言的操作能力。所以它也被稱為“中級語言中級語言”;結(jié)構(gòu)化的體系結(jié)構(gòu)。層次清晰,便于按模塊化方式結(jié)構(gòu)化的體系結(jié)構(gòu)。層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維
15、護;組織程序,易于調(diào)試和維護;處理能力上,不僅具有豐富的運算符和數(shù)據(jù)類型,處理能力上,不僅具有豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)??梢灾苯釉L問內(nèi)存便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。可以直接訪問內(nèi)存的物理地址。的物理地址。在可移植性上可以方便地移植到不同的軟、硬件環(huán)在可移植性上可以方便地移植到不同的軟、硬件環(huán)境中境中代碼效率高。代碼效率高。啟動啟動Microsoft Visual C+ 6.0。新建項目新建項目 。新建文件。新建文件。編輯程序。編輯程序。編譯并運行程序。編譯并運行程序。C語言程序的部件是函數(shù)。語言程序的部件是函數(shù)。例例1.1 一個輸出一串字符的一個輸出一串字符的C程序程
16、序。# include int main(void) printf(Hello,World!n); /* 輸出一串字符輸出一串字符 */ return 0;1. 主函數(shù)主函數(shù)這里這里是一個函數(shù)。這個函數(shù)的名字為是一個函數(shù)。這個函數(shù)的名字為“main”。這個名字是專用的,表。這個名字是專用的,表示這個函數(shù)是示這個函數(shù)是“主函數(shù)主函數(shù)”。所謂主。所謂主函數(shù),就是執(zhí)行這個程序時,由操函數(shù),就是執(zhí)行這個程序時,由操作系統(tǒng)直接調(diào)用的函數(shù)。每一個作系統(tǒng)直接調(diào)用的函數(shù)。每一個C語言程序必須也只能有一個主函數(shù)。語言程序必須也只能有一個主函數(shù)。 int main (void)2. 函數(shù)參數(shù)函數(shù)參數(shù)函數(shù)名后面的圓
17、括號用于表示參數(shù)。一函數(shù)名后面的圓括號用于表示參數(shù)。一般說來,用函數(shù)進行計算,需要給定參般說來,用函數(shù)進行計算,需要給定參數(shù)。在數(shù)。在C語言程序中,參數(shù)部分寫為語言程序中,參數(shù)部分寫為“void”,表示該函數(shù)沒有參數(shù),只執(zhí)行,表示該函數(shù)沒有參數(shù),只執(zhí)行一個過程。一個過程。3. 函數(shù)體函數(shù)體一對花括號中的部分稱為函數(shù)體,用來一對花括號中的部分稱為函數(shù)體,用來表明該函數(shù)的功能是如何實現(xiàn)的。通常,表明該函數(shù)的功能是如何實現(xiàn)的。通常,函數(shù)體用一些語句表述。函數(shù)體用一些語句表述。C語言規(guī)定語語言規(guī)定語句必須用分號結(jié)束。句必須用分號結(jié)束。4. 函數(shù)值的類型函數(shù)值的類型函數(shù)名前面的函數(shù)名前面的“int”表明
18、函數(shù)的返回值是一個整數(shù)。有的表明函數(shù)的返回值是一個整數(shù)。有的操作系統(tǒng)操作系統(tǒng)(如如Unix)要求在執(zhí)行一個程序后應(yīng)向系統(tǒng)返回一要求在執(zhí)行一個程序后應(yīng)向系統(tǒng)返回一個整數(shù)值,如程序正常執(zhí)行和結(jié)束,應(yīng)返回個整數(shù)值,如程序正常執(zhí)行和結(jié)束,應(yīng)返回0,否則返回,否則返回一個非一個非0值。因此,需要將值。因此,需要將main函數(shù)指定為函數(shù)指定為int(整型整型),同,同時在函數(shù)體的最后寫一返回語句:時在函數(shù)體的最后寫一返回語句: return 0; 它的功能是向調(diào)用者它的功能是向調(diào)用者(操作系統(tǒng)操作系統(tǒng))返回返回0值,表示主函數(shù)正值,表示主函數(shù)正常結(jié)束常結(jié)束(也就是程序正常結(jié)束也就是程序正常結(jié)束)。此語句必
19、須寫在函數(shù)體的。此語句必須寫在函數(shù)體的最后一行才有意義,因為只要執(zhí)行到這條語句,就表達最后一行才有意義,因為只要執(zhí)行到這條語句,就表達程序正常結(jié)束,向操作系統(tǒng)返回一個程序正常結(jié)束,向操作系統(tǒng)返回一個0,如果程序未執(zhí)行,如果程序未執(zhí)行到這個返回語句就非正常結(jié)束了,就不會向操作系統(tǒng)返到這個返回語句就非正常結(jié)束了,就不會向操作系統(tǒng)返回回0。操作系統(tǒng)會據(jù)此作出相應(yīng)的處理。操作系統(tǒng)會據(jù)此作出相應(yīng)的處理。有的操作系統(tǒng)有的操作系統(tǒng)(如如DOS,Windows)并無程序必須返回整并無程序必須返回整數(shù)的要求,因此,可以不指定數(shù)的要求,因此,可以不指定main函數(shù)為整型。這時可函數(shù)為整型。這時可在在main函數(shù)的
20、前面加上函數(shù)的前面加上void,如,如 void main(void) 或或 void main()5. 與處理命令與處理命令 # include 是一種在程序編譯之前要處理的內(nèi)容,稱為編是一種在程序編譯之前要處理的內(nèi)容,稱為編譯預(yù)處理命令。編譯預(yù)處理命令都用譯預(yù)處理命令。編譯預(yù)處理命令都用“#”開頭,開頭,并且不用分號結(jié)束,所以不是并且不用分號結(jié)束,所以不是C語言的語句。這語言的語句。這里的編譯預(yù)處理命令稱為文件包含命令,它的作里的編譯預(yù)處理命令稱為文件包含命令,它的作用是在編譯之前把程序中需要使用關(guān)于系統(tǒng)定義用是在編譯之前把程序中需要使用關(guān)于系統(tǒng)定義的函數(shù)的函數(shù)printf()的一些信息文
21、件()的一些信息文件stdio.h包含進包含進來。用來。用“.h”作為后綴的文件稱為頭文件。作為后綴的文件稱為頭文件。6. 程序注釋程序注釋“/* */”中的文字用于做一些說明或注釋,讓中的文字用于做一些說明或注釋,讓讀程序的人容易讀懂。讀程序的人容易讀懂。例例1-2 求階乘求階乘f(n)=n!#include int f(int); /*聲明將要使用的函數(shù)聲明將要使用的函數(shù)f()*/int main(void) int p;/*聲明將要使用的變量聲明將要使用的變量p是整型的是整型的*/ p= f (5);/*調(diào)用調(diào)用f()進行計算,并將結(jié)果賦給變量進行計算,并將結(jié)果賦給變量p*/ print
22、f(“5!=%d”,p);/*輸出變量輸出變量p*/ return 0;int f(int n)/*函數(shù)函數(shù)fb()的定義的定義*/ int i,j;/*定義變量定義變量i,j*/ j=1; for(i=1;i=n;i+)/*計算計算n!*/ j=j*i; return j;/*返回返回n!的值的值*/說明說明(1)圖)圖1-3表明了該程序的執(zhí)行過程。表明了該程序的執(zhí)行過程。圖圖1-3 程序的執(zhí)行過程程序的執(zhí)行過程 操作系統(tǒng)ex1_2.exe操作系統(tǒng)調(diào)用main()返回操作系統(tǒng)main ()p = f(5);printf(“5!=%d”,p);return 0;編譯系統(tǒng)提供庫函數(shù)printf
23、進行輸出結(jié)果f(int n) f o r ( i = 1 ; i = n ; + + i )j=j*i;return j;將5傳遞給n計算j返回j的值到調(diào)用處7. 變量及其類型變量及其類型本例中的本例中的p、i、j都稱為變量。變量是程序中被命名的數(shù)都稱為變量。變量是程序中被命名的數(shù)據(jù)實體,并且它的值是可以改變的。同時,為了便于計據(jù)實體,并且它的值是可以改變的。同時,為了便于計算與存儲,算與存儲,C語言中程序中所使用的每個數(shù)據(jù)都被規(guī)范化語言中程序中所使用的每個數(shù)據(jù)都被規(guī)范化了。這種數(shù)據(jù)的規(guī)范稱為數(shù)據(jù)類型。了。這種數(shù)據(jù)的規(guī)范稱為數(shù)據(jù)類型。 本例中使用語句本例中使用語句 int p; 和和 int
24、i,j; 的作用就是聲明了兩個變量的作用就是聲明了兩個變量p和和i,j名字和類型(用名字和類型(用“int”表明它們是整型數(shù)據(jù))。變量在使用之前都要先行聲明。表明它們是整型數(shù)據(jù))。變量在使用之前都要先行聲明。8. 函數(shù)的聲明函數(shù)的聲明 本例中的本例中的 int f(int,int ); 稱為函數(shù)聲明。函數(shù)聲明的作用是讓編譯器知稱為函數(shù)聲明。函數(shù)聲明的作用是讓編譯器知道該函數(shù)的原型(包括返回類型、參數(shù)個數(shù)和類道該函數(shù)的原型(包括返回類型、參數(shù)個數(shù)和類型,以便對調(diào)用語句進行語法檢查。如果定義在型,以便對調(diào)用語句進行語法檢查。如果定義在調(diào)用前,從定義可以直接獲得這些信息,就可以調(diào)用前,從定義可以直接
25、獲得這些信息,就可以不寫聲明。不寫聲明。對于編譯系統(tǒng)提供的庫函數(shù),它們的定義不在程對于編譯系統(tǒng)提供的庫函數(shù),它們的定義不在程序中,因此需要給出相應(yīng)的原型聲明。為了方便序中,因此需要給出相應(yīng)的原型聲明。為了方便使用,系統(tǒng)把某些類型的庫函數(shù)的原型聲明寫在使用,系統(tǒng)把某些類型的庫函數(shù)的原型聲明寫在某個頭文件中,程序員只要把要求的頭文件用文某個頭文件中,程序員只要把要求的頭文件用文件包含語句寫在程序中函數(shù)調(diào)用之前,就等于把件包含語句寫在程序中函數(shù)調(diào)用之前,就等于把原型聲明寫在了函數(shù)調(diào)用之前。這就是使用函數(shù)原型聲明寫在了函數(shù)調(diào)用之前。這就是使用函數(shù)printf(),必須在其前寫一條(),必須在其前寫一條
26、#include 的原因。的原因。9. 關(guān)于關(guān)于printf()函數(shù)的參數(shù)函數(shù)的參數(shù) printf()函數(shù)的參數(shù)有兩部分:前面的用雙引號引起函數(shù)的參數(shù)有兩部分:前面的用雙引號引起的部分稱為的部分稱為“控制串控制串”??刂拼梢恍┳址M成,。控制串由一些字符組成,這些字符可以分成兩類:第一類字符可以直接顯示這些字符可以分成兩類:第一類字符可以直接顯示出來,第二類字符作為格式說明符使用。或者說,出來,第二類字符作為格式說明符使用?;蛘哒f,除了格式說明符之外的字符,都是可以直接顯示的。除了格式說明符之外的字符,都是可以直接顯示的。格式說明符是由格式說明符是由“%”開頭,后面跟著的是格式碼。開頭,后面
27、跟著的是格式碼。本例中的本例中的“d”就是格式碼,它后面輸出的數(shù)據(jù)按照就是格式碼,它后面輸出的數(shù)據(jù)按照帶符號十進制輸出。帶符號十進制輸出。10. 關(guān)于賦值運算關(guān)于賦值運算 在在C語言中,符號語言中,符號“=”稱為賦值運算符,它的作用是把后稱為賦值運算符,它的作用是把后面(右面)的值,送到其前(左面)的變量(左值)中。面(右面)的值,送到其前(左面)的變量(左值)中。一定不要將其當(dāng)作是等號。在一定不要將其當(dāng)作是等號。在C語言中,等號是語言中,等號是“=”。例例1-3 計算一個數(shù)的余弦值的計算一個數(shù)的余弦值的C語言程序。語言程序。#include /*包含標準庫函數(shù)包含標準庫函數(shù)*/#includ
28、e /*包含數(shù)學(xué)庫函數(shù)包含數(shù)學(xué)庫函數(shù)*/int main(void) /*主函數(shù)主函數(shù)*/ /*函數(shù)開頭函數(shù)開頭*/ double x,s; /*定義兩個實型變量,被后面程序使用定義兩個實型變量,被后面程序使用*/ printf(input number:n);/*顯示提示信息顯示提示信息*/ scanf(%lf,&x); /*從鍵盤輸入一個實數(shù)從鍵盤輸入一個實數(shù)x*/ s=cos(x);/*求求x的余弦,并把它賦給變量的余弦,并把它賦給變量s*/ printf(cos of %lf is %lfn,x,s); /*輸出程序結(jié)果輸出程序結(jié)果*/ return 0;/*函數(shù)結(jié)尾函數(shù)結(jié)尾*
29、/11. C語言源程序的書寫要求語言源程序的書寫要求源程序通常使用小寫字母,只有符號常量或其它特源程序通常使用小寫字母,只有符號常量或其它特殊用途的符號才大寫;殊用途的符號才大寫;不使用行號,通常按語句順序執(zhí)行;不使用行號,通常按語句順序執(zhí)行;用分號作為語句的結(jié)束符,不可省略用分號作為語句的結(jié)束符,不可省略(即便是最后一即便是最后一個語句也不能省略個語句也不能省略)。但預(yù)處理命令,函數(shù)頭和花括。但預(yù)處理命令,函數(shù)頭和花括號號“”之后不能加分號;之后不能加分號;可以一個語句占一行,也可多個語句占一行可以一個語句占一行,也可多個語句占一行(此時要此時要用分號分隔各個語句用分號分隔各個語句);不指定
30、語句在一行中的起始位置。但建議同一層次不指定語句在一行中的起始位置。但建議同一層次的語句應(yīng)左對齊;的語句應(yīng)左對齊;用大括號對用大括號對“”表示各個結(jié)構(gòu)層次的范圍??梢员肀硎靖鱾€結(jié)構(gòu)層次的范圍??梢员硎竞瘮?shù)、也可表示循環(huán)體等;示函數(shù)、也可表示循環(huán)體等;一個語句中不同成份之間應(yīng)使用空格隔開。標識符,一個語句中不同成份之間應(yīng)使用空格隔開。標識符,關(guān)鍵字之間必須至少加一個空格以示間隔。若已有關(guān)鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔;明顯的間隔符,也可不再加空格來間隔;程序中的空白行不影響程序的執(zhí)行,可以為了程序程序中的空白行不影響程序的執(zhí)行,可以為了程序清晰而加上
31、。但不要在一個語句中間加空行;清晰而加上。但不要在一個語句中間加空行;建議多使用注釋信息,以增加程序的可讀性;建議多使用注釋信息,以增加程序的可讀性;源程序中可以有預(yù)處理命令源程序中可以有預(yù)處理命令(include 命令僅為其中命令僅為其中的一種的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的,預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。最前面。12. C語言的字符語言的字符字符是組成語言的最基本的元素。字符是組成語言的最基本的元素。C語語言字符集由字母,數(shù)字,空格,標點和言字符集由字母,數(shù)字,空格,標點和特殊字符組成。在字符常量,字符串常特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢
32、字或其它可表量和注釋中還可以使用漢字或其它可表示的圖形符號。示的圖形符號。 函數(shù)定義的一般形式為:函數(shù)定義的一般形式為: 函數(shù)返回值類型函數(shù)返回值類型 函數(shù)名函數(shù)名(參數(shù)表參數(shù)表) 數(shù)據(jù)說明部分數(shù)據(jù)說明部分; 執(zhí)行語句部分執(zhí)行語句部分; 函數(shù)名與參數(shù)說明部分通稱為函數(shù)說明部分。函數(shù)名與參數(shù)說明部分通稱為函數(shù)說明部分。 一對大括號中間所包含的全部內(nèi)容叫做函數(shù)體。一對大括號中間所包含的全部內(nèi)容叫做函數(shù)體。在在C99中,基本的語句有表達式語句、流程控制中,基本的語句有表達式語句、流程控制語句和塊語句。語句和塊語句。1. 表達式語句表達式語句C語言程序的具體計算過程是由表達式完成的。語言程序的具體計算
33、過程是由表達式完成的。表達式是由運算符(如上述表達式是由運算符(如上述+,=等)、變量等)、變量(如上述(如上述p,i,j等)和常量成。前面使用過的等)和常量成。前面使用過的 p = f(5) j = j * i x=cos(x) 都是表達式。表達式加上語句結(jié)束符(分號)都是表達式。表達式加上語句結(jié)束符(分號)就構(gòu)成表達式語句。就構(gòu)成表達式語句。變量和常量的使用涉及它們的數(shù)據(jù)類型、表示變量和常量的使用涉及它們的數(shù)據(jù)類型、表示(命名)規(guī)則等。(命名)規(guī)則等。C語言中的運算符種類很多,正確地使用這些運算符,有語言中的運算符種類很多,正確地使用這些運算符,有三點需要注意:三點需要注意:含義。特別要區(qū)
34、分一個運算符符號在含義。特別要區(qū)分一個運算符符號在C語言中和在普通數(shù)語言中和在普通數(shù)學(xué)中的意義的不同。如學(xué)中的意義的不同。如“=”。優(yōu)先級,即在一個表達式中存在多個運算符時,進行運優(yōu)先級,即在一個表達式中存在多個運算符時,進行運算的先后順序。算的先后順序。結(jié)合性,即在一個表達式中有多個優(yōu)先級別相同的運算結(jié)合性,即在一個表達式中有多個優(yōu)先級別相同的運算符時,先進行哪個運算符的運算。例如,在表達式符時,先進行哪個運算符的運算。例如,在表達式2*3/5(在(在C語言中,語言中,“*”為乘運算符。為乘運算符?!?”為除運算符)中,為除運算符)中,先進行除呢,還是先進行乘。在這個表達式中,好像對先進行除
35、呢,還是先進行乘。在這個表達式中,好像對運算結(jié)果沒有影響,但有時是有影響的運算結(jié)果沒有影響,但有時是有影響的。2. 流程控制語句流程控制語句一般說來,程序中的語句是按照書寫順序執(zhí)行的。但是,一般說來,程序中的語句是按照書寫順序執(zhí)行的。但是,有些情況下,需要改變默認的執(zhí)行順序,例如像圖有些情況下,需要改變默認的執(zhí)行順序,例如像圖1.10(a)那樣要從兩個或多個語句中挑選一個語句執(zhí)行,或)那樣要從兩個或多個語句中挑選一個語句執(zhí)行,或者像圖者像圖1.10(b)那樣要重復(fù)執(zhí)行某一個語句或語句塊。)那樣要重復(fù)執(zhí)行某一個語句或語句塊。前者稱為選擇控制,后者稱為重復(fù)控制。前者稱為選擇控制,后者稱為重復(fù)控制。
36、條件語句是否條件語句1語句2是否 (a)選擇結(jié)構(gòu))選擇結(jié)構(gòu) (b)重復(fù)結(jié)構(gòu))重復(fù)結(jié)構(gòu) 圖圖1-4 兩種基本的流程控制結(jié)構(gòu)兩種基本的流程控制結(jié)構(gòu)3. 塊語句塊語句 塊語句也稱為復(fù)合語句,就是用一對花括號將一組語句塊語句也稱為復(fù)合語句,就是用一對花括號將一組語句括起來。在一個塊語句中可以包括若干聲明和若干語句。括起來。在一個塊語句中可以包括若干聲明和若干語句。在例在例1.8的函數(shù)的函數(shù)sigma()中,中,while下面的用花括號括起的下面的用花括號括起的兩個語句,就組成一個塊語句。塊語句在語法上相當(dāng)于兩個語句,就組成一個塊語句。塊語句在語法上相當(dāng)于一條語句。因此,當(dāng)語法上需要一個語句,而一個語句
37、一條語句。因此,當(dāng)語法上需要一個語句,而一個語句又不能滿足需要時,就必須使用塊語句。又不能滿足需要時,就必須使用塊語句。 1. 標識符標識符 標識符也稱為名稱。變量的名字、函數(shù)的名字、文件的標識符也稱為名稱。變量的名字、函數(shù)的名字、文件的名字等。在名字等。在C語言程序中,所使用的標識符應(yīng)當(dāng)符合如下語言程序中,所使用的標識符應(yīng)當(dāng)符合如下的詞法規(guī)則:的詞法規(guī)則:標識符是大小寫字母、數(shù)字和下劃線組成的序列,但不標識符是大小寫字母、數(shù)字和下劃線組成的序列,但不能以數(shù)字開頭。能以數(shù)字開頭。C語言區(qū)別同一字母的大小寫。語言區(qū)別同一字母的大小寫。C89要求要求C編譯器能識別的標識符長度為不少于編譯器能識別的
38、標識符長度為不少于31個有效個有效字符,字符,C99要求要求C編譯器能識別的標識符長度為不少于編譯器能識別的標識符長度為不少于63個有效字符。一個標識符中超過了這個長度的字符可能個有效字符。一個標識符中超過了這個長度的字符可能會不被辨認。會不被辨認。2. 關(guān)鍵字關(guān)鍵字普通標識符不能使用對于系統(tǒng)有特殊意義的名稱。這些普通標識符不能使用對于系統(tǒng)有特殊意義的名稱。這些對系統(tǒng)有特殊意義的名稱稱為關(guān)鍵字。對系統(tǒng)有特殊意義的名稱稱為關(guān)鍵字。auto_Boolbreakcasechar_Complexconstcontinuedefaultdodoubleelseenumexternfloatforgoto
39、if_ImaginaryinlineintlongregisterrestrictreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhileC99關(guān)鍵字關(guān)鍵字 3. 3. 聲明聲明 在程序中,有許多東西是需要系統(tǒng)為其開辟存儲空在程序中,有許多東西是需要系統(tǒng)為其開辟存儲空間的,例如變量、函數(shù)類型定義等。它們都有自己的名字,并且間的,例如變量、函數(shù)類型定義等。它們都有自己的名字,并且要在內(nèi)存中獨立存儲,為此可以將它們稱做程序?qū)嶓w。那么,如要在內(nèi)存中獨立存儲,為此可以將它們稱做程序?qū)嶓w。那么,如何建立它
40、們的名字與實體之間的關(guān)聯(lián)呢?這就是聲明的作用。何建立它們的名字與實體之間的關(guān)聯(lián)呢?這就是聲明的作用。聲明也稱為說明,它的作用非常重要,包括如下一些:聲明也稱為說明,它的作用非常重要,包括如下一些: 告訴編譯器,一個名字是與哪個實體聯(lián)系,不告訴編譯器,一個名字是與哪個實體聯(lián)系,不能張冠李戴。能張冠李戴。 告訴編譯器,也要程序員明白這個實體的類型。告訴編譯器,也要程序員明白這個實體的類型。 告訴編譯器,這個實體什么時候建立?在什么告訴編譯器,這個實體什么時候建立?在什么范圍內(nèi)可以使用?范圍內(nèi)可以使用? 前面已經(jīng)使用過了變量和函數(shù)的聲明。所以前面已經(jīng)使用過了變量和函數(shù)的聲明。所以 int p;int
41、 p; 就是建立變量名就是建立變量名pp與它的實體之間的關(guān)聯(lián)。與它的實體之間的關(guān)聯(lián)。1. 變量變量 變量(變量(variable)是一種程序?qū)嶓w。它具有一個值,并且)是一種程序?qū)嶓w。它具有一個值,并且這個值是可以通過程序操作改變的。這個值是可以通過程序操作改變的。2. 變量的賦值運算變量的賦值運算 在在C語言中,符號語言中,符號“=”稱為賦值運算符,它連接了左右兩稱為賦值運算符,它連接了左右兩個操作數(shù)個操作數(shù)(即運算量即運算量):右操作數(shù)也稱右值:右操作數(shù)也稱右值,可以是一個表可以是一個表達式,左操作數(shù)也稱左值(達式,左操作數(shù)也稱左值(lvalue),只能是變量。賦值),只能是變量。賦值操作的
42、過程是把右操作數(shù)的值先轉(zhuǎn)換成左操作數(shù)(變量)操作的過程是把右操作數(shù)的值先轉(zhuǎn)換成左操作數(shù)(變量)的類型,并把該值存放到左操作數(shù)(變量)中。例如的類型,并把該值存放到左操作數(shù)(變量)中。例如int a;a = 2.6;printf(“%d”,a);結(jié)果為結(jié)果為2這是因為計算機在執(zhí)行上述語句時,首先將這是因為計算機在執(zhí)行上述語句時,首先將2.6舍去小數(shù)部分舍去小數(shù)部分截尾(截尾(truncation)成整型,賦值給變量)成整型,賦值給變量a。應(yīng)當(dāng)注意,賦值運算符是應(yīng)當(dāng)注意,賦值運算符是“=”。這個符號不是等號。例如。這個符號不是等號。例如int a = 2, b = 3;a = a + b; 的操作
43、是把表達式的操作是把表達式a + b的值的值(2 + 3)送到(賦值給)變量送到(賦值給)變量a。即。即經(jīng)上述操作后,變量的經(jīng)上述操作后,變量的a的值由的值由2變?yōu)樽優(yōu)?。圖。圖1-5表明這一操作表明這一操作過程:先計算過程:先計算a + b的值,然后把這個結(jié)果送到變量的值,然后把這個結(jié)果送到變量a中。于是,中。于是,變量變量a的值由的值由2變?yōu)樽優(yōu)?。23aba + b235運算器圖圖1-5 a = a + b的操作過程的操作過程賦值運算符具有賦值運算符具有“自右至左自右至左” 的結(jié)合性,例如的結(jié)合性,例如int a = 0,b = 0,c = 0;a = b = c = 5 + 3;相當(dāng)于
44、相當(dāng)于int a,b,c;a = (b =(c = (5 + 3)); 即先計算把即先計算把5 + 3 的值,得的值,得8,賦值給變量,賦值給變量c;再把變量;再把變量c的值(的值(8)賦值給變量)賦值給變量b;最后把變量;最后把變量b的值(的值(8)賦值給)賦值給變量變量a。也就是說,從一個變量向另一個變量賦值后,原。也就是說,從一個變量向另一個變量賦值后,原來變量中的值并不會消失或改變。所以,賦值操作相當(dāng)來變量中的值并不會消失或改變。所以,賦值操作相當(dāng)于拷貝,而不是移動。于拷貝,而不是移動。 C語言中的算術(shù)運算符與普通數(shù)學(xué)中的算術(shù)運算符有如下一語言中的算術(shù)運算符與普通數(shù)學(xué)中的算術(shù)運算符有如
45、下一些不同。些不同。 運算符符號有所不同。運算符符號有所不同。 種類有所不同。種類有所不同。 結(jié)合性可能會破壞交換率。結(jié)合性可能會破壞交換率。1. C語言的基本算術(shù)運算符語言的基本算術(shù)運算符 下下表為表為C語言中的基本算術(shù)運算符及其說明語言中的基本算術(shù)運算符及其說明。運算符名稱運算對象功 能示例表達式示例值*乘任何兩個實數(shù)或整數(shù)求兩數(shù)之積5.5 * 4.022.000000/除任何實數(shù)或整數(shù),但右操作數(shù)不可為0求兩數(shù)之商4.5 / 50.900000%模兩個整數(shù),但右操作數(shù)不可為0求整除的余數(shù)13 % 85+加任何兩個實數(shù)或整數(shù)求兩數(shù)之和8 + 3.511.500000-減任何兩個實數(shù)或整數(shù)求
46、兩數(shù)之差10 - 4.65.400000C語言中的基本算術(shù)運算符及其說明語言中的基本算術(shù)運算符及其說明 說明:說明: (1)這幾個算術(shù)運算符的運算對象有兩個,所以也稱為)這幾個算術(shù)運算符的運算對象有兩個,所以也稱為雙目算術(shù)運算符。雙目算術(shù)運算符。 (2)這幾個算術(shù)運算符的優(yōu)先級別為:)這幾個算術(shù)運算符的優(yōu)先級別為:*、/、%高于高于+、-。并且它們都比賦值運算符的優(yōu)先級別高。所以,在一。并且它們都比賦值運算符的優(yōu)先級別高。所以,在一個表達式中有賦值運算符,也有算術(shù)運算符時,不使用個表達式中有賦值運算符,也有算術(shù)運算符時,不使用圓括號,可以先進行算術(shù)運算,后進行賦值運算。圓括號,可以先進行算術(shù)運
47、算,后進行賦值運算。 (3)這幾個算術(shù)運算符均為)這幾個算術(shù)運算符均為“自左至右自左至右”。 (4)需要特別注意的是整數(shù)除和模運算的結(jié)果都是整)需要特別注意的是整數(shù)除和模運算的結(jié)果都是整 數(shù)。數(shù)。 例例1-4 分析下面的程序的執(zhí)行結(jié)果。分析下面的程序的執(zhí)行結(jié)果。/* 文件名:文件名:ex010601.c */#include int main(void)printf (300 * 2 / 3 = %dn,300 * 2 / 3);printf (2 / 3 * 300 = %dn,2 / 3 * 300);return 0;觀察上面的程序,按照交換率,似乎它們的計算結(jié)果應(yīng)觀察上面的程序,按照交
48、換率,似乎它們的計算結(jié)果應(yīng)該相同。但是,非常遺憾!結(jié)果完全不同:該相同。但是,非常遺憾!結(jié)果完全不同:300 * 2 / 3 = 2002 / 3 * 300 = 0原因在于算術(shù)運算符具有自左至右的結(jié)合性,即對于第原因在于算術(shù)運算符具有自左至右的結(jié)合性,即對于第1個表達式語句,執(zhí)行的順序為:個表達式語句,執(zhí)行的順序為: 300 * 2 = 600,600 / 3 = 200 對于第對于第2個表達式語句,執(zhí)行的順序則為:個表達式語句,執(zhí)行的順序則為: 2 / 3 = 0(注意是整數(shù)相除),(注意是整數(shù)相除),0 * 300 = 0 因此,使用整數(shù)除,應(yīng)當(dāng)特別小心。因此,使用整數(shù)除,應(yīng)當(dāng)特別小心。2. 自反算術(shù)賦值運算符自反算術(shù)賦值運算符 前面介紹過這樣的賦值表達式:前面介紹過這樣的賦值表達式: a = a + b它的作用是將變量它的作用是將變量a的值加上變量的值加上變量b的值,再送回到變量的值,再送回到變量a中?;蛘咧小?/p>
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 邊緣計算與物聯(lián)網(wǎng)在智慧城市中的協(xié)同應(yīng)用-洞察闡釋
- 減震系統(tǒng)材料項目投資風(fēng)險評估報告
- 靜電測試儀項目投資風(fēng)險評估報告
- 鄉(xiāng)村旅游文化體驗的生態(tài)價值與可持續(xù)實踐研究-洞察闡釋
- 醫(yī)療服務(wù)中心項目實施方案(范文)
- 眼鏡店運營管理方案
- 多云環(huán)境容器編排方案-洞察闡釋
- 浙江東方職業(yè)技術(shù)學(xué)院《高等代數(shù)專題》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州科技學(xué)院《數(shù)字供應(yīng)鏈》2023-2024學(xué)年第二學(xué)期期末試卷
- 面向多領(lǐng)域知識的自然語言生成-洞察闡釋
- 徐凱文的心理創(chuàng)傷課:沖破內(nèi)心的至暗時刻
- 西方看兵團:兵團國際形象的塑造
- 陶瓷廠通風(fēng)除塵系統(tǒng)設(shè)計畢業(yè)設(shè)計論文
- GB/T 41837-2022溫泉服務(wù)溫泉水質(zhì)要求
- GBZ(衛(wèi)生) 49-2014職業(yè)性噪聲聾的診斷
- JJG 30-2012通用卡尺
- 2022年女性精致美學(xué)白皮書
- 文獻整理表格
- DBJ∕T 13-261-2017 福建省二次供水不銹鋼水池(箱)應(yīng)用技術(shù)規(guī)程
- GB∕T 16422.3-2022 塑料 實驗室光源暴露試驗方法 第3部分:熒光紫外燈
- 中國歷史地理復(fù)習(xí)資料
評論
0/150
提交評論