版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、P1C語言程序設(shè)計(jì)授課教師:張?zhí)柽h(yuǎn)Email: 遵循ISO/IEC 14882:2003C+標(biāo)準(zhǔn)P2第1章 概 論1.1 C語言背景知識(shí)1.2 C語言的發(fā)展及特點(diǎn)1.3 C語言程序的書寫格式和結(jié)構(gòu)特點(diǎn)1.4 C語言的基本語法單位1.5 簡(jiǎn)單的輸入與輸出1.6 運(yùn)行C程序的一般步驟 2022/9/13P31.1 C語言背景知識(shí)1、何為程序設(shè)計(jì)?C語言有何用?2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng):3、計(jì)算機(jī)的基本原理4、程序設(shè)計(jì)語言2022/9/13P4(1.1)1何為程序設(shè)計(jì)?C語言有何用?程序設(shè)計(jì)是一個(gè)完整的過程,包含:需求分析、總體設(shè)計(jì)、詳細(xì)(功能模塊)設(shè)計(jì)、代碼編寫、調(diào)試、用例測(cè)試和源代碼維護(hù)。程序設(shè)
2、計(jì)的目標(biāo)就是生成能夠可靠執(zhí)行且滿足用戶需求功能的可執(zhí)行應(yīng)用程序。源代碼(又叫源程序)是用程序設(shè)計(jì)語言寫成的,本身無法運(yùn)行于操作系統(tǒng)C+、C是廣泛使用的程序設(shè)計(jì)語言。2022/9/13P5(1.1)1何為程序設(shè)計(jì)?C語言有何用?(續(xù))C是結(jié)構(gòu)化的程序設(shè)計(jì)語言,適合于系統(tǒng)級(jí)程序開發(fā),最大代碼量1w行左右C+是面向?qū)ο螅?Object-oriented )的程序設(shè)計(jì)語言,適合于大規(guī)模級(jí)別的應(yīng)用開發(fā),是當(dāng)今軟件行業(yè)首選的程序設(shè)計(jì)語言之一學(xué)習(xí)C/C+的好處:了解一門行業(yè)推崇的程序設(shè)計(jì)語言;了解面向?qū)ο蟮能浖こ滔到y(tǒng)設(shè)計(jì)概念。C 是C+的子集,C+包含過程性語言部分和面向?qū)ο笳Z言部分,C就是過程性語言部分
3、。2022/9/13P6(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng):(1)二進(jìn)制人們最習(xí)慣和熟悉的計(jì)數(shù)和運(yùn)算方式是十進(jìn)制,即逢十進(jìn)一。而計(jì)算機(jī)內(nèi)數(shù)是以 二進(jìn)制 0 和 1 來表示的。故存在現(xiàn)實(shí)與計(jì)算機(jī)中數(shù)表示方式的轉(zhuǎn)換。同十進(jìn)制數(shù)一樣在計(jì)算機(jī)內(nèi)部二進(jìn)制數(shù)也有多位構(gòu)成,彼此之間逢二進(jìn)一,如同十進(jìn)制數(shù)字的每一位都有一個(gè)權(quán)值(同樣的1在不同數(shù)位上的取值),二進(jìn)制數(shù)也是如此??陕?022/9/13P7(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.)例1:二進(jìn)制位: b7 b6 b5 b4 b3 b2 b1 b0 0 1 0 1 1 1 1 0 權(quán) 值: 27 26 25 24 23 22 21 20 轉(zhuǎn)換成1
4、0進(jìn)制數(shù) = b727 + b626 + b525 + b424 + b323 + b222 + b121 + b020 = 027 + 126 + 025 + 124 + 123 + 122 + 121 + 020 = 64 + 16 + 8 + 4 + 2 = 942022/9/13P8(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.) 把二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法(稱為二翻十運(yùn)算)dec = bn12n1 + bn-22n-2 + .+ b12 + b0 式中,bn1、bn-2、.、b1、b0均為二進(jìn)制數(shù)(二進(jìn)制碼元)。 若二進(jìn)制數(shù)的位數(shù)為n(如8位),n個(gè)bits可表示2n個(gè)不同的數(shù),
5、無符號(hào)數(shù)數(shù)值范圍是0 2n 1,如0 28 1 = 255,即所表示最大數(shù)值255的二進(jìn)制碼,其8個(gè)bits都是1。2022/9/13P9(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.) 位數(shù)越多表示數(shù)的動(dòng)態(tài)范圍越大,且最大數(shù)值再加1則n位都變成0,并向(n+1)位進(jìn)位,稱為“溢出”,這就是說n位二進(jìn)制數(shù)已裝滿了,則溢出一個(gè)2n 數(shù)值后,再?gòu)牧汩_始計(jì)數(shù)。 十六進(jìn)制和八進(jìn)制數(shù):由于二進(jìn)制數(shù)較長(zhǎng),閱讀和書寫困難,且容易出錯(cuò),而且4位二進(jìn)制數(shù)可以用一位十六進(jìn)制數(shù)來表示,3位二進(jìn)制數(shù)對(duì)應(yīng)一位八進(jìn)制數(shù),它們之間具有直接的、唯一的對(duì)應(yīng)關(guān)系如下表所示2022/9/13P10(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)
6、(cont.) 十進(jìn)制 二進(jìn)制 十六進(jìn)制 八進(jìn)制 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 8 10 9 1001 9 11 10 1010 A 12 11 1011 B 13 12 1100 C 14 13 1101 D 15 14 1110 E 16 15 1111 F 172022/9/13P11(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.) 從表中可知,二進(jìn)制數(shù)和十六進(jìn)制數(shù)之間的轉(zhuǎn)換非常簡(jiǎn)捷方便,即4位二進(jìn)制數(shù)可以用一位十六進(jìn)制數(shù)來表示。
7、例如:94 = 0101,1110 = 5E(H)其中,H是Hexadecimal(十六進(jìn)制的)第1個(gè)字母,在計(jì)算機(jī)的教材中用以表明十六進(jìn)制數(shù)。但在代碼中常寫成0X5E. 十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù):為了簡(jiǎn)便,我們討論4位十六進(jìn)制數(shù)的轉(zhuǎn)換情況,(因?yàn)槲覀兺ǔS?位16進(jìn)制數(shù)表示段內(nèi)偏移地址碼)dec=hex3163+hex2162+hex116+hex0例如:0 x80AF= 8163+ 0162+A16+F = 32768+0+160+15 = 32943 八進(jìn)制類推2022/9/13P12(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.)(3)二進(jìn)制數(shù)的原碼、反碼和補(bǔ)碼:以上的整數(shù)都是無符號(hào)整
8、數(shù),考慮帶符號(hào)的整數(shù)在計(jì)算機(jī)內(nèi)如何表示呢 正號(hào)和負(fù)號(hào)如何表示通常取一個(gè)二進(jìn)制數(shù)的最高位為符號(hào)位,1表示負(fù)號(hào),0表示正號(hào)。例如,一個(gè)8bits二進(jìn)制數(shù)的最高位是b7,其后7個(gè)bits是它的數(shù)值,一個(gè)16bits二進(jìn)制數(shù)的最高位是b15,其后15bits是它的數(shù)值。這種表示法叫原碼反碼:正數(shù)的反碼和原碼相同;負(fù)數(shù)的反碼是對(duì)原碼符號(hào)后面二進(jìn)制碼各位取反(即將“0”變?yōu)椤?”,“1”變?yōu)椤?”)。?2022/9/13P13(50)10的八位二進(jìn)制原碼為(00110010)原(50)10的八位二進(jìn)制原碼為(10110010)原(156)10的十六位二進(jìn)制原碼為 (0000000010011100)原(1
9、56)10的十六位二進(jìn)制原碼為 (1000000010011100)原(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.)為什么要用16位二進(jìn)制碼來表示?2022/9/13P14(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.)(50)10的八位二進(jìn)制原碼為(00110010)原(50)10的八位二進(jìn)制原碼為(10110010)原(50)10的八位二進(jìn)制反碼為(00110010)反(50)10的八位二進(jìn)制反碼為(11001101)反50+(-50)= ?2022/9/13P15(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.)在計(jì)算機(jī)中,數(shù)的處理和存儲(chǔ)形式既不是原碼也不是反碼,而是數(shù)的二進(jìn)制補(bǔ)碼!規(guī)則
10、:正數(shù)的補(bǔ)碼和原碼相同;負(fù)數(shù)的補(bǔ)碼是在該數(shù)的反碼的最低位加1。求負(fù)運(yùn)算變補(bǔ)運(yùn)算,即:求出負(fù)號(hào)后面數(shù)的碼按位取反1,如果負(fù)號(hào)后面的數(shù)還是負(fù)數(shù),則遞歸地求出該負(fù)號(hào)后面的數(shù)的碼按位取反+1。減法運(yùn)算用加法來實(shí)現(xiàn)(補(bǔ)碼相加)。參與運(yùn)算的所有數(shù)都以補(bǔ)碼形式表示。在內(nèi)存中以補(bǔ)碼來保存。2022/9/13P16(1.1)2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng)(cont.)(50)10的八位二進(jìn)制原碼為(00110010)原(+50)10的八位二進(jìn)制反碼為 (00110010)反(50)10的八位二進(jìn)制補(bǔ)碼為(00110010)補(bǔ)(50)10的八位二進(jìn)制原碼為(10110010)原(50)10的八位二進(jìn)制反碼為(11001
11、101)反(50)10的八位二進(jìn)制補(bǔ)碼為(11001110)補(bǔ)m個(gè)bits帶符號(hào)的數(shù)可表示2m個(gè)二進(jìn)制數(shù),其數(shù)值范圍:-2m-1 2m-1-1,如-27 27-1=-128 1272022/9/13P17為什么要引入反碼和補(bǔ)碼?根據(jù)帶符號(hào)數(shù)的原碼表示法可知:絕對(duì)值相同的正負(fù)兩數(shù),其數(shù)值位相同,僅最高位(即符號(hào)位)不同。這種表示法對(duì)帶符號(hào)數(shù)的運(yùn)算來講不方便,甚至產(chǎn)生問題。比如:+94和-94相加或者94-94這樣的減法運(yùn)算,正確的結(jié)果應(yīng)該是0,而原碼表示法的結(jié)果卻不為0。為了把減法運(yùn)算轉(zhuǎn)換成帶符號(hào)數(shù)的加法運(yùn)算,引入了反碼和補(bǔ)碼的概念。2022/9/13P181.1 C語言的入門知識(shí)1、何為程序設(shè)
12、計(jì)?C+語言有何用?2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng):3、計(jì)算機(jī)的基本原理4、程序設(shè)計(jì)語言(1)存儲(chǔ)程序式計(jì)算機(jī)原理(馮紐曼VonNeumann式計(jì)算機(jī)原理) 原理:計(jì)算機(jī)在開始特定的工作時(shí)(比如計(jì)算),將預(yù)先準(zhǔn)備好的程序代碼(指可執(zhí)行代碼,而不是源代碼)和數(shù)據(jù)通過一定的方式送到有記憶功能的組件內(nèi)存儲(chǔ)器中保存起來,按一定順序存儲(chǔ),計(jì)算機(jī)工作時(shí),只要知道程序中第一條指令存放的地址單元,就能順序依次取出每一條指令加以識(shí)別,并執(zhí)行指令所規(guī)定的操作,達(dá)到相應(yīng)控制或計(jì)算的目的。2022/9/13P19(1.1)3、計(jì)算機(jī)的基本原理:在CPU(中央處理機(jī))中識(shí)別外設(shè)2022/9/13P20(1.1)3、計(jì)算機(jī)的基
13、本原理:計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu)圖主機(jī)外部設(shè)備外存儲(chǔ)器控制臺(tái)內(nèi)存儲(chǔ)器Memory中央處理單元CPU輸入/輸出接口地址總線數(shù)據(jù)總線控制總線執(zhí)行程序在運(yùn)行前會(huì)被加載到內(nèi)存儲(chǔ)器;程序運(yùn)行過程中的變量數(shù)據(jù)和狀態(tài)值也保存在內(nèi)存儲(chǔ)器中。主機(jī)外部設(shè)備外存儲(chǔ)器控制臺(tái)內(nèi)存儲(chǔ)器Memory中央處理單元CPU輸入/輸出接口地址總線數(shù)據(jù)總線控制總線執(zhí)行程序在運(yùn)行前會(huì)被加載到內(nèi)存儲(chǔ)器;程序運(yùn)行過程中的變量數(shù)據(jù)和狀態(tài)值也保存在內(nèi)存儲(chǔ)器中。執(zhí)行程序在運(yùn)行前會(huì)被加載到內(nèi)存儲(chǔ)器;程序運(yùn)行過程中的變量數(shù)據(jù)和狀態(tài)值也保存在內(nèi)存儲(chǔ)器中。2022/9/13P21(1.1)3、計(jì)算機(jī)的基本原理:(2)計(jì)算機(jī)組成和層次結(jié)構(gòu)2022/9/13P
14、22(1.1)3、計(jì)算機(jī)的基本原理:計(jì)算機(jī)系統(tǒng)的層次結(jié)構(gòu)圖2022/9/13P231.1 C語言的入門知識(shí)1、何為程序設(shè)計(jì)?C+語言有何用?2、計(jì)算機(jī)的數(shù)和編碼系統(tǒng):3、計(jì)算機(jī)的基本原理4、程序設(shè)計(jì)語言2022/9/13P24(1.1)4、程序設(shè)計(jì)語言:(1)匯編語言 讀寫難、維護(hù)難便于記憶代碼需具體機(jī)器 指令系統(tǒng)支持 代碼復(fù)雜、編程效率低;代碼緊湊,執(zhí)行效率高 便于移值機(jī)器語言匯編語言高級(jí)語言2022/9/13P25機(jī)器語言匯編語言C 語言高級(jí)語言翻譯成機(jī)器語言后,方能在宿主機(jī)器中運(yùn)行,這個(gè)翻譯過程稱作“編譯”2022/9/13P26(1.1)4、程序設(shè)計(jì)語言:MCS51系列單片(微型計(jì)算)
15、機(jī)的指令系統(tǒng)中的機(jī)器及匯編指令: 機(jī)器碼指令 匯編指令 操作內(nèi)容 0000 ,0100(04H) INC A A + 1 A 0000 ,1110(0EH) INC R1 R1 + 1 R1 INC A(INC為單詞Increment的縮寫),其操作含義是把累加器A的內(nèi)容(所存放的數(shù)據(jù))增1后再放回A 2022/9/13P27(1.1)4、程序設(shè)計(jì)語言:命令1:將a放入寄存器eax中(ebp是數(shù)據(jù)段指針,a_$是變量 a的偏移位置)mov eax,DWORD PTR a_$ ebp 8b 45 fcmov ecx,DWORD PTR b_$ ebp8b 4d f8add ecx,ecx03 c
16、9sub eax,ecx2b c1Inc eax40mov DWORD PTR a_$ ebp,eax89 45 fc特點(diǎn):晦澀、難懂、程序復(fù)雜工作量大;語言越低級(jí),越靠近機(jī)器;語言越高級(jí)越靠近人的表達(dá)和理解。2022/9/13P28(1.1)4、程序設(shè)計(jì)語言:(2)高級(jí)語言:比如:Fortran、Basic、Pascal(ObjectPascal) 、C/C+、Java等 特點(diǎn):引入數(shù)據(jù)類型和方便的流程控制,以及更接近人的思維模式的程序設(shè)計(jì)語句。 不局限于機(jī)器硬件,而且不要求對(duì)硬件有過多的理解; 屬于高級(jí)語言有相應(yīng)的數(shù)據(jù)類型,還有流程控制語言成分;程序易讀、易維護(hù),編程工作量相對(duì)匯編語言低很
17、多; 代碼移植性較好; 代碼冗余量大,程序執(zhí)行效率較低(有的高級(jí)語言上是先編譯成匯編語言代碼,再編譯成機(jī)器碼)。對(duì)應(yīng)前面的匯編指令用C語言表達(dá):a =a2*b+12022/9/13P291.2 C/C+語言的發(fā)展及特點(diǎn)1.2.1 C/C+語言的發(fā)展過程 C/C+語言是目前世界上流行最廣泛的通用程序設(shè)計(jì)語言。C語言的發(fā)展過程可粗略地分為三個(gè)階段:1970年至1973年為誕生階段,1973年至1988年為發(fā)展階段,1988年以后為成熟階段 。 C語言的發(fā)展過程如下: 1960年:ALGOL 1963年:CPL 1967年:BCPL 1970年:B(托馬森) 1972年:C (里奇)貝爾實(shí)驗(yàn)室 80
18、年代:C+(Bjarne Stroustrup )貝爾實(shí)驗(yàn)室1983年,ANSI制定了ANSI C標(biāo)準(zhǔn);2022/9/13P301.2 C/C+語言的發(fā)展及特點(diǎn)1.2.1 C/C+語言的發(fā)展過程 C/C+是目前世界上流行最廣泛的通用程序設(shè)計(jì)語言。C語言的發(fā)展過程可粗略地分為三個(gè)階段:1970年至1973年為誕生階段,1973年至1988年為發(fā)展階段,1988年以后為成熟階段 。 C語言的發(fā)展過程如下: 1960年:ALGOL 1963年:CPL 1967年:BCPL 1970年:B 1972年:C貝爾實(shí)驗(yàn)室 80年代:C+(Bjarne Stroustrup )貝爾實(shí)驗(yàn)室1983年,ANSI制
19、定了ANSI C標(biāo)準(zhǔn);1987年,ANSI又公布了87 ANSI C標(biāo)準(zhǔn) ,明確定義了與機(jī)器無關(guān)的C語言(美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì))2022/9/13P311.2 C+語言的發(fā)展及特點(diǎn)1.2.1 C/C+語言的發(fā)展過程(cont.)Kernighan和Ritchie合編的The C Programming Language(1988版)詳細(xì)介紹了ANSI C的全部?jī)?nèi)容,這本書成為最成功的計(jì)算機(jī)學(xué)術(shù)著作之一1990年,ISO國(guó)際標(biāo)準(zhǔn)化組織接受了87ANSI C為ISO 標(biāo)準(zhǔn)(ISO9899-1990)1998年ISO國(guó)際標(biāo)準(zhǔn)化組織頒布了C+程序設(shè)計(jì)語言的國(guó)際標(biāo)準(zhǔn)ISO/IEC 1488-1998200
20、3更新的C+標(biāo)準(zhǔn):ISO/IEC 14882:2003 2022/9/13P321.2.2 C/C+語言的特點(diǎn)1. 介乎于高級(jí)語言和匯編語言之間,兼有兩者的優(yōu)點(diǎn)。2. 引用結(jié)構(gòu)化程序架構(gòu),便于軟件工程化。語言簡(jiǎn)潔(目標(biāo)代碼和源代碼都很簡(jiǎn)潔),且表達(dá)能力強(qiáng),使用靈活,易于學(xué)習(xí)和應(yīng)用。編譯系統(tǒng)小巧(關(guān)鍵字個(gè)數(shù)、輸入輸出功能非語法成分、數(shù)據(jù)類型和流程控制結(jié)構(gòu)的最佳組合)5. 可移植性好 。2022/9/13P33 C/C+是一個(gè)杰出的程序設(shè)計(jì)語言,一方面,C/C+的語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大,它給程序員無限的自由空間去隨意的運(yùn)用該語言而不受系統(tǒng)約束,就象前面的數(shù)據(jù)類型可以隨意轉(zhuǎn)換,數(shù)組下標(biāo)可
21、以越界,可以任意訪問任一內(nèi)存段等等,這是受批評(píng)最多的,但也是最受人喜愛的地方,它使得C /C+較之一個(gè)更嚴(yán)謹(jǐn)更完善,而有更多限制的語言更有市場(chǎng)。 靈活和限制:2022/9/13P34靈活和限制: (cont.)指針是C/C+自由和靈活的象征,指針類型可以使程序員訪問機(jī)器系統(tǒng)的所有地址空間,而不正確使用指針則會(huì)導(dǎo)致用戶程序的錯(cuò)誤運(yùn)行,甚至更嚴(yán)重的情況是造成整個(gè)系統(tǒng)的崩潰。正是指針的使用特殊性,C/C+的語法中對(duì)指針的類型檢測(cè)進(jìn)行了嚴(yán)格的限制。不同類型的指針不能參與運(yùn)算、賦值等。2022/9/13P35靈活和限制: (cont.)C/C+語言的靈活性可以使程序員編制任何類型的程序。但是靈活也會(huì)使程
22、序員為此付出代價(jià):由于C/C+語法定義和檢測(cè)較松,程序設(shè)計(jì)自由度大,使得對(duì)程序員的要求較高,Pascal和其它高級(jí)語言都通過嚴(yán)格的語法檢查來保證程序的正確性,而C /C+則放寬了語法檢查(典型的例子不對(duì)數(shù)組下標(biāo)的越界進(jìn)行語法檢查),這就要求程序員要熟練掌握C /C+的語法規(guī)則,仔細(xì)檢查所編程序,確保其正確無誤,而不要過分地依賴C /C+編譯器的查錯(cuò)功能。2022/9/13P36結(jié)構(gòu)化編程 VS 面向?qū)ο缶幊踢^程性語言和面向?qū)ο蟮恼Z言C語言誕生初期,結(jié)構(gòu)化程序設(shè)計(jì)盛行,精巧設(shè)計(jì)的C語言滿足用戶高效執(zhí)行、低成本系統(tǒng)移植等需求。但隨著開發(fā)規(guī)模的擴(kuò)大,其不能很好描述現(xiàn)實(shí)世界中對(duì)象的缺點(diǎn)造成了諸如代碼維
23、護(hù)、重用甚至代碼設(shè)計(jì)等困難C+應(yīng)運(yùn)而生恰恰是順應(yīng)大規(guī)模應(yīng)用的開發(fā),用類(class)類型和對(duì)象來對(duì)應(yīng)現(xiàn)實(shí)世界中的物體,更好地設(shè)計(jì)描述現(xiàn)實(shí)世界的應(yīng)用程序,方便了代碼重用和代碼維護(hù)2022/9/13P371.3 C/C+語言程序書寫格式和結(jié)構(gòu)特點(diǎn) 1.3.1 C/C+語言程序的書寫格式2022/9/13P38【例】 /example.cpp#include int max(int,int); int main(void) int a,b,c; cinab;/從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)存進(jìn)變量a和b c=max(a,b); cout“max =”c=y) z=x; else z=y; return z;
24、 語句結(jié)束符注釋符編譯預(yù)處理指令函數(shù)原型說明語句定義變量賦值語句,函數(shù)調(diào)用函數(shù)定義函數(shù)定義程序執(zhí)行出口main函數(shù)是整個(gè)程序執(zhí)行入口點(diǎn)標(biāo)準(zhǔn)輸出流類的對(duì)象 cout標(biāo)準(zhǔn)輸入流類的對(duì)象 cin、是流插入操作符2022/9/13P39 #include /預(yù)編譯指令不是語句,沒有分號(hào) int max(int,int) ;/語句以分號(hào)結(jié)尾,如函數(shù)原型語句 int main(void) int a,b,c; std:cinab; /std為名字空間,在iostream中定義 c=max(a,b); std:cout“max =”c=y) z =x; else z =y; return z; 標(biāo)準(zhǔn)C+誕生
25、前的用法: #include 標(biāo)準(zhǔn)C+: #include 放進(jìn)名字空間std中2022/9/13P40可以看出,C/C+語言程序有以下若干格式特點(diǎn) :C/C+語言程序習(xí)慣上使用小寫英文字母。C/C+語言程序也是由一個(gè)個(gè)的語句組成。C/C+語言程序使用分號(hào);作為語句的終止符或分隔符。一般情況下,每個(gè)語句占用一個(gè)書寫行的位置。C/C+語言程序中用大括弧對(duì) ,表示程序的結(jié)構(gòu)層次范圍。C/C+語言程序中,為了增強(qiáng)可讀性,可以使用適量的空格和空行。2022/9/13P41標(biāo)準(zhǔn)C+庫(kù)中標(biāo)識(shí)符從屬于std名字空間,注意特殊的訪問格式#include using std:cout; using std:ci
26、n; using std:endl; int main() / cout number1 number2; / 從鍵盤讀入2個(gè)數(shù)據(jù) / return 0; #include using namespace std; int main() / cout number1 number2; /讀入數(shù)據(jù) / return 0; 2022/9/13P421.3.2 C/C+語言程序的結(jié)構(gòu)特點(diǎn)例1.2 C/C+語言程序結(jié)構(gòu)特點(diǎn)(下面代碼使用了標(biāo)準(zhǔn)C的輸入輸出庫(kù)函數(shù)) #include /標(biāo)準(zhǔn)C的輸入輸出頭文件stdio.h int max(int,int) ; int main(void) int a,b
27、,c; scanf(“%d %d”,&a,&b); /scanf庫(kù)函數(shù)在stdio.h中定義,與cin等價(jià) c=max(a,b); printf(“max =%dn”,c); / printf庫(kù)函數(shù)在頭文件stdio.h中定義,與cout等價(jià) return 0; int max(int x,int y) int z; if(x=y) z =x;else z =y; return z; 函數(shù)定義頭函數(shù)定義體2022/9/13P43從上面程序可看出:(1)C/C+語言程序的執(zhí)行是從主函數(shù)開始的,主函數(shù)中的所有語句執(zhí)行完畢,則程序執(zhí)行結(jié)束。(2)main函數(shù)之外的其它函數(shù)都是在執(zhí)行main函數(shù)時(shí),通
28、過嵌套調(diào)用得以執(zhí)行的,在程序中除了可以調(diào)用用戶自己編制的函數(shù)外,還可以調(diào)用由系統(tǒng)提供的標(biāo)準(zhǔn)庫(kù)函數(shù),如scanf、printf 。2022/9/13P44C/C+程序基本結(jié)構(gòu)小結(jié):(1) C/C+程序的組成: 一個(gè)C/C+程序可以由若干個(gè)函數(shù)定義構(gòu)成,其中必須有且只能有一個(gè)以main命名的主函數(shù)。(2) 函數(shù)定義的組成: 函數(shù)定義是一個(gè)獨(dú)立的程序塊,相互不能嵌套。 一個(gè)函數(shù)定義由兩個(gè)部分組成:函數(shù)頭和函數(shù)體。查看案例2022/9/13P45(3) C/C+標(biāo)準(zhǔn)函數(shù) C/C+函數(shù)分為兩類: 標(biāo)準(zhǔn)函數(shù) 用戶定義函數(shù) 用戶定義函數(shù)是由程序員在自己的源程序中編寫的函數(shù)。 標(biāo)準(zhǔn)函數(shù)是由C/C+編譯程序提供
29、的一些通用函數(shù),C/C+標(biāo)準(zhǔn)函數(shù)又稱為C/C+庫(kù)函數(shù)。 用戶程序需要使用標(biāo)準(zhǔn)函數(shù)時(shí),需要使用前用 # include包含該標(biāo)準(zhǔn)函數(shù)所需的系統(tǒng)頭文件即可。2022/9/13P461.4 C/C+語言的基本語法單位 1.4.1 標(biāo)識(shí)符 1.4.2 關(guān)鍵字 1.4.3 分隔符 1.4.4 常量2022/9/13P471.4.1 標(biāo)識(shí)符1.標(biāo)識(shí)符:在高級(jí)語言程序中由用戶(即程序員)或編譯程序(有時(shí)稱系統(tǒng))定義的常量、變量、數(shù)據(jù)類型、函數(shù)、過程和程序等的名字。2.標(biāo)識(shí)符的組成規(guī)則 :由字母、下劃線和數(shù)字(09)組成,其第一個(gè)字符必須是字母或下劃線。 字母要區(qū)分大小寫;下劃線_被作為一個(gè)字符看待。3. 標(biāo)
30、識(shí)符的有效長(zhǎng)度:能夠被編譯程序識(shí)別的標(biāo)識(shí)符的字符的數(shù)目稱為標(biāo)識(shí)符的有效長(zhǎng)度。標(biāo)準(zhǔn)C規(guī)定標(biāo)識(shí)符的有效長(zhǎng)度為31。注意:標(biāo)識(shí)符不能與關(guān)鍵字同名。2022/9/13P481.4.2 關(guān)鍵字 關(guān)鍵字由固定的小寫字母組成,是系統(tǒng)預(yù)定的名字,用于表示C/C+語言的語句結(jié)構(gòu)、數(shù)據(jù)類型、存儲(chǔ)類型或運(yùn)算符。關(guān)鍵字又稱為保留字 。標(biāo)準(zhǔn)C定義的32個(gè)關(guān)鍵字如下(C+在C基礎(chǔ)上擴(kuò)充到63個(gè)):auto break case char constcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeo
31、fstaticstructswitchtypedefunionunsignedvoidvolatilewhile2022/9/13P491.4.3 分隔符 分隔符:包括空格符、制表符、換行符、換頁符及注釋符。程序中兩個(gè)相鄰的標(biāo)識(shí)符、關(guān)鍵字和常量之間必須用分隔符分開(通常用空格符,逗號(hào)符等)。1.4.4 常量(文字量) 文字量: 程序中其數(shù)值不發(fā)生變化的量.C/C+語言中的常量有三類:數(shù),字符和字符串 。此外,C/C+語言中還經(jīng)常使用兩種表現(xiàn)形式不同的常量:換碼序列(又叫轉(zhuǎn)義序列符)和符號(hào)常量.。常量的類型是由常量的文字自身隱含說明的 。2022/9/13P501.5 簡(jiǎn)單的輸入與輸出 一個(gè)完整
32、的計(jì)算機(jī)程序,常常要求具備輸入輸出功能.C/C+語言本身沒有配備完成輸入輸出的語句.C/C+語言程序的輸入輸出功能是通過調(diào)用系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)實(shí)現(xiàn)的 。2022/9/13P511.5.1 格式化輸入輸出函數(shù) 格式化輸入輸出函數(shù)是按指定的格式完成輸入輸出過程. 1. 輸出函數(shù)printf( ) 輸出函數(shù)printf( )的一般使用形式如下: printf(“輸出格式”,輸出項(xiàng)系列);調(diào)用前必須在程序開頭加上頭文件包含include 2022/9/13P52(1)printf( )函數(shù)的功能是按照給定的輸出格式、把輸出項(xiàng)輸出到標(biāo)準(zhǔn)輸出設(shè)備,輸出格式中用%打頭后面跟有一個(gè)字母的部分稱為轉(zhuǎn)換說明符。
33、%d、%u 十進(jìn)制整數(shù) %x 十六進(jìn)制整數(shù) %o八進(jìn)制整數(shù) %f 、%e、%g 浮點(diǎn)小數(shù)(實(shí)數(shù)) %c 單一字符 %s 字符串例:printf(“v=%fn”,v); %f可以理解為:占位符2022/9/13P53(2)輸出格式中除轉(zhuǎn)換說明符以外的其它字符都原封不動(dòng)地輸出到標(biāo)準(zhǔn)輸出設(shè)備顯示器上。其中以打頭后跟一個(gè)字母或數(shù)字的部分稱為換碼序列。它們的作用是輸出控制符號(hào)和特殊字符,如上述輸出格式中的n是回車換行的控制代碼 。 有關(guān)換碼系列的內(nèi)容將在在第二章詳細(xì)介紹。2022/9/13P54(3)使用printf()函數(shù)可以有一個(gè)以上的輸出項(xiàng),這時(shí)輸出格式中的轉(zhuǎn)換說明符與輸出項(xiàng)的個(gè)數(shù)必須相同。它們按
34、各自的先后順序一一對(duì)應(yīng)。如下所示:printf(. %d %x %f, a, b, c);printf(. %d %x %f, a, b, c);2022/9/13P552輸入函數(shù)scanf( )輸入函數(shù)scanf( )的一般使用形式如下: scanf(輸入格式,輸入項(xiàng)系列);調(diào)用前包含頭文件stdio.h行緩沖輸入,需要敲入回車鍵。(1)輸入格式串中一般只使用轉(zhuǎn)換說明符,否則容易出錯(cuò)。(2)輸入項(xiàng)必須是地址量,(變量名前加上&表示變量的地址)。2022/9/13P56(3) 輸入分隔符的指定。在雙引號(hào)包圍的輸入格式中,兩個(gè)轉(zhuǎn)換說明符%之間出現(xiàn)的字符就是他們對(duì)應(yīng)輸入項(xiàng)之間的分隔符。 如scan
35、f(%d:%d,&a,&b);這時(shí)輸入的數(shù)據(jù)之間必須有分隔符,例如輸入3和5,則實(shí)際輸入時(shí)一定要輸入3:5(4) 輸入長(zhǎng)度的給定 如 scanf(%4d%2d%2d”,&a,&b,&c); 假設(shè)一個(gè)輸入序列為:19900125 則a=1990,b= 1,c=25(5) 輸入數(shù)據(jù)時(shí),遇到下列情況時(shí)該數(shù)據(jù)認(rèn)為結(jié)束 a.遇空格、回車或者tab鍵 b.遇寬度結(jié)束,如“%3d”只取輸入項(xiàng)三列 c.遇非法輸入結(jié)束。2022/9/13P571.5.2 字符輸入輸出函數(shù) 字符輸入輸出函數(shù)是以一個(gè)字節(jié)的字符代碼為單位完成輸入輸出過程的。字符輸入函數(shù)getchar( )包含頭文件stdio.h。行緩沖輸入。 ge
36、tchar( )的功能是從鍵盤讀入一個(gè)符號(hào)。在程序中必須用另一個(gè)變量接收讀取的符號(hào)對(duì)應(yīng)的代碼值,如下所示: c=getchar( ); getchar(c);/2022/9/13P582. 字符輸出函數(shù)putchar( )包含頭文件stdio.hputchar的功能是輸出一個(gè)字符到標(biāo)準(zhǔn)輸出設(shè)備(如:顯示器)顯示,它的常用調(diào)用格式如下: putchar(c);或putchar(c); 它把變量c的值作為ASCII編碼值,把與該編碼值對(duì)應(yīng)的字符符號(hào)輸出到標(biāo)準(zhǔn)輸出設(shè)備顯示;后者直接輸出小寫字母c 2022/9/13P591.5.3 字符串輸入輸出函數(shù)1、gets() 包含stdio.h頭文件 調(diào)用格
37、式: char str33; gets(str); 功能:實(shí)現(xiàn)從標(biāo)準(zhǔn)輸入設(shè)備中讀入一個(gè)以回車換行符為結(jié)尾的字符串,將回車換行符n轉(zhuǎn)換成空字符0,送入字符數(shù)組str中。 說明:一種行緩沖輸入,用戶敲入回車,函數(shù)才開始提取數(shù)據(jù)。提取的數(shù)據(jù)被當(dāng)做字符串。2022/9/13P602、puts() 包含stdio.h頭文件 調(diào)用格式: 1、puts(“Hello!”);注:輸出完 Hello!后會(huì)自動(dòng)回車到下一行 2、char string100 =“This is an example of out-putting string !”; puts(string);功能:實(shí)現(xiàn)字符串在外設(shè)上輸出顯示。把str數(shù)組中的字符串輸出到標(biāo)準(zhǔn)輸出設(shè)備上,并將隱含的0 轉(zhuǎn)換為回車換行操作。2022/9/13P611.5.4 流輸入輸出控制一、標(biāo)準(zhǔn)流 標(biāo)準(zhǔn)輸入輸出流控制是C+中引入的,在這里我們只作一個(gè)簡(jiǎn)單的介紹。在C中標(biāo)準(zhǔn)輸入設(shè)備是鍵盤,設(shè)備名為 stdin,標(biāo)準(zhǔn)輸出設(shè)備為顯示器,設(shè)備名為stdout;在C+中同樣的輸入輸出設(shè)備,其設(shè)備名對(duì)應(yīng)為cin與cout,它們實(shí)際上是C+中 類istream和類ostream的對(duì)象。 I / O流是實(shí)際輸入輸出的一系列字
溫馨提示
- 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. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人擔(dān)保合同范本(消費(fèi)信貸含風(fēng)險(xiǎn)控制)2篇
- 二零二五年度個(gè)人住宅節(jié)能改造合同
- 二零二五版大宗商品運(yùn)輸委托合同書標(biāo)準(zhǔn)模板2篇
- 2025版水電站工程勞務(wù)分包合同施工現(xiàn)場(chǎng)管理與協(xié)調(diào)3篇
- 二零二五年度個(gè)人二手房交易房屋交易價(jià)格協(xié)商服務(wù)合同
- 二零二五版房產(chǎn)抵押擔(dān)保服務(wù)合同范本
- 分包項(xiàng)目施工安全協(xié)議書
- 房產(chǎn)發(fā)展項(xiàng)目廣告代理委托協(xié)議
- 二零二五版?zhèn)€人土地抵押借款合同簽訂流程指南2篇
- 集裝箱買賣合同
- JJG 692-2010無創(chuàng)自動(dòng)測(cè)量血壓計(jì)
- 三年級(jí)下冊(cè)口算天天100題(A4打印版)
- 徐州市2023-2024學(xué)年八年級(jí)上學(xué)期期末地理試卷(含答案解析)
- CSSD職業(yè)暴露與防護(hù)
- 飲料對(duì)人體的危害1
- 數(shù)字經(jīng)濟(jì)學(xué)導(dǎo)論-全套課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)項(xiàng)目三 移動(dòng)商務(wù)運(yùn)營(yíng)內(nèi)容的策劃和生產(chǎn)
- 中考記敘文閱讀
- 產(chǎn)科溝通模板
- 2023-2024學(xué)年四川省成都市小學(xué)數(shù)學(xué)一年級(jí)下冊(cè)期末提升試題
- GB/T 2462-1996硫鐵礦和硫精礦中有效硫含量的測(cè)定燃燒中和法
評(píng)論
0/150
提交評(píng)論