版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、項(xiàng)目1l技能目標(biāo)技能目標(biāo)l知識(shí)目標(biāo)知識(shí)目標(biāo)l項(xiàng)目任務(wù)與解析項(xiàng)目任務(wù)與解析l 主要內(nèi)容主要內(nèi)容1.1 1.1 任務(wù)任務(wù)1: 1: 用輸入輸出函數(shù)初步設(shè)計(jì)項(xiàng)目菜單用輸入輸出函數(shù)初步設(shè)計(jì)項(xiàng)目菜單1.2 1.2 必備知識(shí)與理論必備知識(shí)與理論1.3 1.3 擴(kuò)展知識(shí)與理論擴(kuò)展知識(shí)與理論1.4 1.4 運(yùn)行程序的步驟和方法運(yùn)行程序的步驟和方法1. 問題描述問題描述現(xiàn)在我們要開發(fā)一套用于班級(jí)成績管理的程序,該系統(tǒng)現(xiàn)在我們要開發(fā)一套用于班級(jí)成績管理的程序,該系統(tǒng)的功能包括:的功能包括: 信息輸入信息輸入 成績計(jì)算成績計(jì)算 分類匯總分類匯總 成績單制作成績單制作2. 具體實(shí)現(xiàn)具體實(shí)現(xiàn) P1-P2程序3. 知識(shí)分
2、析知識(shí)分析 選擇C語言作為程序的開發(fā)語言,就要了解這種語言都有哪些特點(diǎn),語言的特征、語言的運(yùn)行環(huán)境等。程序是按照一定的順序安排的工作步驟。程序是按照一定的順序安排的工作步驟。程序要需要用某種形式(語言)來描述。例如,程序要需要用某種形式(語言)來描述。例如,用算盤進(jìn)行計(jì)算,程序是用口訣描述的,珠算的用算盤進(jìn)行計(jì)算,程序是用口訣描述的,珠算的語言是口訣。現(xiàn)代計(jì)算機(jī)的程序則是用計(jì)算機(jī)程語言是口訣?,F(xiàn)代計(jì)算機(jī)的程序則是用計(jì)算機(jī)程序設(shè)計(jì)語言來描述的。序設(shè)計(jì)語言來描述的。1. 機(jī)器語言機(jī)器語言一種一種CPU的指令系統(tǒng),也稱該的指令系統(tǒng),也稱該CPU的機(jī)器語言,的機(jī)器語言,它是該它是該CPU可以識(shí)別的一組
3、由可以識(shí)別的一組由0和和1序列構(gòu)成的指序列構(gòu)成的指令碼。令碼。這種程序雖然可以被機(jī)器直接理解和執(zhí)行,卻由這種程序雖然可以被機(jī)器直接理解和執(zhí)行,卻由于它們不直觀,難記、難認(rèn)、難理解、不易查錯(cuò),于它們不直觀,難記、難認(rèn)、難理解、不易查錯(cuò),只能被少數(shù)專業(yè)人員掌握,同時(shí)編寫程序的效率只能被少數(shù)專業(yè)人員掌握,同時(shí)編寫程序的效率很低,質(zhì)量難以保證。很低,質(zhì)量難以保證。2. 匯編語言匯編語言用一些用一些“助記符號(hào)助記符號(hào)”來代替來代替0,1碼編程。碼編程。這種用助記符號(hào)描述的指令系統(tǒng),稱為符號(hào)語言或匯編語言。這種用助記符號(hào)描述的指令系統(tǒng),稱為符號(hào)語言或匯編語言。用匯編語言編程,程序的生產(chǎn)效率及質(zhì)量都有所提高
4、。但是用匯編語言編程,程序的生產(chǎn)效率及質(zhì)量都有所提高。但是匯編語言指令是機(jī)器不能直接識(shí)別、理解和執(zhí)行的。用它編匯編語言指令是機(jī)器不能直接識(shí)別、理解和執(zhí)行的。用它編寫的程序經(jīng)檢查無誤后,要先翻譯成機(jī)器語言程序才能被機(jī)寫的程序經(jīng)檢查無誤后,要先翻譯成機(jī)器語言程序才能被機(jī)器理解、執(zhí)行。這個(gè)翻譯轉(zhuǎn)換過程稱為器理解、執(zhí)行。這個(gè)翻譯轉(zhuǎn)換過程稱為“匯編匯編”。匯編后得。匯編后得到的機(jī)器語言程序稱為目標(biāo)程序到的機(jī)器語言程序稱為目標(biāo)程序(object program),匯編以,匯編以前的程序,稱為源程序前的程序,稱為源程序(source program)。由于匯編語言。由于匯編語言指令與機(jī)器語言指令基本上具有一
5、一對應(yīng)的關(guān)系,所以匯編指令與機(jī)器語言指令基本上具有一一對應(yīng)的關(guān)系,所以匯編語言源程序的匯編可以由匯編系統(tǒng)以查表的方式進(jìn)行。語言源程序的匯編可以由匯編系統(tǒng)以查表的方式進(jìn)行。匯編語言與機(jī)器語言,都是依匯編語言與機(jī)器語言,都是依CPU的不同而異,它們都稱為的不同而異,它們都稱為面向機(jī)器的語言。用面向機(jī)器的語言編程,可以編出效率極面向機(jī)器的語言。用面向機(jī)器的語言編程,可以編出效率極高的程序。但是程序員用它們編程時(shí),不僅要考慮解題思路,高的程序。但是程序員用它們編程時(shí),不僅要考慮解題思路,還要熟悉機(jī)器的內(nèi)部結(jié)構(gòu),并且要還要熟悉機(jī)器的內(nèi)部結(jié)構(gòu),并且要“手工手工”地進(jìn)行存儲(chǔ)器分地進(jìn)行存儲(chǔ)器分配。配。2. 高
6、級(jí)語言高級(jí)語言高級(jí)語言使用接近人類自然語言的、但又消除了自然高級(jí)語言使用接近人類自然語言的、但又消除了自然語言中的二義性的語言來描述程序。這些高級(jí)語言使語言中的二義性的語言來描述程序。這些高級(jí)語言使人們開始擺脫進(jìn)行程序設(shè)計(jì)必須先熟悉機(jī)器的桎梏,人們開始擺脫進(jìn)行程序設(shè)計(jì)必須先熟悉機(jī)器的桎梏,把精力集中于解題思路和方法上。把精力集中于解題思路和方法上。用高級(jí)語言編寫的程序稱為用高級(jí)語言編寫的程序稱為“源程序源程序”。通常有解釋。通常有解釋方式和編譯方式兩種方法在計(jì)算機(jī)上執(zhí)行源程序。方式和編譯方式兩種方法在計(jì)算機(jī)上執(zhí)行源程序。解釋方式,即讓計(jì)算機(jī)運(yùn)行解釋程序,解釋程序逐句解釋方式,即讓計(jì)算機(jī)運(yùn)行解釋
7、程序,解釋程序逐句取出源程序中的語句,對它作解釋執(zhí)行,輸入數(shù)據(jù),取出源程序中的語句,對它作解釋執(zhí)行,輸入數(shù)據(jù),產(chǎn)生結(jié)果。其優(yōu)點(diǎn)是計(jì)算機(jī)與人的交互性好,調(diào)試程產(chǎn)生結(jié)果。其優(yōu)點(diǎn)是計(jì)算機(jī)與人的交互性好,調(diào)試程序時(shí),能一邊執(zhí)行一邊直接改錯(cuò),能較快得到一個(gè)正序時(shí),能一邊執(zhí)行一邊直接改錯(cuò),能較快得到一個(gè)正確的程序。缺點(diǎn)是逐句解釋執(zhí)行,運(yùn)行速度慢。確的程序。缺點(diǎn)是逐句解釋執(zhí)行,運(yùn)行速度慢。編譯方式,即先運(yùn)行編譯程序,從源程序一次翻譯產(chǎn)編譯方式,即先運(yùn)行編譯程序,從源程序一次翻譯產(chǎn)生計(jì)算機(jī)可直接執(zhí)行的二進(jìn)制程序生計(jì)算機(jī)可直接執(zhí)行的二進(jìn)制程序(稱為目標(biāo)程序稱為目標(biāo)程序);然;然后讓計(jì)算機(jī)執(zhí)行目標(biāo)程序,輸入數(shù)據(jù),
8、產(chǎn)生結(jié)果。其后讓計(jì)算機(jī)執(zhí)行目標(biāo)程序,輸入數(shù)據(jù),產(chǎn)生結(jié)果。其優(yōu)點(diǎn)是計(jì)算機(jī)運(yùn)行目標(biāo)程序快,缺點(diǎn)是修改源程序后優(yōu)點(diǎn)是計(jì)算機(jī)運(yùn)行目標(biāo)程序快,缺點(diǎn)是修改源程序后必須重新編譯以產(chǎn)生新的目標(biāo)程序。必須重新編譯以產(chǎn)生新的目標(biāo)程序。 現(xiàn)在也有將上述兩種方式結(jié)合起來的,即先編譯源程序,產(chǎn)生計(jì)算機(jī)還是不能直接執(zhí)行的中間代碼,然后讓解釋程序解釋執(zhí)行中間代碼。如Java程序,這樣做的好處首先是比直接解釋執(zhí)行快;更大的好處是中間代碼獨(dú)立于計(jì)算機(jī),只要有相應(yīng)的解釋程序,就可在任何計(jì)算機(jī)上運(yùn)行。 1.分析問題、建立模型分析問題、建立模型一般來說,一個(gè)具體的問題要涉及許許多多的方面,一般來說,一個(gè)具體的問題要涉及許許多多的方面
9、,這是問題的復(fù)雜性所在。為了便于求解,往往要忽這是問題的復(fù)雜性所在。為了便于求解,往往要忽略一些次要方面。這種通過忽略次要方面,而找出略一些次要方面。這種通過忽略次要方面,而找出解題規(guī)律,就稱為建立模型。解題規(guī)律,就稱為建立模型。2. 表現(xiàn)模型表現(xiàn)模型表現(xiàn)模型就是用一種符號(hào)表現(xiàn)模型就是用一種符號(hào)-語言系統(tǒng)來描述模型。模語言系統(tǒng)來描述模型。模型的表現(xiàn)會(huì)隨著對問題抽象程度的加深和細(xì)化,不型的表現(xiàn)會(huì)隨著對問題抽象程度的加深和細(xì)化,不斷由領(lǐng)域特色向計(jì)算機(jī)可解釋、執(zhí)行靠近,中間也斷由領(lǐng)域特色向計(jì)算機(jī)可解釋、執(zhí)行靠近,中間也可能采用一些其他的符號(hào)系統(tǒng),如流程圖等,直到可能采用一些其他的符號(hào)系統(tǒng),如流程圖等
10、,直到最后用一種計(jì)算機(jī)程序設(shè)計(jì)語言描述出來。最后用一種計(jì)算機(jī)程序設(shè)計(jì)語言描述出來。3. 源程序的編寫源程序的編寫源程序的編輯就是在某種字處理環(huán)境下,用具體的源程序的編輯就是在某種字處理環(huán)境下,用具體的程序設(shè)計(jì)語言書寫并修改的過程。為此就要掌握一程序設(shè)計(jì)語言書寫并修改的過程。為此就要掌握一種計(jì)算機(jī)程序設(shè)計(jì)語言。種計(jì)算機(jī)程序設(shè)計(jì)語言。4. 程序的編譯與鏈接程序的編譯與鏈接寫出一個(gè)高級(jí)語言程序后,并不是就可以立即寫出一個(gè)高級(jí)語言程序后,并不是就可以立即拿來執(zhí)行。要讓機(jī)器直接執(zhí)行,還要將它翻譯拿來執(zhí)行。要讓機(jī)器直接執(zhí)行,還要將它翻譯成由機(jī)器可以直接辨認(rèn)并可以執(zhí)行的機(jī)器語言成由機(jī)器可以直接辨認(rèn)并可以執(zhí)行
11、的機(jī)器語言程序。程序。第第1步步:將源程序文件翻譯成:將源程序文件翻譯成0、1碼表示的信碼表示的信息,并用相應(yīng)的目標(biāo)程序文件保存。由源文件息,并用相應(yīng)的目標(biāo)程序文件保存。由源文件翻譯成目標(biāo)文件的過程稱為編譯。在編譯過程翻譯成目標(biāo)文件的過程稱為編譯。在編譯過程中,還要對源程序中的語法和邏輯結(jié)構(gòu)進(jìn)行檢中,還要對源程序中的語法和邏輯結(jié)構(gòu)進(jìn)行檢查。編譯任務(wù)是由稱做編譯器(查。編譯任務(wù)是由稱做編譯器(compiler)的)的軟件完成的。目標(biāo)程序文件還不能被執(zhí)行,它軟件完成的。目標(biāo)程序文件還不能被執(zhí)行,它們只是一些目標(biāo)程序模塊。們只是一些目標(biāo)程序模塊。第第2步步:將目標(biāo)程序模塊以及程序所需的系統(tǒng)中固有的:
12、將目標(biāo)程序模塊以及程序所需的系統(tǒng)中固有的目標(biāo)程序模塊(如執(zhí)行輸入輸出操作的模塊)鏈接成一目標(biāo)程序模塊(如執(zhí)行輸入輸出操作的模塊)鏈接成一個(gè)完整的程序。經(jīng)正確鏈接所生成的文件才是可執(zhí)行文個(gè)完整的程序。經(jīng)正確鏈接所生成的文件才是可執(zhí)行文件。完成鏈接過程的軟件稱為鏈接器(件。完成鏈接過程的軟件稱為鏈接器(linker)。)。程序在編譯、鏈接過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)要重程序在編譯、鏈接過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)要重新進(jìn)入編輯器進(jìn)行編輯。新進(jìn)入編輯器進(jìn)行編輯。5. 程序的測試與調(diào)試程序的測試與調(diào)試經(jīng)編譯、鏈接的程序文件,生成可經(jīng)編譯、鏈接的程序文件,生成可執(zhí)行文件,就可以讓計(jì)算機(jī)執(zhí)行了。執(zhí)行文件,
13、就可以讓計(jì)算機(jī)執(zhí)行了。因此,每一個(gè)人編寫出一個(gè)程序后,因此,每一個(gè)人編寫出一個(gè)程序后,在正式交付使用前,總要測試一下。在正式交付使用前,總要測試一下。測試是以程序通過編譯、沒有語法測試是以程序通過編譯、沒有語法和鏈接上的錯(cuò)誤為前提,目的是找和鏈接上的錯(cuò)誤為前提,目的是找出程序中可能存在的錯(cuò)誤并加以改出程序中可能存在的錯(cuò)誤并加以改正。正。C語言在語言在1978年由美國電話電報(bào)公司年由美國電話電報(bào)公司(AT&T)貝爾實(shí)驗(yàn)室正式發(fā)貝爾實(shí)驗(yàn)室正式發(fā)表。表。由美國國家標(biāo)準(zhǔn)學(xué)會(huì)由美國國家標(biāo)準(zhǔn)學(xué)會(huì)(ANSI)在制定了一個(gè)在制定了一個(gè)C語言標(biāo)準(zhǔn),于語言標(biāo)準(zhǔn),于1989年發(fā)表,通常稱之為年發(fā)表,通常稱之
14、為ANSI C(簡稱簡稱“C89”)。國際化標(biāo)準(zhǔn)組織在國際化標(biāo)準(zhǔn)組織在1990年制定的年制定的C標(biāo)準(zhǔn),通常稱為標(biāo)準(zhǔn),通常稱為“C90”。從從1995年開始,國際化標(biāo)準(zhǔn)組織著手對年開始,國際化標(biāo)準(zhǔn)組織著手對C標(biāo)準(zhǔn)作全面的修訂,標(biāo)準(zhǔn)作全面的修訂,并于并于1999年形成正式的年形成正式的C語言標(biāo)準(zhǔn),簡稱語言標(biāo)準(zhǔn),簡稱“C99”。既有高級(jí)語言的程序思想與設(shè)計(jì)方法,又有低級(jí)語既有高級(jí)語言的程序思想與設(shè)計(jì)方法,又有低級(jí)語言的操作能力。所以它也被稱為言的操作能力。所以它也被稱為“中級(jí)語言中級(jí)語言”;結(jié)構(gòu)化的體系結(jié)構(gòu)。層次清晰,便于按模塊化方式結(jié)構(gòu)化的體系結(jié)構(gòu)。層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維
15、護(hù);組織程序,易于調(diào)試和維護(hù);處理能力上,不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,處理能力上,不僅具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)??梢灾苯釉L問內(nèi)存便于實(shí)現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)??梢灾苯釉L問內(nèi)存的物理地址。的物理地址。在可移植性上可以方便地移植到不同的軟、硬件環(huán)在可移植性上可以方便地移植到不同的軟、硬件環(huán)境中境中代碼效率高。代碼效率高。啟動(dòng)啟動(dòng)Microsoft Visual C+ 6.0。新建項(xiàng)目新建項(xiàng)目 。新建文件。新建文件。編輯程序。編輯程序。編譯并運(yùn)行程序。編譯并運(yùn)行程序。C語言程序的部件是函數(shù)。語言程序的部件是函數(shù)。例例1.1 一個(gè)輸出一串字符的一個(gè)輸出一串字符的C程序程
16、序。# include int main(void) printf(Hello,World!n); /* 輸出一串字符輸出一串字符 */ return 0;1. 主函數(shù)主函數(shù)這里這里是一個(gè)函數(shù)。這個(gè)函數(shù)的名字為是一個(gè)函數(shù)。這個(gè)函數(shù)的名字為“main”。這個(gè)名字是專用的,表。這個(gè)名字是專用的,表示這個(gè)函數(shù)是示這個(gè)函數(shù)是“主函數(shù)主函數(shù)”。所謂主。所謂主函數(shù),就是執(zhí)行這個(gè)程序時(shí),由操函數(shù),就是執(zhí)行這個(gè)程序時(shí),由操作系統(tǒng)直接調(diào)用的函數(shù)。每一個(gè)作系統(tǒng)直接調(diào)用的函數(shù)。每一個(gè)C語言程序必須也只能有一個(gè)主函數(shù)。語言程序必須也只能有一個(gè)主函數(shù)。 int main (void)2. 函數(shù)參數(shù)函數(shù)參數(shù)函數(shù)名后面的圓
17、括號(hào)用于表示參數(shù)。一函數(shù)名后面的圓括號(hào)用于表示參數(shù)。一般說來,用函數(shù)進(jìn)行計(jì)算,需要給定參般說來,用函數(shù)進(jìn)行計(jì)算,需要給定參數(shù)。在數(shù)。在C語言程序中,參數(shù)部分寫為語言程序中,參數(shù)部分寫為“void”,表示該函數(shù)沒有參數(shù),只執(zhí)行,表示該函數(shù)沒有參數(shù),只執(zhí)行一個(gè)過程。一個(gè)過程。3. 函數(shù)體函數(shù)體一對花括號(hào)中的部分稱為函數(shù)體,用來一對花括號(hào)中的部分稱為函數(shù)體,用來表明該函數(shù)的功能是如何實(shí)現(xiàn)的。通常,表明該函數(shù)的功能是如何實(shí)現(xiàn)的。通常,函數(shù)體用一些語句表述。函數(shù)體用一些語句表述。C語言規(guī)定語語言規(guī)定語句必須用分號(hào)結(jié)束。句必須用分號(hào)結(jié)束。4. 函數(shù)值的類型函數(shù)值的類型函數(shù)名前面的函數(shù)名前面的“int”表明
18、函數(shù)的返回值是一個(gè)整數(shù)。有的表明函數(shù)的返回值是一個(gè)整數(shù)。有的操作系統(tǒng)操作系統(tǒng)(如如Unix)要求在執(zhí)行一個(gè)程序后應(yīng)向系統(tǒng)返回一要求在執(zhí)行一個(gè)程序后應(yīng)向系統(tǒng)返回一個(gè)整數(shù)值,如程序正常執(zhí)行和結(jié)束,應(yīng)返回個(gè)整數(shù)值,如程序正常執(zhí)行和結(jié)束,應(yīng)返回0,否則返回,否則返回一個(gè)非一個(gè)非0值。因此,需要將值。因此,需要將main函數(shù)指定為函數(shù)指定為int(整型整型),同,同時(shí)在函數(shù)體的最后寫一返回語句:時(shí)在函數(shù)體的最后寫一返回語句: return 0; 它的功能是向調(diào)用者它的功能是向調(diào)用者(操作系統(tǒng)操作系統(tǒng))返回返回0值,表示主函數(shù)正值,表示主函數(shù)正常結(jié)束常結(jié)束(也就是程序正常結(jié)束也就是程序正常結(jié)束)。此語句必
19、須寫在函數(shù)體的。此語句必須寫在函數(shù)體的最后一行才有意義,因?yàn)橹灰獔?zhí)行到這條語句,就表達(dá)最后一行才有意義,因?yàn)橹灰獔?zhí)行到這條語句,就表達(dá)程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)0,如果程序未執(zhí)行,如果程序未執(zhí)行到這個(gè)返回語句就非正常結(jié)束了,就不會(huì)向操作系統(tǒng)返到這個(gè)返回語句就非正常結(jié)束了,就不會(huì)向操作系統(tǒng)返回回0。操作系統(tǒng)會(huì)據(jù)此作出相應(yīng)的處理。操作系統(tǒng)會(huì)據(jù)此作出相應(yīng)的處理。有的操作系統(tǒng)有的操作系統(tǒng)(如如DOS,Windows)并無程序必須返回整并無程序必須返回整數(shù)的要求,因此,可以不指定數(shù)的要求,因此,可以不指定main函數(shù)為整型。這時(shí)可函數(shù)為整型。這時(shí)可在在main函數(shù)的
20、前面加上函數(shù)的前面加上void,如,如 void main(void) 或或 void main()5. 與處理命令與處理命令 # include 是一種在程序編譯之前要處理的內(nèi)容,稱為編是一種在程序編譯之前要處理的內(nèi)容,稱為編譯預(yù)處理命令。編譯預(yù)處理命令都用譯預(yù)處理命令。編譯預(yù)處理命令都用“#”開頭,開頭,并且不用分號(hào)結(jié)束,所以不是并且不用分號(hào)結(jié)束,所以不是C語言的語句。這語言的語句。這里的編譯預(yù)處理命令稱為文件包含命令,它的作里的編譯預(yù)處理命令稱為文件包含命令,它的作用是在編譯之前把程序中需要使用關(guān)于系統(tǒng)定義用是在編譯之前把程序中需要使用關(guān)于系統(tǒng)定義的函數(shù)的函數(shù)printf()的一些信息文
21、件()的一些信息文件stdio.h包含進(jìn)包含進(jìn)來。用來。用“.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()進(jìn)行計(jì)算,并將結(jié)果賦給變量進(jìn)行計(jì)算,并將結(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+)/*計(jì)算計(jì)算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、進(jìn)行輸出結(jié)果f(int n) f o r ( i = 1 ; i = n ; + + i )j=j*i;return j;將5傳遞給n計(jì)算j返回j的值到調(diào)用處7. 變量及其類型變量及其類型本例中的本例中的p、i、j都稱為變量。變量是程序中被命名的數(shù)都稱為變量。變量是程序中被命名的數(shù)據(jù)實(shí)體,并且它的值是可以改變的。同時(shí),為了便于計(jì)據(jù)實(shí)體,并且它的值是可以改變的。同時(shí),為了便于計(jì)算與存儲(chǔ),算與存儲(chǔ),C語言中程序中所使用的每個(gè)數(shù)據(jù)都被規(guī)范化語言中程序中所使用的每個(gè)數(shù)據(jù)都被規(guī)范化了。這種數(shù)據(jù)的規(guī)范稱為數(shù)據(jù)類型。了。這種數(shù)據(jù)的規(guī)范稱為數(shù)據(jù)類型。 本例中使用語句本例中使用語句 int p; 和和 int
24、i,j; 的作用就是聲明了兩個(gè)變量的作用就是聲明了兩個(gè)變量p和和i,j名字和類型(用名字和類型(用“int”表明它們是整型數(shù)據(jù))。變量在使用之前都要先行聲明。表明它們是整型數(shù)據(jù))。變量在使用之前都要先行聲明。8. 函數(shù)的聲明函數(shù)的聲明 本例中的本例中的 int f(int,int ); 稱為函數(shù)聲明。函數(shù)聲明的作用是讓編譯器知稱為函數(shù)聲明。函數(shù)聲明的作用是讓編譯器知道該函數(shù)的原型(包括返回類型、參數(shù)個(gè)數(shù)和類道該函數(shù)的原型(包括返回類型、參數(shù)個(gè)數(shù)和類型,以便對調(diào)用語句進(jìn)行語法檢查。如果定義在型,以便對調(diào)用語句進(jìn)行語法檢查。如果定義在調(diào)用前,從定義可以直接獲得這些信息,就可以調(diào)用前,從定義可以直接
25、獲得這些信息,就可以不寫聲明。不寫聲明。對于編譯系統(tǒng)提供的庫函數(shù),它們的定義不在程對于編譯系統(tǒng)提供的庫函數(shù),它們的定義不在程序中,因此需要給出相應(yīng)的原型聲明。為了方便序中,因此需要給出相應(yīng)的原型聲明。為了方便使用,系統(tǒng)把某些類型的庫函數(shù)的原型聲明寫在使用,系統(tǒng)把某些類型的庫函數(shù)的原型聲明寫在某個(gè)頭文件中,程序員只要把要求的頭文件用文某個(gè)頭文件中,程序員只要把要求的頭文件用文件包含語句寫在程序中函數(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ù)有兩部分:前面的用雙引號(hào)引起函數(shù)的參數(shù)有兩部分:前面的用雙引號(hào)引起的部分稱為的部分稱為“控制串控制串”。控制串由一些字符組成,??刂拼梢恍┳址M成,這些字符可以分成兩類:第一類字符可以直接顯示這些字符可以分成兩類:第一類字符可以直接顯示出來,第二類字符作為格式說明符使用?;蛘哒f,出來,第二類字符作為格式說明符使用?;蛘哒f,除了格式說明符之外的字符,都是可以直接顯示的。除了格式說明符之外的字符,都是可以直接顯示的。格式說明符是由格式說明符是由“%”開頭,后面跟著的是格式碼。開頭,后面
27、跟著的是格式碼。本例中的本例中的“d”就是格式碼,它后面輸出的數(shù)據(jù)按照就是格式碼,它后面輸出的數(shù)據(jù)按照帶符號(hào)十進(jìn)制輸出。帶符號(hào)十進(jìn)制輸出。10. 關(guān)于賦值運(yùn)算關(guān)于賦值運(yùn)算 在在C語言中,符號(hào)語言中,符號(hào)“=”稱為賦值運(yùn)算符,它的作用是把后稱為賦值運(yùn)算符,它的作用是把后面(右面)的值,送到其前(左面)的變量(左值)中。面(右面)的值,送到其前(左面)的變量(左值)中。一定不要將其當(dāng)作是等號(hào)。在一定不要將其當(dāng)作是等號(hào)。在C語言中,等號(hào)是語言中,等號(hào)是“=”。例例1-3 計(jì)算一個(gè)數(shù)的余弦值的計(jì)算一個(gè)數(shù)的余弦值的C語言程序。語言程序。#include /*包含標(biāo)準(zhǔn)庫函數(shù)包含標(biāo)準(zhǔn)庫函數(shù)*/#includ
28、e /*包含數(shù)學(xué)庫函數(shù)包含數(shù)學(xué)庫函數(shù)*/int main(void) /*主函數(shù)主函數(shù)*/ /*函數(shù)開頭函數(shù)開頭*/ double x,s; /*定義兩個(gè)實(shí)型變量,被后面程序使用定義兩個(gè)實(shí)型變量,被后面程序使用*/ printf(input number:n);/*顯示提示信息顯示提示信息*/ scanf(%lf,&x); /*從鍵盤輸入一個(gè)實(shí)數(shù)從鍵盤輸入一個(gè)實(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語言源程序的書寫要求語言源程序的書寫要求源程序通常使用小寫字母,只有符號(hào)常量或其它特源程序通常使用小寫字母,只有符號(hào)常量或其它特殊用途的符號(hào)才大寫;殊用途的符號(hào)才大寫;不使用行號(hào),通常按語句順序執(zhí)行;不使用行號(hào),通常按語句順序執(zhí)行;用分號(hào)作為語句的結(jié)束符,不可省略用分號(hào)作為語句的結(jié)束符,不可省略(即便是最后一即便是最后一個(gè)語句也不能省略個(gè)語句也不能省略)。但預(yù)處理命令,函數(shù)頭和花括。但預(yù)處理命令,函數(shù)頭和花括號(hào)號(hào)“”之后不能加分號(hào);之后不能加分號(hào);可以一個(gè)語句占一行,也可多個(gè)語句占一行可以一個(gè)語句占一行,也可多個(gè)語句占一行(此時(shí)要此時(shí)要用分號(hào)分隔各個(gè)語句用分號(hào)分隔各個(gè)語句);不指定
30、語句在一行中的起始位置。但建議同一層次不指定語句在一行中的起始位置。但建議同一層次的語句應(yīng)左對齊;的語句應(yīng)左對齊;用大括號(hào)對用大括號(hào)對“”表示各個(gè)結(jié)構(gòu)層次的范圍??梢员肀硎靖鱾€(gè)結(jié)構(gòu)層次的范圍??梢员硎竞瘮?shù)、也可表示循環(huán)體等;示函數(shù)、也可表示循環(huán)體等;一個(gè)語句中不同成份之間應(yīng)使用空格隔開。標(biāo)識(shí)符,一個(gè)語句中不同成份之間應(yīng)使用空格隔開。標(biāo)識(shí)符,關(guān)鍵字之間必須至少加一個(gè)空格以示間隔。若已有關(guān)鍵字之間必須至少加一個(gè)空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔;明顯的間隔符,也可不再加空格來間隔;程序中的空白行不影響程序的執(zhí)行,可以為了程序程序中的空白行不影響程序的執(zhí)行,可以為了程序清晰而加上
31、。但不要在一個(gè)語句中間加空行;清晰而加上。但不要在一個(gè)語句中間加空行;建議多使用注釋信息,以增加程序的可讀性;建議多使用注釋信息,以增加程序的可讀性;源程序中可以有預(yù)處理命令源程序中可以有預(yù)處理命令(include 命令僅為其中命令僅為其中的一種的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的,預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。最前面。12. C語言的字符語言的字符字符是組成語言的最基本的元素。字符是組成語言的最基本的元素。C語語言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。在字符常量,字符串常特殊字符組成。在字符常量,字符串常量和注釋中還可以使用漢
32、字或其它可表量和注釋中還可以使用漢字或其它可表示的圖形符號(hào)。示的圖形符號(hào)。 函數(shù)定義的一般形式為:函數(shù)定義的一般形式為: 函數(shù)返回值類型函數(shù)返回值類型 函數(shù)名函數(shù)名(參數(shù)表參數(shù)表) 數(shù)據(jù)說明部分?jǐn)?shù)據(jù)說明部分; 執(zhí)行語句部分執(zhí)行語句部分; 函數(shù)名與參數(shù)說明部分通稱為函數(shù)說明部分。函數(shù)名與參數(shù)說明部分通稱為函數(shù)說明部分。 一對大括號(hào)中間所包含的全部內(nèi)容叫做函數(shù)體。一對大括號(hào)中間所包含的全部內(nèi)容叫做函數(shù)體。在在C99中,基本的語句有表達(dá)式語句、流程控制中,基本的語句有表達(dá)式語句、流程控制語句和塊語句。語句和塊語句。1. 表達(dá)式語句表達(dá)式語句C語言程序的具體計(jì)算過程是由表達(dá)式完成的。語言程序的具體計(jì)算
33、過程是由表達(dá)式完成的。表達(dá)式是由運(yùn)算符(如上述表達(dá)式是由運(yùn)算符(如上述+,=等)、變量等)、變量(如上述(如上述p,i,j等)和常量成。前面使用過的等)和常量成。前面使用過的 p = f(5) j = j * i x=cos(x) 都是表達(dá)式。表達(dá)式加上語句結(jié)束符(分號(hào))都是表達(dá)式。表達(dá)式加上語句結(jié)束符(分號(hào))就構(gòu)成表達(dá)式語句。就構(gòu)成表達(dá)式語句。變量和常量的使用涉及它們的數(shù)據(jù)類型、表示變量和常量的使用涉及它們的數(shù)據(jù)類型、表示(命名)規(guī)則等。(命名)規(guī)則等。C語言中的運(yùn)算符種類很多,正確地使用這些運(yùn)算符,有語言中的運(yùn)算符種類很多,正確地使用這些運(yùn)算符,有三點(diǎn)需要注意:三點(diǎn)需要注意:含義。特別要區(qū)
34、分一個(gè)運(yùn)算符符號(hào)在含義。特別要區(qū)分一個(gè)運(yùn)算符符號(hào)在C語言中和在普通數(shù)語言中和在普通數(shù)學(xué)中的意義的不同。如學(xué)中的意義的不同。如“=”。優(yōu)先級(jí),即在一個(gè)表達(dá)式中存在多個(gè)運(yùn)算符時(shí),進(jìn)行運(yùn)優(yōu)先級(jí),即在一個(gè)表達(dá)式中存在多個(gè)運(yùn)算符時(shí),進(jìn)行運(yùn)算的先后順序。算的先后順序。結(jié)合性,即在一個(gè)表達(dá)式中有多個(gè)優(yōu)先級(jí)別相同的運(yùn)算結(jié)合性,即在一個(gè)表達(dá)式中有多個(gè)優(yōu)先級(jí)別相同的運(yùn)算符時(shí),先進(jìn)行哪個(gè)運(yùn)算符的運(yùn)算。例如,在表達(dá)式符時(shí),先進(jìn)行哪個(gè)運(yùn)算符的運(yùn)算。例如,在表達(dá)式2*3/5(在(在C語言中,語言中,“*”為乘運(yùn)算符。為乘運(yùn)算符。“/”為除運(yùn)算符)中,為除運(yùn)算符)中,先進(jìn)行除呢,還是先進(jìn)行乘。在這個(gè)表達(dá)式中,好像對先進(jìn)行除
35、呢,還是先進(jìn)行乘。在這個(gè)表達(dá)式中,好像對運(yùn)算結(jié)果沒有影響,但有時(shí)是有影響的運(yùn)算結(jié)果沒有影響,但有時(shí)是有影響的。2. 流程控制語句流程控制語句一般說來,程序中的語句是按照書寫順序執(zhí)行的。但是,一般說來,程序中的語句是按照書寫順序執(zhí)行的。但是,有些情況下,需要改變默認(rèn)的執(zhí)行順序,例如像圖有些情況下,需要改變默認(rèn)的執(zhí)行順序,例如像圖1.10(a)那樣要從兩個(gè)或多個(gè)語句中挑選一個(gè)語句執(zhí)行,或)那樣要從兩個(gè)或多個(gè)語句中挑選一個(gè)語句執(zhí)行,或者像圖者像圖1.10(b)那樣要重復(fù)執(zhí)行某一個(gè)語句或語句塊。)那樣要重復(fù)執(zhí)行某一個(gè)語句或語句塊。前者稱為選擇控制,后者稱為重復(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ù)合語句,就是用一對花括號(hào)將一組語句塊語句也稱為復(fù)合語句,就是用一對花括號(hào)將一組語句括起來。在一個(gè)塊語句中可以包括若干聲明和若干語句。括起來。在一個(gè)塊語句中可以包括若干聲明和若干語句。在例在例1.8的函數(shù)的函數(shù)sigma()中,中,while下面的用花括號(hào)括起的下面的用花括號(hào)括起的兩個(gè)語句,就組成一個(gè)塊語句。塊語句在語法上相當(dāng)于兩個(gè)語句,就組成一個(gè)塊語句。塊語句在語法上相當(dāng)于一條語句。因此,當(dāng)語法上需要一個(gè)語句,而一個(gè)語句
37、一條語句。因此,當(dāng)語法上需要一個(gè)語句,而一個(gè)語句又不能滿足需要時(shí),就必須使用塊語句。又不能滿足需要時(shí),就必須使用塊語句。 1. 標(biāo)識(shí)符標(biāo)識(shí)符 標(biāo)識(shí)符也稱為名稱。變量的名字、函數(shù)的名字、文件的標(biāo)識(shí)符也稱為名稱。變量的名字、函數(shù)的名字、文件的名字等。在名字等。在C語言程序中,所使用的標(biāo)識(shí)符應(yīng)當(dāng)符合如下語言程序中,所使用的標(biāo)識(shí)符應(yīng)當(dāng)符合如下的詞法規(guī)則:的詞法規(guī)則:標(biāo)識(shí)符是大小寫字母、數(shù)字和下劃線組成的序列,但不標(biāo)識(shí)符是大小寫字母、數(shù)字和下劃線組成的序列,但不能以數(shù)字開頭。能以數(shù)字開頭。C語言區(qū)別同一字母的大小寫。語言區(qū)別同一字母的大小寫。C89要求要求C編譯器能識(shí)別的標(biāo)識(shí)符長度為不少于編譯器能識(shí)別的
38、標(biāo)識(shí)符長度為不少于31個(gè)有效個(gè)有效字符,字符,C99要求要求C編譯器能識(shí)別的標(biāo)識(shí)符長度為不少于編譯器能識(shí)別的標(biāo)識(shí)符長度為不少于63個(gè)有效字符。一個(gè)標(biāo)識(shí)符中超過了這個(gè)長度的字符可能個(gè)有效字符。一個(gè)標(biāo)識(shí)符中超過了這個(gè)長度的字符可能會(huì)不被辨認(rèn)。會(huì)不被辨認(rèn)。2. 關(guān)鍵字關(guān)鍵字普通標(biāo)識(shí)符不能使用對于系統(tǒng)有特殊意義的名稱。這些普通標(biāo)識(shí)符不能使用對于系統(tǒng)有特殊意義的名稱。這些對系統(tǒng)有特殊意義的名稱稱為關(guān)鍵字。對系統(tǒng)有特殊意義的名稱稱為關(guān)鍵字。auto_Boolbreakcasechar_Complexconstcontinuedefaultdodoubleelseenumexternfloatforgoto
39、if_ImaginaryinlineintlongregisterrestrictreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhileC99關(guān)鍵字關(guān)鍵字 3. 3. 聲明聲明 在程序中,有許多東西是需要系統(tǒng)為其開辟存儲(chǔ)空在程序中,有許多東西是需要系統(tǒng)為其開辟存儲(chǔ)空間的,例如變量、函數(shù)類型定義等。它們都有自己的名字,并且間的,例如變量、函數(shù)類型定義等。它們都有自己的名字,并且要在內(nèi)存中獨(dú)立存儲(chǔ),為此可以將它們稱做程序?qū)嶓w。那么,如要在內(nèi)存中獨(dú)立存儲(chǔ),為此可以將它們稱做程序?qū)嶓w。那么,如何建立它
40、們的名字與實(shí)體之間的關(guān)聯(lián)呢?這就是聲明的作用。何建立它們的名字與實(shí)體之間的關(guān)聯(lián)呢?這就是聲明的作用。聲明也稱為說明,它的作用非常重要,包括如下一些:聲明也稱為說明,它的作用非常重要,包括如下一些: 告訴編譯器,一個(gè)名字是與哪個(gè)實(shí)體聯(lián)系,不告訴編譯器,一個(gè)名字是與哪個(gè)實(shí)體聯(lián)系,不能張冠李戴。能張冠李戴。 告訴編譯器,也要程序員明白這個(gè)實(shí)體的類型。告訴編譯器,也要程序員明白這個(gè)實(shí)體的類型。 告訴編譯器,這個(gè)實(shí)體什么時(shí)候建立?在什么告訴編譯器,這個(gè)實(shí)體什么時(shí)候建立?在什么范圍內(nèi)可以使用?范圍內(nèi)可以使用? 前面已經(jīng)使用過了變量和函數(shù)的聲明。所以前面已經(jīng)使用過了變量和函數(shù)的聲明。所以 int p;int
41、 p; 就是建立變量名就是建立變量名pp與它的實(shí)體之間的關(guān)聯(lián)。與它的實(shí)體之間的關(guān)聯(lián)。1. 變量變量 變量(變量(variable)是一種程序?qū)嶓w。它具有一個(gè)值,并且)是一種程序?qū)嶓w。它具有一個(gè)值,并且這個(gè)值是可以通過程序操作改變的。這個(gè)值是可以通過程序操作改變的。2. 變量的賦值運(yùn)算變量的賦值運(yùn)算 在在C語言中,符號(hào)語言中,符號(hào)“=”稱為賦值運(yùn)算符,它連接了左右兩稱為賦值運(yùn)算符,它連接了左右兩個(gè)操作數(shù)個(gè)操作數(shù)(即運(yùn)算量即運(yùn)算量):右操作數(shù)也稱右值:右操作數(shù)也稱右值,可以是一個(gè)表可以是一個(gè)表達(dá)式,左操作數(shù)也稱左值(達(dá)式,左操作數(shù)也稱左值(lvalue),只能是變量。賦值),只能是變量。賦值操作的
42、過程是把右操作數(shù)的值先轉(zhuǎn)換成左操作數(shù)(變量)操作的過程是把右操作數(shù)的值先轉(zhuǎn)換成左操作數(shù)(變量)的類型,并把該值存放到左操作數(shù)(變量)中。例如的類型,并把該值存放到左操作數(shù)(變量)中。例如int a;a = 2.6;printf(“%d”,a);結(jié)果為結(jié)果為2這是因?yàn)橛?jì)算機(jī)在執(zhí)行上述語句時(shí),首先將這是因?yàn)橛?jì)算機(jī)在執(zhí)行上述語句時(shí),首先將2.6舍去小數(shù)部分舍去小數(shù)部分截尾(截尾(truncation)成整型,賦值給變量)成整型,賦值給變量a。應(yīng)當(dāng)注意,賦值運(yùn)算符是應(yīng)當(dāng)注意,賦值運(yùn)算符是“=”。這個(gè)符號(hào)不是等號(hào)。例如。這個(gè)符號(hào)不是等號(hào)。例如int a = 2, b = 3;a = a + b; 的操作
43、是把表達(dá)式的操作是把表達(dá)式a + b的值的值(2 + 3)送到(賦值給)變量送到(賦值給)變量a。即。即經(jīng)上述操作后,變量的經(jīng)上述操作后,變量的a的值由的值由2變?yōu)樽優(yōu)?。圖。圖1-5表明這一操作表明這一操作過程:先計(jì)算過程:先計(jì)算a + b的值,然后把這個(gè)結(jié)果送到變量的值,然后把這個(gè)結(jié)果送到變量a中。于是,中。于是,變量變量a的值由的值由2變?yōu)樽優(yōu)?。23aba + b235運(yùn)算器圖圖1-5 a = a + b的操作過程的操作過程賦值運(yùn)算符具有賦值運(yùn)算符具有“自右至左自右至左” 的結(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)); 即先計(jì)算把即先計(jì)算把5 + 3 的值,得的值,得8,賦值給變量,賦值給變量c;再把變量;再把變量c的值(的值(8)賦值給變量)賦值給變量b;最后把變量;最后把變量b的值(的值(8)賦值給)賦值給變量變量a。也就是說,從一個(gè)變量向另一個(gè)變量賦值后,原。也就是說,從一個(gè)變量向另一個(gè)變量賦值后,原來變量中的值并不會(huì)消失或改變。所以,賦值操作相當(dāng)來變量中的值并不會(huì)消失或改變。所以,賦值操作相當(dāng)于拷貝,而不是移動(dòng)。于拷貝,而不是移動(dòng)。 C語言中的算術(shù)運(yùn)算符與普通數(shù)學(xué)中的算術(shù)運(yùn)算符有如下一語言中的算術(shù)運(yùn)算符與普通數(shù)學(xué)中的算術(shù)運(yùn)算符有如
45、下一些不同。些不同。 運(yùn)算符符號(hào)有所不同。運(yùn)算符符號(hào)有所不同。 種類有所不同。種類有所不同。 結(jié)合性可能會(huì)破壞交換率。結(jié)合性可能會(huì)破壞交換率。1. C語言的基本算術(shù)運(yùn)算符語言的基本算術(shù)運(yùn)算符 下下表為表為C語言中的基本算術(shù)運(yùn)算符及其說明語言中的基本算術(shù)運(yùn)算符及其說明。運(yùn)算符名稱運(yùn)算對象功 能示例表達(dá)式示例值*乘任何兩個(gè)實(shí)數(shù)或整數(shù)求兩數(shù)之積5.5 * 4.022.000000/除任何實(shí)數(shù)或整數(shù),但右操作數(shù)不可為0求兩數(shù)之商4.5 / 50.900000%模兩個(gè)整數(shù),但右操作數(shù)不可為0求整除的余數(shù)13 % 85+加任何兩個(gè)實(shí)數(shù)或整數(shù)求兩數(shù)之和8 + 3.511.500000-減任何兩個(gè)實(shí)數(shù)或整數(shù)求
46、兩數(shù)之差10 - 4.65.400000C語言中的基本算術(shù)運(yùn)算符及其說明語言中的基本算術(shù)運(yùn)算符及其說明 說明:說明: (1)這幾個(gè)算術(shù)運(yùn)算符的運(yùn)算對象有兩個(gè),所以也稱為)這幾個(gè)算術(shù)運(yùn)算符的運(yùn)算對象有兩個(gè),所以也稱為雙目算術(shù)運(yùn)算符。雙目算術(shù)運(yùn)算符。 (2)這幾個(gè)算術(shù)運(yùn)算符的優(yōu)先級(jí)別為:)這幾個(gè)算術(shù)運(yùn)算符的優(yōu)先級(jí)別為:*、/、%高于高于+、-。并且它們都比賦值運(yùn)算符的優(yōu)先級(jí)別高。所以,在一。并且它們都比賦值運(yùn)算符的優(yōu)先級(jí)別高。所以,在一個(gè)表達(dá)式中有賦值運(yùn)算符,也有算術(shù)運(yùn)算符時(shí),不使用個(gè)表達(dá)式中有賦值運(yùn)算符,也有算術(shù)運(yùn)算符時(shí),不使用圓括號(hào),可以先進(jìn)行算術(shù)運(yùn)算,后進(jìn)行賦值運(yùn)算。圓括號(hào),可以先進(jìn)行算術(shù)運(yùn)
47、算,后進(jìn)行賦值運(yùn)算。 (3)這幾個(gè)算術(shù)運(yùn)算符均為)這幾個(gè)算術(shù)運(yùn)算符均為“自左至右自左至右”。 (4)需要特別注意的是整數(shù)除和模運(yùn)算的結(jié)果都是整)需要特別注意的是整數(shù)除和模運(yùn)算的結(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;觀察上面的程序,按照交換率,似乎它們的計(jì)算結(jié)果應(yīng)觀察上面的程序,按照交
48、換率,似乎它們的計(jì)算結(jié)果應(yīng)該相同。但是,非常遺憾!結(jié)果完全不同:該相同。但是,非常遺憾!結(jié)果完全不同:300 * 2 / 3 = 2002 / 3 * 300 = 0原因在于算術(shù)運(yùn)算符具有自左至右的結(jié)合性,即對于第原因在于算術(shù)運(yùn)算符具有自左至右的結(jié)合性,即對于第1個(gè)表達(dá)式語句,執(zhí)行的順序?yàn)椋簜€(gè)表達(dá)式語句,執(zhí)行的順序?yàn)椋?300 * 2 = 600,600 / 3 = 200 對于第對于第2個(gè)表達(dá)式語句,執(zhí)行的順序則為:個(gè)表達(dá)式語句,執(zhí)行的順序則為: 2 / 3 = 0(注意是整數(shù)相除),(注意是整數(shù)相除),0 * 300 = 0 因此,使用整數(shù)除,應(yīng)當(dāng)特別小心。因此,使用整數(shù)除,應(yīng)當(dāng)特別小心。2. 自反算術(shù)賦值運(yùn)算符自反算術(shù)賦值運(yùn)算符 前面介紹過這樣的賦值表達(dá)式:前面介紹過這樣的賦值表達(dá)式: a = a + b它的作用是將變量它的作用是將變量a的值加上變量的值加上變量b的值,再送回到變量的值,再送回到變量a中。或者中。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版家電產(chǎn)品消費(fèi)者滿意度調(diào)查服務(wù)合同2篇
- 二零二五版房地產(chǎn)融資居間代理合同范本3篇
- 二零二五年電影聯(lián)合制作與市場推廣合同2篇
- 二零二五版茶葉茶具專賣店加盟管理合同3篇
- 二零二五版汽車購置貸款保證擔(dān)保合同3篇
- 二零二五年度化肥原料進(jìn)口與分銷合同3篇
- 二零二五年度航空航天股權(quán)買賣合同范本3篇
- 二零二五版戶外廣告牌定期檢查與維修合同3篇
- 二零二五年度駕校車輛購置稅承包合同3篇
- 國際貿(mào)易第六章出口合同訂立2025年綠色貿(mào)易標(biāo)準(zhǔn)與認(rèn)證3篇
- 水泥廠鋼結(jié)構(gòu)安裝工程施工方案
- 2023光明小升初(語文)試卷
- 三年級(jí)上冊科學(xué)說課課件-1.5 水能溶解多少物質(zhì)|教科版
- GB/T 7588.2-2020電梯制造與安裝安全規(guī)范第2部分:電梯部件的設(shè)計(jì)原則、計(jì)算和檢驗(yàn)
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- 小學(xué)道德與法治學(xué)科高級(jí)(一級(jí))教師職稱考試試題(有答案)
- 河北省承德市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 實(shí)用性閱讀與交流任務(wù)群設(shè)計(jì)思路與教學(xué)建議
- 應(yīng)急柜檢查表
- 通風(fēng)設(shè)施標(biāo)準(zhǔn)
- 酒店市場營銷教案
評(píng)論
0/150
提交評(píng)論