




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、c語言程序設(shè)計(jì)語言程序設(shè)計(jì)教材分析 本書內(nèi)容共有11章,可分為三部分。 第1、2章為第一部分,為初學(xué)者的入門知識(shí),使讀者對(duì)c語言編寫程序的步驟、方法和程序結(jié)構(gòu)及算法描述有一個(gè)大致的了解。 第3第5章為第二部分,是程序設(shè)計(jì)的基礎(chǔ)部分,使讀者詳細(xì)了解c語言的基本數(shù)據(jù)類型和表達(dá)式以及c語言的控制結(jié)構(gòu)。掌握了第一、二部分的內(nèi)容,讀者可以完成簡(jiǎn)單的程序設(shè)計(jì)。 第6章第11章為第三部分,講述了模塊化程序設(shè)計(jì)的概念和實(shí)現(xiàn)的方法,為程序設(shè)計(jì)提供了更多、更方便的途徑,為進(jìn)行綜合程序設(shè)計(jì)奠定了基礎(chǔ)。每一個(gè)章節(jié)里都有詳細(xì)的程序范例來說明程序的設(shè)計(jì)思想、語句的概念、作用、含義和使用方法,使學(xué)生能夠由淺入深系統(tǒng)地學(xué)習(xí)c
2、語言的知識(shí),同時(shí)掌握一定的編程方法。成績(jī)考核成績(jī)考核 成績(jī)考核方法:成績(jī)考核方法:期末成績(jī)期末成績(jī)=平時(shí)成績(jī)平時(shí)成績(jī)20%+期末考試期末考試80%; 注:平時(shí)成績(jī)包括:上課情況、作業(yè)情況、上機(jī)作業(yè)完注:平時(shí)成績(jī)包括:上課情況、作業(yè)情況、上機(jī)作業(yè)完成情況等。成情況等。學(xué)習(xí)學(xué)習(xí)c的忠告的忠告上機(jī)實(shí)踐上機(jī)實(shí)踐(編程編程)?。╰ry!)c語言程序設(shè)計(jì)教程語言程序設(shè)計(jì)教程 第第1章章 引言引言 第第2章章 程序的簡(jiǎn)單算法制定程序的簡(jiǎn)單算法制定 第第3章章 基本程序語句基本程序語句 第第4章章 選擇結(jié)構(gòu)選擇結(jié)構(gòu) 第第5章章 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 第第6章章 函數(shù)與編譯預(yù)處理函數(shù)與編譯預(yù)處理 第第7章章 數(shù)組數(shù)
3、組 第第8章章 指針指針 第第9章章 構(gòu)造數(shù)據(jù)類型構(gòu)造數(shù)據(jù)類型 第第10章章 文件文件 第第11章章 位運(yùn)算位運(yùn)算c語言程序設(shè)計(jì)課程的任務(wù) 1. 指導(dǎo)學(xué)生掌握 c 程序設(shè)計(jì)語言的基礎(chǔ)知識(shí);2.培養(yǎng)學(xué)生綜合分析并編制程序解決實(shí)際應(yīng)用問題的能力;3.培養(yǎng)學(xué)生契而不舍的解決問題的精神以及認(rèn)真的學(xué)習(xí)態(tài)度。 通常我們把設(shè)計(jì)、書寫及檢查調(diào)試程序的過程稱為程序設(shè)計(jì)。應(yīng)當(dāng)指出,簡(jiǎn)單的程序設(shè)計(jì)應(yīng)包括以下幾個(gè)部分:確定數(shù)據(jù)結(jié)構(gòu)確定算法編寫代碼調(diào)試并運(yùn)行整理并寫出文檔資料 第一章 引 言 1.1 c語言的特點(diǎn) 1.2 簡(jiǎn)單的c語言程序介紹 1.3 c語言程序的結(jié)構(gòu) 1.4 c程序設(shè)計(jì)語言的執(zhí)行1.1 c語言的特點(diǎn)
4、c語言有9種控制語句,32個(gè)關(guān)鍵字。 運(yùn)算符豐富。共有34種運(yùn)算符 數(shù)據(jù)結(jié)構(gòu)類型豐富。 具有結(jié)構(gòu)化的控制語句 語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。 c語言允許直接訪問物理地址,能進(jìn)行位操作,可以直接對(duì)硬件進(jìn)行操作。 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。 c語言編寫的程序可移植性好。1.2 簡(jiǎn)單的c語言程序介紹注釋注釋 c程序中的“/* */”之間的內(nèi)容稱為注釋,是程序編寫者給程序閱讀者留下的一些說明(注釋),以幫助閱讀者理解程序。編譯器不對(duì)注釋進(jìn)行編譯,只將它們當(dāng)作空白看待。 本程序的第1行中的注釋為“ex101.c”,是說明本書編寫時(shí)將這個(gè)程序保存在文件ex101.c中。 庫函數(shù)與文件包含命
5、令includen 庫函數(shù)庫函數(shù):系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù),程序可直接使用; n 使用庫函數(shù)必須將其有關(guān)說明信息寫入程序使用庫函數(shù)必須將其有關(guān)說明信息寫入程序。為了用戶方便,系統(tǒng)定義庫函數(shù)時(shí),把一類相關(guān)庫函數(shù)的說明信息,分別寫在一些文件中。本例中使用了庫函數(shù)printf ,其有關(guān)說明信息寫在文件stdio.h中。所以在程序的開始加入了n 使用使用c語言的語言的要在程序前面加上要在程序前面加上類似類似 main函數(shù)任何任何c程序都程序都,它是程序的入口,它是程序的入口,也是程序的出口。其中,也是程序的出口。其中,main是是,()內(nèi)可以包含一些內(nèi)可以包含一些; 的內(nèi)容稱為的內(nèi)容稱為其包含若干條其包含若
6、干條;不同語句之間;不同語句之間用用分隔;一般情況下,每個(gè)程序都由一至多個(gè)函數(shù)組成;分隔;一般情況下,每個(gè)程序都由一至多個(gè)函數(shù)組成;表示表示main函數(shù)函數(shù)沒有返回值沒有返回值函數(shù)名函數(shù)名函數(shù)體函數(shù)體語句語句演示ex101語句 c語言的主函數(shù)體由一些語句組成。每個(gè)語句由一個(gè)分號(hào)結(jié)束。如本例中,主函數(shù)的一個(gè)語句: printf (“this is a c program.n”); 說明:說明:n函數(shù)printf是系統(tǒng)系統(tǒng)提供的一個(gè)庫函數(shù),printf函數(shù)的功能是向函數(shù)的功能是向顯示器顯示器輸出一段信息輸出一段信息,具體內(nèi)容括在雙引號(hào)內(nèi)具體內(nèi)容括在雙引號(hào)內(nèi);n參數(shù)中的“n”代表一個(gè)命令:輸出完這行
7、字符后換行,不是要求顯示的文字。例例2 寫出以下程序的運(yùn)行結(jié)果寫出以下程序的運(yùn)行結(jié)果 演示 ex102例例3 四則運(yùn)算編程四則運(yùn)算編程 #include int add(int x,int y); main() int a,b,c; scanf(%d %d,&a,&b); c=add(a,b);/*函數(shù)調(diào)用語句*/ printf(c=%d,c); int add(int x,int y) return(x+y);演示ex103演示ex104討論減、乘、除的編程輸入函數(shù)scanf()函數(shù)說明函數(shù)定義1.4 c程序設(shè)計(jì)語言的執(zhí)行程序設(shè)計(jì)語言的執(zhí)行 對(duì)于對(duì)于c語言程序來說,這一過程一
8、般分為語言程序來說,這一過程一般分為4步:步:第第1步:編輯源程序;步:編輯源程序;第第2步:編譯;步:編譯;第第3步:鏈接;步:鏈接;第第4步:執(zhí)行;步:執(zhí)行;編編 譯譯 編譯就是把用編譯就是把用c語言描述的程序翻譯成計(jì)算機(jī)可以直接理語言描述的程序翻譯成計(jì)算機(jī)可以直接理解并執(zhí)行的機(jī)器語言命令組成的程序。解并執(zhí)行的機(jī)器語言命令組成的程序。c語言的編譯過程語言的編譯過程分為分為兩個(gè)階段兩個(gè)階段:首先首先是編譯預(yù)處理,系統(tǒng)要先掃描程序,是編譯預(yù)處理,系統(tǒng)要先掃描程序,處理所有預(yù)處理命令,如把文件包含命令要求的文件包含處理所有預(yù)處理命令,如把文件包含命令要求的文件包含(嵌入)到程序中。(嵌入)到程序
9、中。然后然后才開始編譯。編譯后得到的文件才開始編譯。編譯后得到的文件稱為目標(biāo)文件。目標(biāo)文件就是用機(jī)器語言描述的文件。稱為目標(biāo)文件。目標(biāo)文件就是用機(jī)器語言描述的文件。c語言的目標(biāo)文件的后綴為語言的目標(biāo)文件的后綴為.obj。目標(biāo)文件的主文件名,一。目標(biāo)文件的主文件名,一般與源程序文件名相同。般與源程序文件名相同。 在編譯過程中,還要對(duì)源程序中的語法和邏輯結(jié)構(gòu)進(jìn)行檢在編譯過程中,還要對(duì)源程序中的語法和邏輯結(jié)構(gòu)進(jìn)行檢查。編譯任務(wù)是由稱做編譯器(查。編譯任務(wù)是由稱做編譯器(compiler)的軟件完成的)的軟件完成的。程序在編譯過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)要重新進(jìn)入。程序在編譯過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這
10、時(shí)要重新進(jìn)入編輯器進(jìn)行編輯。編輯器進(jìn)行編輯。鏈鏈 接接 鏈接是將與當(dāng)前程序有關(guān)的、已經(jīng)有的幾個(gè)目標(biāo)模塊鏈接鏈接是將與當(dāng)前程序有關(guān)的、已經(jīng)有的幾個(gè)目標(biāo)模塊鏈接在一起,形成一個(gè)完整的程序代碼文件。這些已經(jīng)有的目在一起,形成一個(gè)完整的程序代碼文件。這些已經(jīng)有的目標(biāo)模塊有:標(biāo)模塊有: 庫函數(shù):如前面使用的庫函數(shù):如前面使用的printf; 對(duì)于大的程序,常常分成幾個(gè)模塊,分別編寫、編輯和對(duì)于大的程序,常常分成幾個(gè)模塊,分別編寫、編輯和編譯,形成不同的目標(biāo)模塊。編譯,形成不同的目標(biāo)模塊。 經(jīng)正確鏈接所生成的文件才是可執(zhí)行文件??蓤?zhí)行文件的經(jīng)正確鏈接所生成的文件才是可執(zhí)行文件??蓤?zhí)行文件的文件名后綴為文件
11、名后綴為.exe(有的系統(tǒng)為(有的系統(tǒng)為.out)。完成鏈接過程的)。完成鏈接過程的軟件稱為鏈接器(軟件稱為鏈接器(linker)。)。 程序在連接過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)也要重新進(jìn)入程序在連接過程中,也可能發(fā)現(xiàn)錯(cuò)誤。這時(shí)也要重新進(jìn)入編輯器進(jìn)行編輯。編輯器進(jìn)行編輯。執(zhí)執(zhí) 行行 鏈接后得到的可執(zhí)行文件名,對(duì)操作系統(tǒng)鏈接后得到的可執(zhí)行文件名,對(duì)操作系統(tǒng)來說,相當(dāng)于一條命令。在操作系統(tǒng)提供來說,相當(dāng)于一條命令。在操作系統(tǒng)提供的命令界面上打入這個(gè)命令,就可以開始的命令界面上打入這個(gè)命令,就可以開始執(zhí)行這個(gè)程序。執(zhí)行這個(gè)程序。c語言的集成開發(fā)環(huán)境語言的集成開發(fā)環(huán)境 turbo c 2.0 turbo
12、 c+(選用)vc+等 (1)打開turbo c+運(yùn)行環(huán)境。界面如圖: 從圖可以看到在集成環(huán)境的上部,有一行“主菜單”,其中包括下面10個(gè)菜單項(xiàng): file edit search run compile project options debug window help 分別代表:文件操作、編輯、查找、運(yùn)行、編譯、項(xiàng)目文件、選項(xiàng)、調(diào)試、窗口、幫助等功能。用戶可通過以上菜單項(xiàng)來選擇使用turbo c集成環(huán)境所提供的各項(xiàng)主要功能。 (2)編輯源程序。 在file菜單下選擇new子菜單項(xiàng)命令,系統(tǒng)的光標(biāo)處于等待輸入c源程序狀態(tài)。輸入完源程序后,選擇file菜單下選擇save as子菜單項(xiàng)命令進(jìn)行保
13、存,在隨后彈出的保存文件對(duì)話框中,輸入文件名*.c后按“ ” (3)編譯源程序 選擇compile主菜單項(xiàng)并在其下拉子菜單中選擇compile 命令,則進(jìn)行編譯。若源程序無語錯(cuò)誤,生成可執(zhí)行文件exe;若源程序有語法錯(cuò)誤,在message窗口顯示錯(cuò)誤信息,此時(shí)沒有生成可執(zhí)行文件,應(yīng)回到第2步,修改程序的錯(cuò)誤,直到無語法錯(cuò)誤、生成可執(zhí)行文件。返回 (4) 連接程序 在compile菜單中,選擇link子菜單項(xiàng)命令,程序?qū)⒈贿B接成可執(zhí)行程序。 注:按f9鍵,可一次完成編譯和連接。 (5) 執(zhí)行程序。選擇run子菜單命令,或按快捷鍵ctrl+f9。 (6) 看結(jié)果。程序運(yùn)行后看結(jié)果必須選擇file菜
14、單下的dos shell命令 或者按快捷鍵alt+f5,才能看到運(yùn)行的結(jié)果。 如程序未得到預(yù)期的結(jié)果,應(yīng)回到第2步,修改程序的錯(cuò)誤。 (7) 退出turbo c+,file-quit菜單命令或按alt+x。復(fù)習(xí)本講內(nèi)容(復(fù)習(xí)本講內(nèi)容(第一章),預(yù)習(xí)教材第二章。第一章),預(yù)習(xí)教材第二章。第二章 程序的簡(jiǎn)單算法制定 2.1 結(jié)構(gòu)化程序的算法制定 2.2 結(jié)構(gòu)化程序的算法描述 2.3 算法制定的范例2.1 結(jié)構(gòu)化程序的算法制定 利用計(jì)算機(jī)處理問題簡(jiǎn)述2.1 結(jié)構(gòu)化程序的算法制定結(jié)構(gòu)化程序的算法制定 例2.1 從鍵盤輸入3個(gè)數(shù),找出其中最小的那個(gè)數(shù)。 分析:1、需變量的個(gè)數(shù)-3個(gè) 2、先比較a,b的值
15、,把小的存在min中。 3、再用min與c比較,把數(shù)值小的存放在min中。 如果 ab 則 min=a,否則min=b; 如果c0 -4ac0(雙實(shí)根)(雙實(shí)根) x1=x1= x2= x2= 如果如果 b b2 2 -4ac=0 -4ac=0(單實(shí)根)(單實(shí)根) x1=x2=x1=x2= 如果如果 b b2 2 -4ac0 -4ac=60) printf(“passed!”);else printf(“failed”);算法可采用自然語言、流程圖、n-s圖、pad圖、偽代碼等方法來描述。 示例:根據(jù)學(xué)生成績(jī)輸出評(píng)定結(jié)果。一、算法(algorithm)二、算法與流程圖二、算法與流程圖傳統(tǒng)流程圖
16、 特點(diǎn): 直觀形象; 使用流線。 缺點(diǎn): 占面積大,使用流線任意轉(zhuǎn)移,易出現(xiàn)“亂麻”現(xiàn)象,造成編程與閱讀程序困難。二、算法與流程圖二、算法與流程圖n-s結(jié)構(gòu)化流程圖 77年美學(xué)者i.nassi和b.scheiderman提出。特點(diǎn) 取消流線 不允許流程任意轉(zhuǎn)移,只能從上而下順序執(zhí)行 規(guī)定三種基本結(jié)構(gòu)的流程圖單元,由這些基本結(jié)構(gòu)象搭積木似的組成各種算法(結(jié)構(gòu)化設(shè)計(jì))。優(yōu)點(diǎn) 算法清晰,流程不會(huì)無規(guī)律亂轉(zhuǎn)移。二、算法與流程圖二、算法與流程圖三種基本結(jié)構(gòu) 通常情況下,程序中的語句是以所編寫的順序一句接一句通常情況下,程序中的語句是以所編寫的順序一句接一句地執(zhí)行,這種執(zhí)行方法稱為地執(zhí)行,這種執(zhí)行方法稱為
17、“順序執(zhí)行順序執(zhí)行”。許多。許多c c語句能夠語句能夠讓程序員指定不按編寫順序執(zhí)行下一條執(zhí)行語句,這種執(zhí)讓程序員指定不按編寫順序執(zhí)行下一條執(zhí)行語句,這種執(zhí)行方法稱為行方法稱為“控制轉(zhuǎn)移控制轉(zhuǎn)移”。 bohmbohm和和jacopinijacopini的研究證實(shí),所有的程序都能夠只用三種的研究證實(shí),所有的程序都能夠只用三種控制結(jié)構(gòu)編寫,即控制結(jié)構(gòu)編寫,即 順序結(jié)構(gòu)順序結(jié)構(gòu) 選擇結(jié)構(gòu)(選擇結(jié)構(gòu)(selection structureselection structure) 循環(huán)結(jié)構(gòu)(循環(huán)結(jié)構(gòu)(repetition structurerepetition structure) 順序結(jié)構(gòu)是順序結(jié)構(gòu)是c
18、 c語言的基本結(jié)構(gòu),除非指示轉(zhuǎn)移,否則計(jì)算語言的基本結(jié)構(gòu),除非指示轉(zhuǎn)移,否則計(jì)算機(jī)自動(dòng)以語句編寫的順序一句一句地執(zhí)行機(jī)自動(dòng)以語句編寫的順序一句一句地執(zhí)行c c語句。語句。 任何任何c c語言程序都是由七種控制結(jié)構(gòu)(順序結(jié)構(gòu)、三種選擇語言程序都是由七種控制結(jié)構(gòu)(順序結(jié)構(gòu)、三種選擇結(jié)構(gòu)和三種循環(huán)結(jié)構(gòu))構(gòu)成的。結(jié)構(gòu)和三種循環(huán)結(jié)構(gòu))構(gòu)成的。二、算法與流程圖二、算法與流程圖三種基本結(jié)構(gòu) 順序結(jié)構(gòu) a塊、b塊順序執(zhí)行(每塊代表一個(gè)或一組操作)二、算法與流程圖二、算法與流程圖三種基本結(jié)構(gòu) 選擇結(jié)構(gòu) 條件p成立時(shí)執(zhí)行a塊(否則執(zhí)行b塊)uif 選擇結(jié)構(gòu)選擇結(jié)構(gòu) 條件為真時(shí)執(zhí)行某個(gè)指定的操作,條件為假時(shí)跳過該操
19、作(單路選擇)uififelseelse選擇結(jié)構(gòu)選擇結(jié)構(gòu) 條件為真時(shí)執(zhí)行某個(gè)指定的操作,為假時(shí)執(zhí)行另一個(gè)指定的操作(雙路選擇)uswitchswitch選擇結(jié)構(gòu)選擇結(jié)構(gòu) 根據(jù)表達(dá)式的值執(zhí)行眾多不同操作中的某個(gè)指定的操作(多路選擇) 二、算法與流程圖二、算法與流程圖三種基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 分當(dāng)型和直到型兩類。 當(dāng)型 先判斷,只要條件為真就反復(fù)執(zhí)行a塊,為假則結(jié)束循環(huán)。 直到型 先執(zhí)行a塊,再判斷條件是否為真,為真則繼續(xù)執(zhí)行循環(huán)體,為假則結(jié)束循環(huán)。 c語言提供了三種循環(huán)結(jié)構(gòu),即while循環(huán)結(jié)構(gòu),dowhile循環(huán)結(jié)構(gòu)和for循環(huán)結(jié)構(gòu)。2.2.3 pad圖pad(problem analysis
20、diagram)另一種被廣泛使用的一種算法的圖形表示法。pad圖可以看成是二維的,它能展現(xiàn)算法的層次結(jié)構(gòu)。(順序結(jié)構(gòu)很簡(jiǎn)單,在此未畫圖。)2.3 算法制定范例 例例2.4 把從鍵盤輸入的大寫字母轉(zhuǎn)換成小寫把從鍵盤輸入的大寫字母轉(zhuǎn)換成小寫字母,輸出結(jié)果。字母,輸出結(jié)果。 問題:?jiǎn)栴}: 1、描述算法、描述算法 2、根據(jù)算法編寫、根據(jù)算法編寫c程序程序 3、運(yùn)行檢查程序是否正確。、運(yùn)行檢查程序是否正確。 演示演示ex2022.3 算法制定范例 例2.5 已知實(shí)數(shù)a和b,計(jì)算u的值:u=(r+s)2。其中,當(dāng)ab時(shí),r=a2-b2,s=a/b;當(dāng)ab時(shí),r=b2-a2,s=a/b+4。 算法(算法(自
21、然語言描述自然語言描述):):從鍵盤輸入實(shí)數(shù)從鍵盤輸入實(shí)數(shù)a和和b。如果如果ab,則,則r=a2-b2,s=a/b;否則,否則,r=b2-a2,s=a/b+4。計(jì)算計(jì)算u的值:的值: u=(r+s)2。輸出輸出u的值。的值。開始輸入a,babtfr=a*a-b*bs=a/br=b*b-a*as=a/b+4結(jié)束u=(r+s)*(r+s)輸出u的值流程圖輸入實(shí)數(shù)a,babftr=a*a-b*bs=a/br=b*b-a*as=a/b+4計(jì)算的值:u=(r+s)*(r+s)輸出u的值n-s圖輸入實(shí)數(shù)a,babr=a*a-b*bs=a/br=b*b-a*as=a/b+4計(jì)算u=(r+s)*(r+s)輸出
22、u的值pad圖/*例例2.5*/#includemain() float a,b,r,s,u;printf(請(qǐng)輸入變量請(qǐng)輸入變量a、b的值:的值:);scanf(%f %f,&a, &b);if(ab)r=a*a-b*b;s=a/b;elser=b*b-a*a;s=a/b+4;u=(r+s)*(r+s);printf(所計(jì)算的所計(jì)算的u的值為:的值為:%f,u);c語言描述 小結(jié):小結(jié): 本章主要介紹了程序算法的制定方法:自然語本章主要介紹了程序算法的制定方法:自然語言、流程圖、言、流程圖、n-sn-s圖和圖和padpad圖。通過用這些方法表示圖。通過用這些方法表示解題思路。解
23、題思路。 作業(yè):作業(yè): 用流程圖、用流程圖、 n-sn-s圖和圖和padpad圖描述問題的算法:圖描述問題的算法: 從鍵盤輸入從鍵盤輸入3 3個(gè)整數(shù)個(gè)整數(shù)a,b,c,a,b,c,輸出其中的最大的數(shù)。輸出其中的最大的數(shù)。 第三章 基本程序語句c c語言的數(shù)據(jù)類型簡(jiǎn)介語言的數(shù)據(jù)類型簡(jiǎn)介幾個(gè)基本概念幾個(gè)基本概念 c c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式c c基本語句基本語句數(shù)據(jù)的輸出數(shù)據(jù)的輸出數(shù)據(jù)的輸入數(shù)據(jù)的輸入 簡(jiǎn)單程序設(shè)計(jì)舉例簡(jiǎn)單程序設(shè)計(jì)舉例3.1 c3.1 c語言的數(shù)據(jù)類型簡(jiǎn)介語言的數(shù)據(jù)類型簡(jiǎn)介 字符型(字符型(charchar) 整型(整型(sh
24、ort,int,long,unsignedshort,int,long,unsigned) 單精度型(單精度型(floatfloat) 實(shí)型實(shí)型 雙精度型(雙精度型(doubledouble) 枚舉類型(枚舉類型(enumenum) 數(shù)組類型(數(shù)組類型( ) 構(gòu)造類型構(gòu)造類型 結(jié)構(gòu)體類型(結(jié)構(gòu)體類型(structstruct) 共用體類型(共用體類型(unionunion) 指針類型(指針類型(* *)空類型(空類型(voidvoid)基本類型基本類型數(shù)據(jù)類型數(shù)據(jù)類型c語言的數(shù)據(jù)結(jié)構(gòu)3.23.2幾個(gè)基本概念幾個(gè)基本概念3.2.1 3.2.1 標(biāo)識(shí)符標(biāo)識(shí)符 1標(biāo)識(shí)符概念標(biāo)識(shí)符概念:是用來標(biāo)識(shí)名稱
25、標(biāo)識(shí)名稱的,可以用來標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、類型名、數(shù)組名、文件名等。c語言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線組成,且第一個(gè)字符必須是字母或下劃線。如:day ,month ,student ,name_1 ,s2 ,_12 ,_t13 注意注意:1)1) c c語言中大寫字母和小寫字母被認(rèn)為是兩個(gè)不語言中大寫字母和小寫字母被認(rèn)為是兩個(gè)不同的字符,大寫字母同的字符,大寫字母aa與小寫字母與小寫字母aa則則表示不同的標(biāo)識(shí)符。表示不同的標(biāo)識(shí)符。2)2) 采用采用“見名知義見名知義”的原則的原則3.23.2幾個(gè)基本概念幾個(gè)基本概念 3.2.1 3.2.1 標(biāo)識(shí)符標(biāo)識(shí)符 2標(biāo)識(shí)符的分類 關(guān)鍵字
26、關(guān)鍵字( (代表固定含義,不能另做他用。書代表固定含義,不能另做他用。書p p2121) ) 分為三類分為三類 預(yù)定義標(biāo)識(shí)符預(yù)定義標(biāo)識(shí)符( (有特定含義,包括有特定含義,包括c c語言庫函數(shù)名語言庫函數(shù)名 和變異預(yù)處理命令允許另做他用,但標(biāo)識(shí)符失去原義和變異預(yù)處理命令允許另做他用,但標(biāo)識(shí)符失去原義) ) 用戶標(biāo)識(shí)符用戶標(biāo)識(shí)符( (用戶自己定義,不能使用關(guān)鍵字,可用戶自己定義,不能使用關(guān)鍵字,可 以使用預(yù)定義標(biāo)識(shí)符,建議不要使用預(yù)定義標(biāo)識(shí)符以使用預(yù)定義標(biāo)識(shí)符,建議不要使用預(yù)定義標(biāo)識(shí)符) )3.23.2幾個(gè)基本概念幾個(gè)基本概念 3.2.2 3.2.2 常量常量在程序運(yùn)行中在程序運(yùn)行中, ,其數(shù)值不
27、能被改變的量其數(shù)值不能被改變的量 1 1直接常量:直接常量:是在程序中直接引用的數(shù)據(jù)是在程序中直接引用的數(shù)據(jù) 2 2符號(hào)常量:符號(hào)常量:符號(hào)常量是用標(biāo)識(shí)符來代表一個(gè)數(shù)據(jù)符號(hào)常量是用標(biāo)識(shí)符來代表一個(gè)數(shù)據(jù) 符號(hào)常量的定義形式符號(hào)常量的定義形式: : #define #define 符號(hào)常量標(biāo)識(shí)符符號(hào)常量標(biāo)識(shí)符 常量數(shù)據(jù)常量數(shù)據(jù) 例如例如: #define pi 3.14159: #define pi 3.141593.23.2幾個(gè)基本概念幾個(gè)基本概念3.2.3 3.2.3 變量變量變量是指以標(biāo)識(shí)符為名字,其值可以改變的量。變量是指以標(biāo)識(shí)符為名字,其值可以改變的量。 1、定義形式:類型標(biāo)識(shí)符 變量名
28、1 ,變量名2,變量名3.; 例如: int a,b,c ; float x,y; char c1,c2; 或 int c1,c2; 自己設(shè)定,滿足標(biāo)自己設(shè)定,滿足標(biāo)識(shí)符的規(guī)定。識(shí)符的規(guī)定。如:如:int,int,float,charfloat,char;不可??;不可省變量分為整型、實(shí)型、字符型等。變量分為整型、實(shí)型、字符型等。3.23.2幾個(gè)基本概念幾個(gè)基本概念 3.2.3 3.2.3 變量變量 2、變量初始化 在說明變量的同時(shí)給變量一個(gè)初始值。 int a=5, b=3; int a,b,c; a=b=c=3; int a=b=c=3; 例如例如在同一程序塊中,變量不能被重復(fù)定義;使用變量
29、時(shí)必須“先定義,后使用”。3.3 c3.3 c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型3.3.1 3.3.1 整型數(shù)據(jù)整型數(shù)據(jù)1 1、整型常量:、整型常量: (1) (1) 十進(jìn)制形式十進(jìn)制形式: : 與數(shù)學(xué)上的整數(shù)表示相同;與數(shù)學(xué)上的整數(shù)表示相同; 例如例如: 12, -100, 0: 12, -100, 0 (2) (2) 八進(jìn)制形式八進(jìn)制形式: : 在數(shù)碼前加數(shù)字在數(shù)碼前加數(shù)字0 0; 例如例如: 012=1: 012=1* *8 81 1+2+2* *8 80 0=10(=10(十進(jìn)制)十進(jìn)制) (3) (3) 十六進(jìn)制形式十六進(jìn)制形式: : 在數(shù)碼前加在數(shù)碼前加0x0x(數(shù)字?jǐn)?shù)字
30、0和字母和字母x)。)。 例如例如: 0 x12=1: 0 x12=1* *16161 1+2+2* *16160 0=18(=18(十進(jìn)制)十進(jìn)制) * 八進(jìn)制的數(shù)碼范圍為八進(jìn)制的數(shù)碼范圍為07; 018 * 十六進(jìn)制的十六進(jìn)制的數(shù)碼除了數(shù)字?jǐn)?shù)碼除了數(shù)字0 09 9外外, , 還使用英文字母還使用英文字母a f (或或a f)表示表示1015。 如:如:0 x1e 3.3 c3.3 c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型 2、整型變量 ()整型變量分類()整型變量分類 根據(jù)數(shù)據(jù)所占的二進(jìn)制位數(shù)分為:int、short、long; 同樣存儲(chǔ)長(zhǎng)度的數(shù)據(jù)又分unsigned、signed;
31、 故可組合出六種類型。 ()整型數(shù)據(jù)的存儲(chǔ)方式()整型數(shù)據(jù)的存儲(chǔ)方式 數(shù)據(jù)在內(nèi)存中是以二進(jìn)制形式存儲(chǔ)的。 c語言中,一個(gè)int型數(shù)據(jù)通常用兩個(gè)字節(jié)存放,其中最高位用來存放整數(shù)的符號(hào),若最高位為0則表示該數(shù)為正數(shù),若最高位為1則表示該數(shù)為負(fù)數(shù)。 如:int i=-1; 則存放形式為:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 13.3 c3.3 c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型 3、值域:變量允許存放的數(shù)值范圍 由機(jī)器中數(shù)據(jù)的存儲(chǔ)長(zhǎng)度決定。 vc 6.0 所支持的整型數(shù)據(jù) 類型名稱所占位數(shù)數(shù)值范圍signed int8*4-21474836482147483647s
32、igned short int 8*2-3276832767signed long int8*4-21474836482147483647unsigned int8*404294967295unsigned shortint8*2065535unsigned long int8*4042949672953.3 c3.3 c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型 例例3.1:p24 思考:運(yùn)行結(jié)果是否正確,說明理由!思考:運(yùn)行結(jié)果是否正確,說明理由!#includemain()int a,b,c,d;unsigned u,v;a=1;b=3;c=6;d=-7;u=a+b;v=c+d;pri
33、ntf(u=%d,v=%un,u,v);3.3 c3.3 c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型3.3.2 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)1 1、實(shí)型常量:、實(shí)型常量:(1) (1) 十進(jìn)制小數(shù)形式:十進(jìn)制小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成;由數(shù)字和小數(shù)點(diǎn)組成; 例如例如: 3.4 , 4. , .3 : 3.4 , 4. , .3 (2) (2) 指數(shù)形式指數(shù)形式:“十進(jìn)制小數(shù)十進(jìn)制小數(shù)”+“ e(+“ e(或或e)”+“e)”+“十進(jìn)制數(shù)整數(shù)十進(jìn)制數(shù)整數(shù)”。 例如例如: 12.5e-6: 12.5e-6 表示表示12.512.51010-6 。 規(guī)范化指數(shù)形式:規(guī)范化指數(shù)形式: 小數(shù)點(diǎn)不能單獨(dú)出現(xiàn);小
34、數(shù)點(diǎn)不能單獨(dú)出現(xiàn); 0.0. .0 .0 . . e e或或e e的兩邊必須有數(shù),且其后面必須為整數(shù);的兩邊必須有數(shù),且其后面必須為整數(shù); 如:如: 6e0.2 6e0.2 e5e5 2、實(shí)型變量(分類和值域):、實(shí)型變量(分類和值域): 關(guān)鍵字關(guān)鍵字 字節(jié)數(shù)字節(jié)數(shù) 取值范圍取值范圍 精度精度( (位位) ) float 4 3.4 float 4 3.41010-38 3.43.4101038 7 7 double 8 1.7 double 8 1.71010-308 1.71.71010308 1515注意注意3.3 c3.3 c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型3.3.3字符型
35、數(shù)據(jù)字符型數(shù)據(jù)1 1、常量:、常量: (1) (1) 用單引號(hào)括起來的一個(gè)字符;如:用單引號(hào)括起來的一個(gè)字符;如:a、1、?等等。 (2) (2) 用單引號(hào)括起來的由反斜杠用單引號(hào)括起來的由反斜杠( ( ) )引導(dǎo)的轉(zhuǎn)義字符。引導(dǎo)的轉(zhuǎn)義字符。 字符形式字符形式 功能功能 n n 換行換行 t t 橫向跳格橫向跳格 b b 退格退格 r r 回車回車 反斜杠字符反斜杠字符 單引號(hào)字符單引號(hào)字符 ddd 8ddd 8進(jìn)制數(shù)表示的進(jìn)制數(shù)表示的asciiascii碼對(duì)應(yīng)的字符碼對(duì)應(yīng)的字符 xhh 16xhh 16進(jìn)制數(shù)表示的進(jìn)制數(shù)表示的asciiascii碼對(duì)應(yīng)的字符碼對(duì)應(yīng)的字符例如:字符例如:字符a
36、 a的的asciiascii碼為:碼為: 65d65d(十進(jìn)制)(十進(jìn)制)=41h=41h(十六進(jìn)制)(十六進(jìn)制)=101q=101q(八進(jìn)制)(八進(jìn)制) 字符字符a a可以表示為可以表示為aa、x41x41、101101。 #include main() char c1=a,c2=b,c3=c,c4=101,c5=116; printf(a%c b%ctc%ctabcn,c1,c2,c3); printf(tb%c %c,c4,c5);轉(zhuǎn)義字符的應(yīng)用轉(zhuǎn)義字符的應(yīng)用演示ex3043.3 c3.3 c語言的三種基本數(shù)據(jù)類型語言的三種基本數(shù)據(jù)類型2、變量的分類和值域:分類: char 和 unsi
37、gned char;值域: 每個(gè)字符型數(shù)據(jù)在內(nèi)存中占一個(gè)字節(jié);包括ascii字符表中的所有字符(可顯示字符和非顯示字符)。3、字符串常量:是用一對(duì)雙引號(hào)括起來的字符序列。如:“shanghai”,“fghijk”,“china”。 字符串常量的存放:每個(gè)字符均以其ascii碼存放,且在最后加一個(gè)“空字符” a與與“a”的區(qū)別。的區(qū)別。注意注意3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3.4.1 c運(yùn)算符簡(jiǎn)介按操作功能運(yùn)算符大致可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、按位運(yùn)算符以及其它運(yùn)算符如賦值運(yùn)算符、條件運(yùn)算符、逗號(hào)運(yùn)算符等。 表達(dá)式是由操作數(shù)和運(yùn)算符組成的序列。算術(shù)運(yùn)算符 +
38、 - * / %關(guān)系運(yùn)算符 = = = !=邏輯運(yùn)算符 ! & 位運(yùn)算符 | &賦值運(yùn)算符 = 條件運(yùn)算符 ?:逗號(hào)運(yùn)算符 ,指針運(yùn)算符 * 和 &求字節(jié)數(shù)運(yùn)算符 sizeof強(qiáng)制類型轉(zhuǎn)換運(yùn)算符分量運(yùn)算符 下標(biāo)運(yùn)算符 其它運(yùn)算符號(hào) 3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3.4.2算術(shù)運(yùn)算符和算術(shù)表達(dá)式 1、 基本的算術(shù)運(yùn)算符 +(加):3+4、 +3 -(減):3-5、 -5 *(乘):3*5 /(除):5/2的值為2;5.0/2的值為2.5; %(取余):5%3的值為2; -5%3的值為-2; 5%(-3)的值為2; -5%(-3)的值為-2; 12.
39、3%3 若a能被b整除,則有:a%b=0 整型數(shù)據(jù)相除,結(jié)果整型。5/3為1求余運(yùn)算兩側(cè)為整型數(shù)據(jù)參與運(yùn)算的數(shù)有一個(gè)是實(shí)型,則結(jié)果為實(shí)型3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 2.算術(shù)表達(dá)式 用算術(shù)運(yùn)算符和括符將操作數(shù)連接起來的式子。 優(yōu)先級(jí):() *、/、% +、- 結(jié)合性:從左至右; 表達(dá)式的值: 數(shù)值型(int、long、unsigned、double); 例如:例如: 已知:已知: float a=2.0; int b=6,c=3; 求解:求解: a*b/c-1.5+ a+(b-5)=? double float long unsigned int char,short
40、float a=2.0;float a=2.0; int b =6,c =3; int b =6,c =3; a a* *b/c -1.5 +a + (b-5)b/c -1.5 +a + (b-5)12.012.0/3/314.0 4.0 - 1.5- 1.52.5 2.5 + 97(int)+ 97(int)99.5 99.5 + 1+ 1100.5100.5(double)(double)3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3.4.3 賦值運(yùn)算符和賦值表達(dá)式1 1、賦值運(yùn)算符、賦值運(yùn)算符 = =2 2、賦值表達(dá)式:、賦值表達(dá)式:用賦值運(yùn)算符將變量和表達(dá)式連接起來的式用賦值
41、運(yùn)算符將變量和表達(dá)式連接起來的式子子 一般形式為:一般形式為: 賦值運(yùn)算符賦值運(yùn)算符 優(yōu)先級(jí):優(yōu)先級(jí): 賦值運(yùn)算符的優(yōu)先級(jí)比算術(shù)運(yùn)算符低。賦值運(yùn)算符的優(yōu)先級(jí)比算術(shù)運(yùn)算符低。 結(jié)合性:自右至左(右結(jié)合性)。結(jié)合性:自右至左(右結(jié)合性)。 求值規(guī)則:求值規(guī)則: 先計(jì)算先計(jì)算“=”=”右邊表達(dá)式的值,再將其值賦給左邊右邊表達(dá)式的值,再將其值賦給左邊的的變量變量。 表達(dá)式的值:賦值號(hào)左邊變量的值即為賦值表達(dá)式的值。表達(dá)式的值:賦值號(hào)左邊變量的值即為賦值表達(dá)式的值。例如例如:(1) x=(y=12)/4 y值為12,x值為3,表達(dá)式的值為3 (2) x=y=12/4 y值為3,x值為3,表達(dá)式的值為3
42、(3) x=(y=12/4) y值為3,x值為3,表達(dá)式的值為3 (4) (x=y)=12/4 3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3、復(fù)合賦值運(yùn)算符 *=、/=、 %=、 +=、 -=等 注意: 復(fù)合運(yùn)算符是一個(gè)運(yùn)算符,但功能上,是兩個(gè)運(yùn)算符功能的組合。 例如: (1) a+=b 相當(dāng)于 a=a+b a*=b 相當(dāng)于 a=a*b a*=b+c 相當(dāng)于 a=a*(b+c) 而不是 a=a*b+c (2) 設(shè)a=12,計(jì)算表達(dá)式a+=a-=a*12和a+=a-=a*=12的值3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 4賦值時(shí)的類型轉(zhuǎn)換賦值時(shí)的類型轉(zhuǎn)換實(shí)型數(shù)據(jù)賦給整型
43、(字符型)變量:去掉小數(shù)部分;實(shí)型數(shù)據(jù)賦給整型(字符型)變量:去掉小數(shù)部分; 如如:int f=23.457; 變量變量f的值為的值為23。整型(字符型)數(shù)據(jù)賦給實(shí)型變量:整型(字符型)數(shù)據(jù)賦給實(shí)型變量: 補(bǔ)足有效位補(bǔ)足有效位。 字符型數(shù)據(jù)賦給整型變量:將字符數(shù)據(jù)(字符型數(shù)據(jù)賦給整型變量:將字符數(shù)據(jù)(8位)放到整型變量的低位)放到整型變量的低8位中,高位中,高8位進(jìn)行位進(jìn)行“符號(hào)擴(kuò)展符號(hào)擴(kuò)展”。 一個(gè)int、short、long、unsigned型數(shù)據(jù)賦給一個(gè)char 型變量:截取低8位賦給字符型變量。 帶符號(hào)的整型數(shù)據(jù)(int型)賦給long型變量:進(jìn)行符號(hào)擴(kuò)展。 帶符號(hào)的long型數(shù)據(jù)賦給
44、int型變量時(shí),只截取低16位賦給int變量。 unsigned int 型數(shù)據(jù)賦給long int變量:高位補(bǔ)0。 int 型數(shù)據(jù)賦給unsigned int變量:內(nèi)存情況不變,但若是負(fù)數(shù),其符號(hào)位也作為數(shù)值賦給unsigned 型變量。3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 5 5、自增與自減運(yùn)算符、自增與自減運(yùn)算符 單目運(yùn)算符,運(yùn)算對(duì)象是變量,不是表達(dá)式或者常量+i,-i:先使變量i的值增1(或減1),再使用變量i的值作為整個(gè)表達(dá)式的值來參加其它的運(yùn)算;i+,i-:先使用變量i的值進(jìn)行其它運(yùn)算,再使變量i的值增1(或減1)。(1) i+; +i;(2) i=3; j=i+;
45、 (3) i=3; j=+i;等價(jià)于等價(jià)于 i=i+1;i=i+1;j=i;i+; j=i;i+; 所以所以i i的值為的值為4 4,j j的值為的值為3 3。i+;j=i; i+;j=i; 所以所以i i的值為的值為4 4,j j的值為的值為4 4。例如:例如:3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 5、自增與自減運(yùn)算符自增與自減運(yùn)算符 結(jié)合性:自右至左。 如: i = 2; j = -i+; 等價(jià)于:j=-(i+); 即: j=-i; i+; “+”與”-“是同優(yōu)先級(jí) 所以i的值為3,j的值為-2。 注意 “+”或“-”自增與自減運(yùn)算符的使用。 設(shè)i=3,k=(i+)+(i+
46、)+(i+),k=? 設(shè)i=3,k=(i+)+(+i)+(+i), k=? 設(shè)i=3,j=4,k=i+j,k=? 設(shè)i=3; printf(“%d %d”,i,-i+);結(jié)果為?3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3.4.4 關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式1. 6種關(guān)系運(yùn)算符: = = != 2. 關(guān)系表達(dá)式:用關(guān)系運(yùn)算符將表達(dá)式連接起來的式子 優(yōu)先級(jí): ( = )( = != ) 結(jié)合性:自左至右; 表達(dá)式的值: 若為真,則結(jié)果為1; 若為假,則結(jié)果為0。 35 的值為 0; 32 的值為 0; 3+(43)*4的值為 3; 3+43 的值為1; a &
47、; | 結(jié)合性:自左至右;結(jié)合性:自左至右; 表達(dá)式的值:表達(dá)式的值: 若為真,則結(jié)果為若為真,則結(jié)果為1 1; 若為假,則結(jié)果為若為假,則結(jié)果為0 0。 3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 int a=5; float b=3.5; !a (0) !(a b) (1) a & b (1) !a&b (0) !a&!b (0) !(a&b) (0) a | b (1) !a|b (1) !a|!b (0) !(a|b) (0) (a 0) (0) (a 0) (1)例如例如結(jié)論:結(jié)論:&: :只要有一個(gè)為假,結(jié)果則為假;只要有一個(gè)為假,
48、結(jié)果則為假;|: :只要有一個(gè)為真,結(jié)果則為真;只要有一個(gè)為真,結(jié)果則為真; ! ! 高高 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 &和和| | 賦值運(yùn)算符賦值運(yùn)算符 低低 4 - 04 - 01 & 21 & 28 48 3 & 2 | 8 3 & 2 | 8 4 - !53.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 注意:注意: 在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。 例如:例如: (1)a = 0; b = 1; c = a+ & ( b = 3
49、 ); 結(jié)果: a為1,b為1,c為0。 (2)a = 1; b = 1; c=0; d = -a | b- | (c = b+3 ); 結(jié)果: a為0,b為0,c為0,d為1。3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 邏輯表達(dá)式一般用于控制語句中的條件: 例如: (1) n是小于m的偶數(shù): (2)year是閏年: (能被4整除但不能被100整除或能被400整除) nm&n%2=0(year%4=0&year%100!=0)|year%400=03.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3.4.6 條件運(yùn)算符 1 1、條件運(yùn)算符、條件運(yùn)算符 ? ?和和:
50、 : , ,它們與三個(gè)操作數(shù)組成三目運(yùn)算。它們與三個(gè)操作數(shù)組成三目運(yùn)算。2 2、形式為、形式為: : ? ? :33 3、求值規(guī)則和表達(dá)式的值求值規(guī)則和表達(dá)式的值: : 真真( (非非0),0),求解表達(dá)式求解表達(dá)式2 2 求解表達(dá)式求解表達(dá)式1 1 條件表達(dá)式的值條件表達(dá)式的值 假假(0),(0),求解表達(dá)式求解表達(dá)式3 3例如例如: int max, a=5, b=3;max=ab?a:b a條件賦值 驗(yàn)證:printf(%d %dn,-a=b+?a+:b+,b );運(yùn)行結(jié)果:4 53.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 5、 結(jié)合性:自右至左; y = x10 ? x/10
51、 : x0 ? x: -x; 等價(jià)于: y = x10 ? x/10 :(x0? x: -x); 思考:當(dāng)x的值為15時(shí),表達(dá)式的結(jié)果為: 當(dāng)x的值為5時(shí),表達(dá)式的結(jié)果為:153.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3.4.7逗號(hào)運(yùn)算符: , 形式形式: : 逗號(hào)表達(dá)式逗號(hào)表達(dá)式1 1,逗號(hào)表達(dá)式,逗號(hào)表達(dá)式2 2,逗號(hào),逗號(hào)表達(dá)式表達(dá)式n n 求值規(guī)則求值規(guī)則: : 從左至右依次計(jì)算各表達(dá)式的值從左至右依次計(jì)算各表達(dá)式的值; 優(yōu)先級(jí):優(yōu)先級(jí): 最低;最低; 結(jié)合性:自左至右;結(jié)合性:自左至右; 表達(dá)式的值表達(dá)式的值:最后一個(gè)表達(dá)式的值最后一個(gè)表達(dá)式的值。3.4 3.4 基本運(yùn)算
52、符和表達(dá)式基本運(yùn)算符和表達(dá)式 例如: a b y 表達(dá)式 y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10 注意: c語言常用逗號(hào)作為分隔符, 例如: int a=3,b=4,c=5; printf(“%d,%d,%d”,(a,b,c); printf(“%d,%d,%d”,a,(a,b,c),c); 結(jié)果為3,5,53.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 3.4.8 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符強(qiáng)制類型轉(zhuǎn)換:指將表達(dá)式的類型強(qiáng)制轉(zhuǎn)換為指定的類
53、型,其一般形式為: (類型名)表達(dá)式其作用:將表達(dá)式的結(jié)果的類型強(qiáng)制轉(zhuǎn)換為類型名所指的類型。 例如例如 (int)(3.4+2.8) 的值為6 強(qiáng)制類型轉(zhuǎn)換時(shí),得到所需類型的中間變量,而原來變量的類型不會(huì)改變。 3.4 3.4 基本運(yùn)算符和表達(dá)式基本運(yùn)算符和表達(dá)式 例如: int a=2,b=5; float x=4.4; 則有: 表達(dá)式 結(jié)果 b/a 2 (float)b/a 2.5 (float)(b/a) 2.0 (int)x%a+x 4.4 (int)x%(a+x) 不合法3.5 c3.5 c基本語句基本語句 c語言的語句可分為以下四類: 簡(jiǎn)單語句(包括輸入/輸出語句) 空語句 復(fù)合語
54、句 流程控制語句3.5 c3.5 c基本語句基本語句 3.5.1簡(jiǎn)單語句1. 表達(dá)式語句就是一個(gè)表達(dá)式加上一個(gè)分號(hào)。 如:a+; x=1; 2.函數(shù)調(diào)用語句由函數(shù)調(diào)用表達(dá)式加分號(hào)構(gòu)成。3. printf(“%d”,a);3. 空語句用一個(gè)分號(hào)表示,其一般形式為:用一個(gè)分號(hào)表示,其一般形式為: ;3.5 c3.5 c基本語句基本語句 c 語言有豐富的標(biāo)準(zhǔn)函數(shù)庫, 可提供各類函數(shù)供用戶調(diào)用,完成預(yù)先設(shè)定好的操作. #include#includemain() int a = 2 , b = 4; float x , y; x = a / 2 + sqrt( b ); /*x=3.0 */ a+ ;
55、 /*a=3 */ y = x * a ; /*y=9.0 */ printf(“x=%6.2f, y= %6.2f ”, x, y);3.5 c3.5 c基本語句基本語句 常用標(biāo)準(zhǔn)庫函數(shù)求數(shù)學(xué)函數(shù)值: fabs(x) (求x的絕對(duì)值)、pow(x,y)(計(jì)算x的y次冪)、 sin(x) 、cos(x) 、 exp(x) (求ex ) 、log(x)(求lnx)等。調(diào)用標(biāo)準(zhǔn)庫函數(shù)要注意以下幾點(diǎn): 在程序中要包含相應(yīng)的頭文件例如: 要使用標(biāo)準(zhǔn)的輸入/輸出函數(shù)printf()等需包含頭文件 #include要使用數(shù)學(xué)函數(shù)sqrt()等需包含頭文件#include 調(diào)用規(guī)則: 函數(shù)名(參數(shù)表)3.5
56、 c3.5 c基本語句基本語句 3.5.2 復(fù)合語句 用一對(duì)花括號(hào)將多條語句組合在一起,在語法上相當(dāng)于一 條語句。 1、一般形式: 內(nèi)部數(shù)據(jù)說明; 語句1; 語句n; 注意: (1)(1)在復(fù)合語句中說明的變量,是局部變量在復(fù)合語句中說明的變量,是局部變量, , 僅在復(fù)合語僅在復(fù)合語句中有效。句中有效。 (2)(2)復(fù)合語句的復(fù)合語句的 之后,不能有分號(hào)。之后,不能有分號(hào)。3.5 c3.5 c基本語句基本語句 復(fù)合語句(程序塊) 示例【例3.3】 main( ) int x=1; int x=2; int x=3; printf(“x=%d”, x); printf(“x=%d”, x); p
57、rintf(“x=%d”, x); 3.6 3.6 數(shù)據(jù)的輸出數(shù)據(jù)的輸出 1格式輸出函數(shù) printf( ) 格式: printf( “”,輸出項(xiàng)1,輸出項(xiàng)2, ,輸出項(xiàng)n ); 例:printf( “x=%d,y=%fn” , x , x+3 );格式控制(用雙引號(hào)括起來,控制輸出項(xiàng)的格式和輸出一些提示信息 )輸出表列(用逗號(hào)分隔的數(shù)據(jù)組,可選項(xiàng))格式控制分為兩個(gè)部分:u普通字符原樣輸出(轉(zhuǎn)義字符按表3-4輸出)u格式說明%+格式字符 (替換輸出) 格式說明的一般形式: % - 0 m.n l(或(或h) 格式字符格式字符 - 左對(duì)齊輸出 0 數(shù)字前的空位填0 m 輸出域?qū)挘ㄩL(zhǎng)度,包括小數(shù)點(diǎn)
58、) 如數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格 如數(shù)據(jù)的位數(shù)大于m,則按實(shí)際位數(shù)輸出 n 輸出精度(小數(shù)位數(shù)) l 或 h 長(zhǎng)度修正符 l 長(zhǎng)整型及雙精度 注:long型的數(shù)據(jù)宜用%ld,double型宜用%lf h 表示短整型 如 %hd %hx3.6 3.6 數(shù)據(jù)的輸出數(shù)據(jù)的輸出 格式字符(規(guī)定了輸出的數(shù)據(jù)形式): %d 輸出十進(jìn)制整數(shù) %x 以十六進(jìn)制無符號(hào)形式輸出整數(shù) %o 以八進(jìn)制無符號(hào)形式輸出整數(shù) %u 以無符號(hào)十進(jìn)制數(shù)形式輸出整數(shù) %f 輸出小數(shù)形式浮點(diǎn)數(shù)(double型用%lf ) %s 輸出字符串 %c 輸出單字符3.6 3.6 數(shù)據(jù)的輸出數(shù)據(jù)的輸出【例1】求運(yùn)行結(jié)果。main()
59、int a=30; printf(%d,%o,%x,%u,%c,a,a,a,a,a);結(jié)果:30,36,1e,30, 結(jié)論: 格式字符與對(duì)應(yīng)輸出項(xiàng)類型要一致,否則正確的運(yùn)算結(jié)果不能得到正確的顯示結(jié)果。3.6 3.6 數(shù)據(jù)的輸出數(shù)據(jù)的輸出 【例】若float y=1234.9999;printf(“%d”,y);則輸出結(jié)果為何? printf函數(shù)使用注意事項(xiàng): 在格式控制字符串中,格式說明與輸出項(xiàng)從左到右在類型上必須一一對(duì)應(yīng)匹配。 在格式控制字符串中,格式說明與輸出項(xiàng)的個(gè)數(shù)應(yīng)該相同。 如果要輸出百分號(hào)(%),則在格式控制串中用兩個(gè)連續(xù)的百分號(hào)(%)來表示。 在調(diào)用printf函數(shù)時(shí),輸出項(xiàng)有自增
60、(自減)運(yùn)算時(shí),計(jì)算輸出項(xiàng)的順序從右至左。 3.6 3.6 數(shù)據(jù)的輸出數(shù)據(jù)的輸出【例】 .格式輸出函數(shù)示例程序 #include main() int i = 97; char ch = a; printf (“i=%d,%cn”, i, i ); 輸出結(jié)果:i =97,a 兩個(gè)輸出項(xiàng)都是變量?jī)蓚€(gè)輸出項(xiàng)都是變量i , i , 但以不同的格式輸?shù)圆煌母袷捷敵龀? ,一個(gè)是輸出的整型數(shù)一個(gè)是輸出的整型數(shù), ,一個(gè)輸出的是字符一個(gè)輸出的是字符a. a. 其格其格式是由式是由%d%d與與%c%c控制的控制的.3.6 3.6 數(shù)據(jù)的輸出數(shù)據(jù)的輸出 字符輸出函數(shù)字符輸出函數(shù) 格式: putchar(c) 其中 c為字符型或整型的常量、變量及其表達(dá)式 功能: 每次向屏幕輸出一個(gè)字符供顯示?!纠壳笠韵鲁绦蜻\(yùn)行結(jié)果 #include main() char x=a; putchar(x); putchar(b); putchar(x+2); putchar(b+2); 結(jié)果:abcd 1格式輸入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地下室人防設(shè)備管理制度
- 廚房小工具倉庫管理制度
- 江蘇學(xué)校學(xué)籍管理制度
- 電信服務(wù)廳設(shè)備管理制度
- 二級(jí)學(xué)院學(xué)分制管理制度
- 四川省寺廟財(cái)務(wù)管理制度
- 無人電梯安全管理制度
- 景區(qū)浮橋安全管理制度
- 公司投影儀領(lǐng)用管理制度
- vr虛擬培訓(xùn)室管理制度
- 安徽省合肥四十五中學(xué)2025屆數(shù)學(xué)七下期末達(dá)標(biāo)檢測(cè)試題含解析
- 2025年Z世代消費(fèi)行為與品牌社群營(yíng)銷研究報(bào)告
- 2025年春季《中華民族共同體概論》第二次平時(shí)作業(yè)-國(guó)開(XJ)-參考資料
- 變電站二次系統(tǒng)介紹(大唐)
- 《流行性感冒辨證論治》課件
- JJG(交通) 208-2024 車貨外廓尺寸動(dòng)態(tài)現(xiàn)場(chǎng)檢測(cè)設(shè)備
- 2024年山西焦煤集團(tuán)招聘考試真題
- 工廠精細(xì)化管理全案
- 鍍鋁技能考試試題及答案
- 車間工藝報(bào)警管理制度
- 天津公務(wù)員考試真題2024
評(píng)論
0/150
提交評(píng)論