




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、會(huì)計(jì)學(xué)1C語(yǔ)言程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)PPT項(xiàng)目7 函數(shù)1項(xiàng)目8 指針2項(xiàng)目9 結(jié)構(gòu)與聯(lián)合3項(xiàng)目10 位運(yùn)算4項(xiàng)目11 文件5 目 錄項(xiàng)目1 C語(yǔ)言概述1項(xiàng)目2 數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式2項(xiàng)目3 順序結(jié)構(gòu)程序設(shè)計(jì)3項(xiàng)目4 選擇結(jié)構(gòu)程序設(shè)計(jì)4項(xiàng)目5 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5項(xiàng)目6 數(shù)組5附件5第1頁(yè)/共203頁(yè)項(xiàng)目1 C語(yǔ)言概論1項(xiàng)目導(dǎo)讀項(xiàng)目目標(biāo)項(xiàng)目任務(wù)第2頁(yè)/共203頁(yè) 本項(xiàng)目主要對(duì)C語(yǔ)言的一些基礎(chǔ)知識(shí)及其字符集和詞匯進(jìn)行介紹,使讀者在學(xué)習(xí)C語(yǔ)言之前對(duì)其有個(gè)全面的認(rèn)識(shí)。 項(xiàng)目導(dǎo)讀 安裝、配置TC2.0和VC+6.0,成功啟動(dòng)TC2.0和VC+6.0。 能編寫(xiě)一個(gè)簡(jiǎn)單的C程序的源文件,并編譯該源文件,鏈接
2、目標(biāo)文件得到可執(zhí)行文件。項(xiàng)目目標(biāo)第3頁(yè)/共203頁(yè)任務(wù)1.1 C語(yǔ)言的發(fā)展與特點(diǎn) C語(yǔ)言是1972年由美國(guó)的Dennis Ritchie設(shè)計(jì)發(fā)明的,并首次在配備了UNIX操作系統(tǒng)的DEC PDP-11計(jì)算機(jī)上實(shí)現(xiàn)。它由早期的編程語(yǔ)言BCPL(Basic Combined Programming Language)發(fā)展演變而來(lái)。 C語(yǔ)言的特點(diǎn)1、C語(yǔ)言是中級(jí)語(yǔ)言 2、C語(yǔ)言是結(jié)構(gòu)化語(yǔ)言 3、C語(yǔ)言功能齊全 4、C語(yǔ)言適用范圍廣語(yǔ)言適用范圍廣 第4頁(yè)/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 本任務(wù)通過(guò)幾個(gè)簡(jiǎn)單的C程序,介紹C語(yǔ)言的基本組成和格式。案例案例1.1main( )printf(“This is
3、 a c program.n”);本程序的功能是輸入下列一行信息:This is a c program.第5頁(yè)/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 程序說(shuō)明程序說(shuō)明:(1)main函數(shù)是“主函數(shù)”,每一個(gè)C程序必須有一個(gè)main函數(shù)。(2)函數(shù)體由大括弧 括起來(lái)。本例中,主函數(shù)內(nèi)只有一個(gè)輸出語(yǔ)句,printf(“This is a c program.n”);是C語(yǔ)言的輸出函數(shù)(具體詳見(jiàn)項(xiàng)目3)。雙引號(hào)內(nèi)的字符串將照原樣輸出。(3)“n”是換行符,即在輸出“This is a c program.”后換行。(4)分號(hào)是C語(yǔ)句的基本構(gòu)成,每一個(gè)C語(yǔ)句后都應(yīng)再加上分號(hào),分號(hào)是語(yǔ)句的結(jié)束標(biāo)志。第6頁(yè)
4、/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 本任務(wù)通過(guò)幾個(gè)簡(jiǎn)單的C程序,介紹C語(yǔ)言的基本組成和格式。案例案例1.2main() /*求兩數(shù)之和求兩數(shù)之和*/ int a,b,sum; /*本行開(kāi)始的以下本行開(kāi)始的以下4條為條為C語(yǔ)句語(yǔ)句*/ a=123;b=456; sum=a+b; printf(“sum is %dn”,sum);本程序的功能是求兩數(shù)之和本程序的功能是求兩數(shù)之和。第7頁(yè)/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 程序說(shuō)明程序說(shuō)明:(1)/*/是注釋語(yǔ)句,此信息對(duì)編譯和運(yùn)行不起作用。(2) 程序第二行的含義是定義a、b和sum為整體變量。(3)“sum=a+b;”的含義是把變量a和b的和賦給
5、變量sum。(4)該程序的輸出結(jié)果是:sum is 579。第8頁(yè)/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 案例案例1.3 main( ) /*求一個(gè)數(shù)的絕對(duì)值求一個(gè)數(shù)的絕對(duì)值*/ int x,y; scanf(“%d”,&x); y=abs(x); printf(“abs=%d”,y);int abs (int z) int w;if (z=0) w=z;else w=-z;return(w);本程序的功能是求本程序的功能是求z的絕對(duì)值。的絕對(duì)值。第9頁(yè)/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 程序說(shuō)明程序說(shuō)明:(1)本程序包括兩個(gè)函數(shù):主函數(shù))本程序包括兩個(gè)函數(shù):主函數(shù)main和被調(diào)用函數(shù)和被調(diào)用函數(shù)
6、abs。(2)函數(shù))函數(shù)abs的作用是將的作用是將z的絕對(duì)值返回給主調(diào)函數(shù)的絕對(duì)值返回給主調(diào)函數(shù)main(返回值是通過(guò)函數(shù)名(返回值是通過(guò)函數(shù)名abs帶回到帶回到main函數(shù)的調(diào)用處的)。函數(shù)的調(diào)用處的)。(3)程序中的)程序中的scanf函數(shù)的作用是從鍵盤(pán)上輸入函數(shù)的作用是從鍵盤(pán)上輸入x的值。的值。&x中的中的“&”的含義是的含義是“取地址取地址”,此,此scanf函數(shù)的作用是將數(shù)值輸入到變量函數(shù)的作用是將數(shù)值輸入到變量x的地址所標(biāo)志的單元中的地址所標(biāo)志的單元中去,也就是輸入給變量去,也就是輸入給變量x。關(guān)于。關(guān)于scanf函數(shù)詳見(jiàn)項(xiàng)目函數(shù)詳見(jiàn)項(xiàng)目3。(4)main函數(shù)中的第四行為調(diào)用函數(shù)中
7、的第四行為調(diào)用abs函數(shù),在調(diào)用時(shí)將實(shí)際參數(shù)函數(shù),在調(diào)用時(shí)將實(shí)際參數(shù)x傳給傳給abs函數(shù)函數(shù)中的形式參數(shù)中的形式參數(shù)z,然后輸入,然后輸入y的值。的值。(5)printf函數(shù)中雙引號(hào)內(nèi)的函數(shù)中雙引號(hào)內(nèi)的abs=%d,在輸出時(shí),其中的,在輸出時(shí),其中的%d將由將由y值取代,值取代,“abs=”原樣輸出。該程序的運(yùn)行結(jié)果是:原樣輸出。該程序的運(yùn)行結(jié)果是: 假定從鍵盤(pán)上輸入假定從鍵盤(pán)上輸入x的值為的值為:-6 則則y = 6(6)本例用到了函數(shù)調(diào)用、實(shí)際參數(shù)和形式參數(shù)等概念,只是做了簡(jiǎn)單的解釋?zhuān)┍纠玫搅撕瘮?shù)調(diào)用、實(shí)際參數(shù)和形式參數(shù)等概念,只是做了簡(jiǎn)單的解釋?zhuān)x者若對(duì)此不大理解,可先不予深究,在學(xué)到
8、函數(shù)項(xiàng)目后的相關(guān)知識(shí)后,問(wèn)題,讀者若對(duì)此不大理解,可先不予深究,在學(xué)到函數(shù)項(xiàng)目后的相關(guān)知識(shí)后,問(wèn)題自會(huì)迎刃而解。這里介紹此案例的目的,是想讓讀者對(duì)自會(huì)迎刃而解。這里介紹此案例的目的,是想讓讀者對(duì)C語(yǔ)言的組成和形式有一語(yǔ)言的組成和形式有一個(gè)初步了解。個(gè)初步了解。第10頁(yè)/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 通過(guò)以上三個(gè)例子,我們可以得到以下幾點(diǎn)通過(guò)以上三個(gè)例子,我們可以得到以下幾點(diǎn): 1、C程序是由函數(shù)構(gòu)成的。一個(gè)C源程序至少包含一個(gè)main函數(shù),也可以包含一個(gè)main函數(shù)和若干個(gè)其它函數(shù)。因此,函數(shù)是C語(yǔ)言的基本單位。被調(diào)用函數(shù)可以是系統(tǒng)提供的庫(kù)函數(shù)(例如printf函數(shù)和scanf函數(shù)),也可
9、以是用戶(hù)根據(jù)需要自編譯的用戶(hù)函數(shù)(例如案例1.3中的abs函數(shù))。 2、函數(shù)及其結(jié)構(gòu)。一個(gè)函數(shù)由兩部分組成:即函數(shù)首部和函數(shù)體。函數(shù)首部包括函數(shù)類(lèi)型、函數(shù)名、函數(shù)參數(shù)(形參)、形參類(lèi)型;函數(shù)體一般包括說(shuō)明部分和執(zhí)行部分。 函數(shù)結(jié)構(gòu)如下: 函數(shù)類(lèi)型 函數(shù)名 (形參表) 說(shuō)明部分: 函數(shù)體 執(zhí)行部分; 函數(shù)體以左花括號(hào)“”開(kāi)始,以右花括號(hào)“”結(jié)束,其間可以有說(shuō)明部分和執(zhí)行部分。在某些情況下,甚至可以既無(wú)說(shuō)明部分,也無(wú)執(zhí)行部分。如:dump( ) 它是一個(gè)空函數(shù),表示什么也不做,但它是合法的 第11頁(yè)/共203頁(yè)任務(wù)1.2 認(rèn)識(shí)C語(yǔ)言 3、一個(gè)C程序中,不論main函數(shù)在整個(gè)程序中的位置如何(mai
10、n函數(shù)可以放在程序最前頭,也可以放在程序最后頭,或在一些函數(shù)之前,或在另一些函數(shù)之后),但程序執(zhí)行時(shí),總是從main函數(shù)開(kāi)始執(zhí)行。 4、C程序書(shū)寫(xiě)格式自由,一行中可以書(shū)寫(xiě)多個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以書(shū)寫(xiě)在連續(xù)的多行上。當(dāng)一行寫(xiě)不下時(shí),用連字符“-”連接,并且每條語(yǔ)句的后面以分號(hào)“;”作為結(jié)束標(biāo)記。 5、C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。C語(yǔ)言的函數(shù)庫(kù)提供了標(biāo)準(zhǔn)輸入輸出函數(shù)。 6、可以用/*對(duì)C程序中的任何一部分做注釋?zhuān)栽黾映绦虻目勺x性。 第12頁(yè)/共203頁(yè)任務(wù)1.3 C程序的執(zhí)行過(guò)程 C語(yǔ)言程序是一種編譯型的中級(jí)語(yǔ)言。用C語(yǔ)言編寫(xiě)的源程序必須先進(jìn)行編譯和連接,生成可執(zhí)行的程序之后才能執(zhí)行。執(zhí)行一個(gè)C
11、語(yǔ)言程序一般經(jīng)過(guò)如下幾個(gè)步驟。 1、編輯 2、編譯 3、連接 4、運(yùn)行 C語(yǔ)言程序的開(kāi)發(fā)是一個(gè)由編輯開(kāi)始,經(jīng)過(guò)編譯、連接和運(yùn)行,程序如果有錯(cuò)誤,又回到編輯的反復(fù)循環(huán)過(guò)程,如圖所示。 第13頁(yè)/共203頁(yè)項(xiàng)目2 數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式1項(xiàng)目導(dǎo)讀項(xiàng)目目標(biāo)項(xiàng)目任務(wù)第14頁(yè)/共203頁(yè) C語(yǔ)言中,為解決具體問(wèn)題,需要采用多種類(lèi)型的數(shù)據(jù);本項(xiàng)目將主要介紹C語(yǔ)言的數(shù)據(jù)類(lèi)型、常用運(yùn)算符和表達(dá)式。 項(xiàng)目導(dǎo)讀學(xué)會(huì)聲明整型變量,為聲明的變量賦值,交換變量的值,輸出變量的值。學(xué)會(huì)聲明浮點(diǎn)型變量,為聲明的浮點(diǎn)型變量賦值,對(duì)浮點(diǎn)型變量值進(jìn)行加法運(yùn)算,并將運(yùn)算結(jié)果存放到浮點(diǎn)型變量中,輸出浮點(diǎn)型變量的值。學(xué)會(huì)聲明字符型變
12、量,為聲明的字符型變量賦值,按%d或%c格式輸出變量的值。項(xiàng)目目標(biāo)第15頁(yè)/共203頁(yè)任務(wù)2.1 常量、變量和標(biāo)示符 標(biāo)識(shí)符標(biāo)識(shí)符 在計(jì)算機(jī)高級(jí)語(yǔ)言中,用來(lái)對(duì)變量、符號(hào)常量名、函數(shù)、數(shù)組、類(lèi)型等命名的有效字符序列統(tǒng)稱(chēng)為標(biāo)識(shí)符(在計(jì)算機(jī)高級(jí)語(yǔ)言中,用來(lái)對(duì)變量、符號(hào)常量名、函數(shù)、數(shù)組、類(lèi)型等命名的有效字符序列統(tǒng)稱(chēng)為標(biāo)識(shí)符(identifier)。簡(jiǎn)單地說(shuō),標(biāo)識(shí)符就是一個(gè)對(duì)象的名字。)。簡(jiǎn)單地說(shuō),標(biāo)識(shí)符就是一個(gè)對(duì)象的名字。 C語(yǔ)言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線(xiàn)組成,且第1個(gè)字符必須為字母或下劃線(xiàn)。下面列出的是合法的標(biāo)識(shí)符,可以作為變量名: Sum, average, _total, Class,
13、 day, month, Student_name, lotus_1_2_3,BASIC, li_ling. 下面是不合法的標(biāo)識(shí)符和變量名: M. D. John, ¥123, #33, 3D64, ab 注意注意:編譯系統(tǒng)將大寫(xiě)字母和小寫(xiě)字母認(rèn)為是兩個(gè)不同的字符。因此,sum和SUM是兩個(gè)不同的變量名。同樣,Class和class也是兩個(gè)不同的變量名。通常,變量名用小寫(xiě)字母表示,習(xí)慣用對(duì)應(yīng)的英文字母縮寫(xiě)形式,做到見(jiàn)名知意,與人們?nèi)粘A?xí)慣一致,以增加可讀性。 第16頁(yè)/共203頁(yè)任務(wù)2.1 常量、變量和標(biāo)示符 常量和變量常量和變量1、常量、常量 在程序運(yùn)行過(guò)程中,其值不能被改變的量稱(chēng)為常量。如
14、案例2.1程序中的5,9,32和案例2.2程序中的1000,0.0036,0.0225,0.0198都是常量。數(shù)值常量就是數(shù)學(xué)中的常數(shù)。 常用的常量有以下幾類(lèi): 整型常量。如1000,12345,0,-345等都是整型常量。 實(shí)型常量。有兩種表現(xiàn)形式: 十進(jìn)制小數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成。如122.456,0.345,-55.79,0.0,12.0等。 指數(shù)形式,如12.34e3(代表12.34103),-345.87e-25(代表-345.8710-25),0.145E25(代表0.14510-25)等。 由于在計(jì)算機(jī)輸入或輸出時(shí),無(wú)法表示上標(biāo)或下標(biāo),故規(guī)定以字母e或E代表以10為底的指數(shù)。
15、但應(yīng)注意:e或E之前必須有數(shù)字,且e或E后面必須為整數(shù)。如不能寫(xiě)成e4,12e2.5。 第17頁(yè)/共203頁(yè)任務(wù)2.1 常量、變量和標(biāo)示符 字符常量。有兩種形式的字符常量: 普通字符,用單撇號(hào)括起來(lái)的一個(gè)字符,如a,Z,3, ?,#。 注意:注意:?jiǎn)纹蔡?hào)只是界限符,字符常量只能是一個(gè)字符,不包括單撇號(hào)。a和A是不同的字符常量。字符常量存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)單元中時(shí),并不是存儲(chǔ)字符(如a,z,#等)本身,而是以其代碼(一般采用ASCII代碼)存儲(chǔ)的,例如字符A的ASCII話(huà)代碼是97,因此,在存儲(chǔ)單元中存放的是97(以二進(jìn)制形式存放)。ASCII字符與代碼對(duì)照表見(jiàn)附錄。 轉(zhuǎn)義字符,除了以上形式的字符常
16、量外,C還允許用一種特殊形式的字符常量,就是以字符開(kāi)頭的 字符序列。例如,前面已經(jīng)遇到過(guò)的,在printf函數(shù)中的n它代表一個(gè)“換行”符。 常用的以“”開(kāi)頭的特殊字符見(jiàn)表 2.1第18頁(yè)/共203頁(yè)任務(wù)2.1 常量、變量和標(biāo)示符 表2.1第19頁(yè)/共203頁(yè)任務(wù)2.1 常量、變量和標(biāo)示符 字符串常量。如“boy”,“123”等,用雙撇號(hào)把若干個(gè)字符括起來(lái),字符串常量是雙撇號(hào)中的全部字符(但不包括雙撇號(hào)本身)。注意不能錯(cuò)寫(xiě)成CHINA,boy,123。單撇號(hào)內(nèi)只能包含一個(gè)字符,雙撇號(hào)內(nèi)可以包含一個(gè)字符串。 符號(hào)常量。用#define指令,指定用一個(gè)符號(hào)名稱(chēng)代表一個(gè)常量。如: #define PI
17、 3.1416 注意行末沒(méi)有分號(hào) 經(jīng)過(guò)以上的指定后,本文件中從此行開(kāi)始所有的PI都代表3.1416。在對(duì)程序進(jìn)行編譯前,預(yù)處理器先對(duì)PI進(jìn)行處理,把所有的PI全部置換為3.1416。這種用一個(gè)符號(hào)名代表一個(gè)常量的,稱(chēng)為符號(hào)常量。在預(yù)編譯后,符號(hào)常量全部變成字面常量(3.14159)。 使用符號(hào)常量有以下好處。 含義清楚。 在需要改變程序中多處用到的同一個(gè)常量時(shí),能做到“一改全改”。 第20頁(yè)/共203頁(yè)任務(wù)2.1 常量、變量和標(biāo)示符 2、變量 變量代表一個(gè)有名字的、具有特定屬性的存儲(chǔ)單元。它用來(lái)存放數(shù)據(jù),也就是存放變量的值。在程序運(yùn)行期間,變量的值是可以改變的。 變量必須先定義,后使用。在定義
18、時(shí)指定該變量的名字和類(lèi)型。一個(gè)變量應(yīng)該有一個(gè)名字,以便被引用。請(qǐng)注意區(qū)分變量名和變量值這兩個(gè)不同的概念,圖2.1中a是變量名,3是變量a的值,即存放在變量a的內(nèi)存單元中的數(shù)據(jù)。變量名的實(shí)質(zhì)是以一個(gè)名字代表的一個(gè)存儲(chǔ)地址。在對(duì)程序編譯連接時(shí)由編譯系統(tǒng)給每一個(gè)變量名分配對(duì)應(yīng)的內(nèi)存地址。從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該儲(chǔ)存單元中讀取數(shù)據(jù)。 圖2.1第21頁(yè)/共203頁(yè)任務(wù)2.1 常量、變量和標(biāo)示符 3、常變量 如 const int a=3表示a被定義為一個(gè)整型變量,指定其值為3,而且在變量存在期間其值不能改變。 常變量與常量的異同是:常變量具有變量的基本屬性,有類(lèi)型,占存儲(chǔ)
19、單元,只是不允許改變其值??梢哉f(shuō),常變量是有名字的不變量,而常量是沒(méi)有名字的不變量,有名字就便于在程序中被引用。 第22頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型 在定義變量時(shí)需要指定變量的類(lèi)型。C語(yǔ)言要求在定義所有的變量時(shí)都要指定變量的類(lèi)型。常量也是區(qū)分類(lèi)型的。 所謂類(lèi)型,就是對(duì)數(shù)據(jù)分配存儲(chǔ)單元的安排,包括存儲(chǔ)單元的長(zhǎng)度(占多少字節(jié))以及數(shù)據(jù)的存儲(chǔ)形式。不同的類(lèi)型分配不同的長(zhǎng)度和存儲(chǔ)形式。 C語(yǔ)言允許使用的類(lèi)型見(jiàn)圖2.2。 圖2.2第23頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型 整型數(shù)據(jù) 1、整型數(shù)據(jù)的分類(lèi)整型數(shù)據(jù)的分類(lèi) 基本整型(int型) 編譯系統(tǒng)為int型數(shù)據(jù)分配2個(gè)字節(jié)或4個(gè)字節(jié)(有具體的C編譯系
20、統(tǒng)自行決定)。如TurboC 2.0為每一個(gè)整型數(shù)據(jù)分配2個(gè)字節(jié)(16個(gè)二進(jìn)位),而 Visual C+為每一個(gè)整型數(shù)據(jù)分配4個(gè)字節(jié)(32位)。在存儲(chǔ)單元中的存儲(chǔ)方式是:用整數(shù)的補(bǔ)碼(complement)形式存放。5的補(bǔ)碼-5的補(bǔ)碼第24頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型 短整型(short int) 類(lèi)型名為short int或short。如用Visual C+ 5.0,編譯系統(tǒng)分配給int數(shù)據(jù)4個(gè)字節(jié),短整型2個(gè)字節(jié)。存儲(chǔ)方式與int型相同。一個(gè)短整型變量的值的范圍是3276832767。 長(zhǎng)整型(long int) 類(lèi)型名為long int 或long。一個(gè)long int 型變量的值
21、的范圍是231(2311),即 21474836482147483647 (Visual C+ 5.0),編譯系統(tǒng)分配給long 數(shù)據(jù)4個(gè)字節(jié)。 雙長(zhǎng)整型(long long int)或long long ,一般分配8個(gè)字節(jié)。 說(shuō)明:C標(biāo)準(zhǔn)沒(méi)有具體規(guī)定各種類(lèi)型數(shù)據(jù)所占用存儲(chǔ)單元的長(zhǎng)度,這是由各編譯系統(tǒng)自行決定的。C標(biāo)準(zhǔn)只要求long型數(shù)據(jù)長(zhǎng)度不短于int型,short型不長(zhǎng)于int型。即 Sizeof(short)sizeof(int)sizeof(long long) Sizeof是測(cè)量類(lèi)型或變量長(zhǎng)度的運(yùn)算符。 第25頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型 2、整型變量的符號(hào)屬性整型變量的符號(hào)屬
22、性 以上介紹的幾種類(lèi)型,變量值在存儲(chǔ)單元中都是以補(bǔ)碼形式存儲(chǔ)的,存儲(chǔ)單元中的第1個(gè)二進(jìn)位制代表符號(hào)。整型變量的值的范圍包括負(fù)數(shù)到正數(shù)(見(jiàn)表2.2)。 表2.2 整型數(shù)據(jù)常見(jiàn)的存儲(chǔ)空間和值的范圍 第26頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型 在實(shí)際應(yīng)用中,有的數(shù)據(jù)的范圍常常只有正值(如學(xué)號(hào)、年齡、庫(kù)存量、存款額等)。為了充分利用變量的值的范圍,可以將變量定義為“無(wú)符號(hào)”類(lèi)型??梢栽陬?lèi)型符號(hào)前面加上修飾符unsigned,表示指定該變量是“無(wú)符號(hào)整數(shù)”類(lèi)型。如果加上修飾符signed,則是“有符號(hào)”類(lèi)型。因此,在以上4種整型數(shù)據(jù)的基礎(chǔ)上可以擴(kuò)展為以下8種整型數(shù)據(jù)。即 有符號(hào)基本整型 signed in
23、t; 無(wú)符號(hào)基本整型 unsigned int; 有符號(hào)短整型 signed short int; 無(wú)符號(hào)短整型 unsigned short int; 有符號(hào)長(zhǎng)整型 signed long int; 無(wú)符號(hào)長(zhǎng)整型 unsigned long int; 有符號(hào)雙長(zhǎng)整型 signed long long int; 無(wú)符號(hào)雙長(zhǎng)整型 unsigned long long int; 以上方括號(hào)表示其中的內(nèi)容是可選的,既可以有,也可以沒(méi)有。如果既未指定為signed也未指定為unsigned的,默認(rèn)為“有符號(hào)類(lèi)型”。如signed int a和int a等價(jià)。 第27頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型
24、字符型數(shù)據(jù)字符型數(shù)據(jù) 1. 字符與字符代碼字符與字符代碼 字符與字符代碼并不是任意寫(xiě)一個(gè)字符,程序都能識(shí)別的。例如圓周率在程序中是不能識(shí)別的,只能使用系統(tǒng)的字符集中的字符,目前大多數(shù)系統(tǒng)采用ASCII字符集。各種字符集(包括ASCII字符集)的基本集都包括了127個(gè)字符。其中包括: 字母:大寫(xiě)英文字母AZ,小寫(xiě)英文字母az。 數(shù)字:09。 專(zhuān)門(mén)符號(hào):29個(gè): !”# &()* +,:;=? -| 空格符:空格、水平制表符(tab)、換行、換頁(yè)(form feed)。 不能顯示的字符:空(null)字符(以0表示)、警告(以a表示)、退格(以b表示)、回車(chē)(以r表示)等。 第28頁(yè)/共203頁(yè)任
25、務(wù)2.2 數(shù)據(jù)類(lèi)型 2、字符變量、字符變量 字符變量使用類(lèi)型符char定義字符變量。Char是英文character(字符)的縮寫(xiě),見(jiàn)名即可知意。如:char c=;? 定義c為字符型變量并使初值為字符?。?的ASCII代碼是63,系統(tǒng)把整數(shù)63賦給變量c。c是字符變量,實(shí)質(zhì)上是一個(gè)字節(jié)的整形變量,由于它常用來(lái)存放字符。所以稱(chēng)為字符變量??梢园?127之間的整數(shù)賦給一個(gè)字符變量。 在輸出字符變量的值時(shí),可以選擇以十進(jìn)制整數(shù)形式輸出,或以字符形式輸出。如: printf(“%d %cn”, c , c );輸出結(jié)果是: 63 ? 用“%d”格式輸出十進(jìn)制整數(shù)63,用%c格式用字符形式輸出字符?。
26、 第29頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型 浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù) 浮點(diǎn)型數(shù)據(jù)是用來(lái)表示具有小數(shù)點(diǎn)的實(shí)數(shù)的 。 浮點(diǎn)數(shù)類(lèi)型包括float(單精度浮點(diǎn)型)、double(雙精度浮點(diǎn)型)、long double(長(zhǎng)雙精度浮點(diǎn)型)。 (1)float型(單精度浮點(diǎn)型)。編譯系統(tǒng)為每一個(gè)float型變量分配4個(gè)字節(jié),數(shù)值以規(guī)范化的二進(jìn)制數(shù)值形式存放在存儲(chǔ)單元中。在存儲(chǔ)時(shí),系統(tǒng)將實(shí)型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分兩個(gè)部分,分別存放。小數(shù)部分的小數(shù)點(diǎn)前面的數(shù)為0.如3.14159在內(nèi)存中的存放形式可以用圖2.9表示。 圖2.9第30頁(yè)/共203頁(yè)任務(wù)2.2 數(shù)據(jù)類(lèi)型 double型(雙精度浮點(diǎn)型)。為了擴(kuò)大能表
27、示的數(shù)值范圍,用8個(gè)字節(jié)存儲(chǔ)一個(gè)double型數(shù)據(jù),可以得到15位有效數(shù)字,數(shù)值范圍為1.710-308 1.710308 。在C語(yǔ)言中進(jìn)行浮點(diǎn)數(shù)的算術(shù)運(yùn)算時(shí),將float型數(shù)據(jù)都自動(dòng)轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算。 long double型(長(zhǎng)雙精度)型,不同的編譯系統(tǒng)對(duì)long double型的處理方法不同,Turbo C對(duì)long double型分配16個(gè)字節(jié)。而Visual C+6.0則對(duì)long double型和double型一樣處理,分配8個(gè)字節(jié)。請(qǐng)讀者在使用不同的編譯系統(tǒng)時(shí)注意其差別。表2.4列出實(shí)型數(shù)據(jù)的有關(guān)情況 表2.4第31頁(yè)/共203頁(yè)任務(wù)2.3 運(yùn)算符和表達(dá)式 基本
28、的算術(shù)運(yùn)算符基本的算術(shù)運(yùn)算符 表2.5 最常用的算術(shù)運(yùn)算符 第32頁(yè)/共203頁(yè)任務(wù)2.3 運(yùn)算符和表達(dá)式 自增、自減運(yùn)算符自增、自減運(yùn)算符 作用是使變量的值加1或減1,例如: +i ,-i ( 在使用i之前,先使i的值加(減)1) i+, i-( 在使用i之后,使i的值加(減)1) 粗略地看,+i和i+的作用相當(dāng)于i=i+1。但+i和i+的不同之處在于+i是先執(zhí)行i=i+1后,再使用i的值;而i+是先使用i的值后,再執(zhí)行i=i+1。如果i的原值等于3,請(qǐng)分析下面的賦值語(yǔ)句: j=+i;(i的值先變成4,再賦給j, j的值為4) j=i+;(先將i的值3賦給j, j的值為3,然后i變?yōu)?) 又
29、例如: i=3; printf(“%d”,i+); 輸出4。若改為 Printf(“%dn”,i+); 則輸出3。第33頁(yè)/共203頁(yè)任務(wù)2.3 運(yùn)算符和表達(dá)式 算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子,稱(chēng)為C算術(shù)表達(dá)式。運(yùn)算對(duì)象包括常量、變量、函數(shù)等。例如,下面是一個(gè)合法的C算術(shù)表達(dá)式: a*bc1.5+a C語(yǔ)言除了規(guī)定了運(yùn)算符的優(yōu)先級(jí)外,還規(guī)定了運(yùn)算符的結(jié)合性。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別順序執(zhí)行,例如先乘除后加減。如表達(dá)式ab*c , b的左側(cè)為減號(hào),右側(cè)為乘號(hào),而乘號(hào)優(yōu)先級(jí)
30、高于減號(hào),因此,相當(dāng)于a(b*c)。 如果在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同,如ab+c,則按規(guī)定的“結(jié)合方向”處理。C語(yǔ)言規(guī)定了各種運(yùn)算符的結(jié)合方向(結(jié)合性),算術(shù)運(yùn)算符的結(jié)合方向都是“自左至右”,及先左后右,因此b先與減號(hào)結(jié)合,執(zhí)行ab的運(yùn)算,然后再執(zhí)行加c的運(yùn)算?!白宰笾劣业慕Y(jié)合方向”又稱(chēng)“左結(jié)合性”,即運(yùn)算對(duì)象先于左面的運(yùn)算符結(jié)合。以后可以看到有些運(yùn)算符的結(jié)合方向?yàn)椤白杂抑磷蟆?,即右結(jié)合性(例如,賦值運(yùn)算符,若有a=b=c,按從右到左順序,先把變量c的值賦給變量b,然后把變量b的值賦給變量a)。 第34頁(yè)/共203頁(yè)任務(wù)2.3 運(yùn)算符和表達(dá)式 不同類(lèi)型數(shù)據(jù)間的混合運(yùn)算不同類(lèi)型數(shù)據(jù)
31、間的混合運(yùn)算 在程序中經(jīng)常會(huì)遇到不同類(lèi)型的數(shù)據(jù)進(jìn)行運(yùn)算,如5*3.5。如果一個(gè)運(yùn)算符的兩側(cè)的數(shù)據(jù)類(lèi)型不同,則先自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,使二者具有同一種類(lèi)型,然后進(jìn)行運(yùn)算。因此整型、實(shí)型、字符型數(shù)據(jù)間可以進(jìn)行混合運(yùn)算。規(guī)律為: (1) +、*、運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為float或double型,結(jié)果是double型,因?yàn)橄到y(tǒng)將所有float型數(shù)據(jù)都先轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算。 (2) 如果int型與float或double型數(shù)據(jù)進(jìn)行運(yùn)算,先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型,然后再進(jìn)行運(yùn)算,結(jié)果是double型。 (3) 字符(char)型數(shù)據(jù)與整型數(shù)據(jù)進(jìn)行運(yùn)算,就是把字符的A
32、SCII代碼與整型數(shù)據(jù)進(jìn)行運(yùn)算。如:12+A,由于字符A的ASCII代碼是65,相當(dāng)于12+65,等于77。字符數(shù)據(jù)可以直接與整型數(shù)據(jù)進(jìn)行運(yùn)算。如果字符型數(shù)據(jù)與實(shí)型數(shù)據(jù)進(jìn)行運(yùn)算,則將字符的ASCII代碼轉(zhuǎn)換為double型數(shù)據(jù),然后進(jìn)行運(yùn)算。 第35頁(yè)/共203頁(yè)任務(wù)2.3 運(yùn)算符和表達(dá)式 示例2.1 編程:給定一個(gè)大寫(xiě)字母,要求用小寫(xiě)字母輸出。 編寫(xiě)程序: #includestdio.h int main ( ) char c1 ,c2; c1=A 將字符A的ASCII代碼放到c1變量中 c2=c1+32; 得到字符a的ASCII代碼,放在c2變量中 printf(“%cn”,c2); 輸出
33、c2的值,是一個(gè)字符 printf(“%dn”,c2); 輸出c2的值,是字符a的ASCII代碼 reurn 0 運(yùn)行結(jié)果: a 97第36頁(yè)/共203頁(yè)任務(wù)2.3 運(yùn)算符和表達(dá)式 運(yùn)算符運(yùn)算符 除了算術(shù)運(yùn)算符外,C還提供其他運(yùn)算符,共有以下幾類(lèi): 關(guān)系運(yùn)算符 (= ! =) 邏輯運(yùn)算符 (! & & |) 位運(yùn)算符 (|&) 賦值運(yùn)算符 (=及其擴(kuò)展賦值運(yùn)算符) 條件運(yùn)算符 (?:) 逗號(hào)運(yùn)算符 (,) 指針運(yùn)算符 (*和&) 求字節(jié)數(shù)運(yùn)算符 (sizeof) 強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符 (類(lèi)型) 成員運(yùn)算符 () 下標(biāo)運(yùn)算符 ( ) 其他 (如函數(shù)調(diào)用運(yùn)算符() 第37頁(yè)/共203頁(yè)任務(wù)2.3 運(yùn)
34、算符和表達(dá)式 強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符 可以利用強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類(lèi)型。例如: (double)a (將a轉(zhuǎn)換成double類(lèi)型) (int)(x+y) (將x+y的值轉(zhuǎn)換成int型) (float)(5%3) (將5%3的值轉(zhuǎn)換成float型) 其一般形式為 (類(lèi)型名)(表達(dá)式) 注意,表達(dá)式應(yīng)該用括號(hào)括起來(lái)。如果寫(xiě)成 (int)x+y 則只將x轉(zhuǎn)換成整型,然后與y相加。 需要說(shuō)明的是,在強(qiáng)制類(lèi)型轉(zhuǎn)換時(shí),得到一個(gè)所需類(lèi)型的中間數(shù)據(jù),而原來(lái)變量的類(lèi)型未發(fā)生變化。例如: a=(int)x 如果已定義x為float型變量,a為整型變量,進(jìn)行強(qiáng)制類(lèi)型運(yùn)算(int)x
35、后得到一個(gè)int類(lèi)型的臨時(shí)值,它的值等于x的整數(shù)部分,把它賦給a,注意x的值和類(lèi)型都未變化,仍為float型。該臨時(shí)值在賦值后就不存在了。 第38頁(yè)/共203頁(yè)任務(wù)2.4 賦值語(yǔ)句 在C程序中,最常用的語(yǔ)句是:賦值語(yǔ)句和輸入輸出語(yǔ)句。其中最基本的是賦值語(yǔ)句。程序中的計(jì)算功能大部分是由賦值語(yǔ)句實(shí)現(xiàn)的,幾乎每一個(gè)有實(shí)用價(jià)值的程序都包括賦值語(yǔ)句。有的程序中的大部分語(yǔ)句都是賦值語(yǔ)句。 先分析一個(gè)例子。 給出三角形的三邊長(zhǎng),求三角形面積。 解題思路:假設(shè)給定的三個(gè)邊符合構(gòu)成三角形的條件:任意兩邊之和大于第三邊。解此題的關(guān)鍵是要找到求三角形面積的公式。從數(shù)學(xué)知識(shí)已知求三角形面積的公式為: 其中s=(a+b
36、+c)2。 )()(csbsassarea第39頁(yè)/共203頁(yè)任務(wù)2.4 賦值語(yǔ)句 編寫(xiě)程序:根據(jù)上面的公式編寫(xiě)程序如下:#include stdio.h#include math.hint main( )double a,b,c,s,area; 定義各變量,均為double型a=2.67; 對(duì)邊長(zhǎng)a賦值b=4.43; 對(duì)邊長(zhǎng)b賦值c=5.21; 對(duì)邊長(zhǎng)c賦值s=(a+b+c)/2; 計(jì)算sarea=sqrt(s*()*()*(); 計(jì)算areaprintf(“a=%ftb=%ft%fn”,a ,b ,c ); 輸出三邊a ,b ,c 的值printf(“area=%fn”,area); 輸出
37、面積area的值return 0 ;運(yùn)行結(jié)果:a=2.670000 b=4.430000 5.210000 area=8.903431第40頁(yè)/共203頁(yè)任務(wù)2.4 賦值語(yǔ)句 賦值運(yùn)算符賦值運(yùn)算符 賦值符號(hào)=就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如a=3的作用是執(zhí)行一次賦值操作(或稱(chēng)賦值運(yùn)算)。把常量3賦給變量a。也可以將一個(gè)表達(dá)式的值賦給一個(gè)變量。 復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符 在賦值符=之前加上其它運(yùn)算符,可以構(gòu)成復(fù)合的運(yùn)算符。如果在“=”前加一個(gè)“+”運(yùn)算符就成了復(fù)合運(yùn)算符“+=”。例如可以有以下的復(fù)合賦值運(yùn)算: a+=3 等價(jià)于 a=a+3 x*=y+8 等價(jià)于 x=x
38、*(y+8) x%=3 等價(jià)于 x=x%3 以“a+=3”為例來(lái)說(shuō)明,它相當(dāng)于使a進(jìn)行一次自加3的操作。即:先使a加3,再賦給a。同樣,“x*=y+8”的作用是使x乘以(y+8),再賦給x。 第41頁(yè)/共203頁(yè)任務(wù)2.4 賦值語(yǔ)句 賦值表達(dá)式賦值表達(dá)式 由賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來(lái)的式子稱(chēng)為“賦值表達(dá)式”。它的一般形式為變量 賦值運(yùn)算符 表達(dá)式 賦值表達(dá)式的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量,因此賦值表達(dá)式具有計(jì)算和賦值的雙重功能。如a=3*5是一個(gè)賦值表達(dá)式。對(duì)賦值表達(dá)式求解的過(guò)程是:先求賦值運(yùn)算符右側(cè)的“表達(dá)式”的值,然后賦給賦值運(yùn)算符左側(cè)的變量。既然是一個(gè)表達(dá)式,就應(yīng)該有
39、一個(gè)值。賦值表達(dá)式a=3*5的值為15,對(duì)表達(dá)式求解后,變量a的值和表達(dá)式的值都是15。賦值過(guò)程中的類(lèi)型轉(zhuǎn)換賦值過(guò)程中的類(lèi)型轉(zhuǎn)換 如果賦值運(yùn)算符兩側(cè)的類(lèi)型一致,則直接進(jìn)行賦值。如: i=234; 設(shè)已定義i為整型變量 此時(shí)直接將整數(shù)234存入變量i的存儲(chǔ)單元中。 如果賦值運(yùn)算符兩側(cè)的類(lèi)型不一致,但都是算術(shù)類(lèi)型時(shí),在賦值時(shí)要進(jìn)行類(lèi)型轉(zhuǎn)換。類(lèi)型轉(zhuǎn)換是由系統(tǒng)自動(dòng)進(jìn)行的 。第42頁(yè)/共203頁(yè)任務(wù)2.4 賦值語(yǔ)句 賦值表達(dá)式和賦值語(yǔ)句賦值表達(dá)式和賦值語(yǔ)句 在C程序中,賦值語(yǔ)句是用的最多的語(yǔ)句。在任務(wù)1的C語(yǔ)句分類(lèi)中,并沒(méi)有看到賦值語(yǔ)句,實(shí)際上,C語(yǔ)言的賦值語(yǔ)句屬于表達(dá)式語(yǔ)句,由一個(gè)賦值表達(dá)式加一個(gè)分號(hào)
40、組成。 注意:要區(qū)分賦值表達(dá)式和賦值語(yǔ)句。 賦值表達(dá)式的末尾沒(méi)有分號(hào),而賦值語(yǔ)句的末尾必須有分號(hào)。在一個(gè)表達(dá)式中可以包含一個(gè)或多個(gè)賦值表達(dá)式,但絕不能包含賦值語(yǔ)句。 變量賦初值變量賦初值 可以用賦值語(yǔ)句對(duì)變量賦值,也可以在定義變量時(shí)對(duì)變量賦以初值。這樣可以使程序簡(jiǎn)練。如: int a=3; 定義a為整型變量,初值為3 float f=2.56; 定義f為浮點(diǎn)型變量初值為2.56 char c=a 定義c為字符變量,初值為a 第43頁(yè)/共203頁(yè)項(xiàng)目3 順序結(jié)構(gòu)程序設(shè)計(jì)1項(xiàng)目導(dǎo)讀項(xiàng)目目標(biāo)項(xiàng)目任務(wù)第44頁(yè)/共203頁(yè) 在項(xiàng)目2中介紹了C程序中用到的一些基本要素,如常量、變量、運(yùn)算符、表達(dá)式等。本項(xiàng)
41、目將介紹編寫(xiě)簡(jiǎn)單的C程序所必需的一些內(nèi)容。 項(xiàng)目導(dǎo)讀使用scanf函數(shù)從鍵盤(pán)為變量輸入值。使用printf函數(shù)輸出數(shù)據(jù)。能編寫(xiě)簡(jiǎn)單的C程序的源文件,并運(yùn)行程序。 思考項(xiàng)目目標(biāo)第45頁(yè)/共203頁(yè)任務(wù)3.1 順序程序設(shè)計(jì)舉例 示例示例3.1 用溫度計(jì)測(cè)量出用華氏法表示的溫度(如69F),今要求把它轉(zhuǎn)換為以攝氏法表示的溫度(如20)。 解題思路:這個(gè)問(wèn)題的算法很簡(jiǎn)單,關(guān)鍵在于找到二者之間的轉(zhuǎn)換公式。根據(jù)物理學(xué)知識(shí),知道以下轉(zhuǎn)換公式: c=59(f-32) 其中f代表華氏溫度,c代表攝氏溫度。據(jù)此可以用N-S圖表示算法,見(jiàn)圖3.1。 圖3.1 算法由3個(gè)步驟組成,這是一個(gè)簡(jiǎn)單的順序結(jié)構(gòu)。 編寫(xiě)程序:
42、有了N-S圖,很容易用C語(yǔ)言表示,寫(xiě)出求此問(wèn)題的C程序。第46頁(yè)/共203頁(yè)任務(wù)3.1 順序程序設(shè)計(jì)舉例 #includestdioh int main() float f,c; 定義f和c為單精度浮點(diǎn)型變量 f=63.0; 定義f的值 c=(59)*(f-32); 利用公式計(jì)算c的值 printf(“f=%nc=%n”,f,c);輸出c的值 return 0; 運(yùn)行結(jié)果: f=63.000000 c=16.777778第47頁(yè)/共203頁(yè)任務(wù)3.1 順序程序設(shè)計(jì)舉例 示例示例3.2 計(jì)算存款利息。有1000元,想存一年。有三種方法可選:活期,年利率為r1;一年期定期,年利率為r2;存兩次半年
43、定期,年利率為r3。請(qǐng)分別計(jì)算出一年后按三種方法所得到的本息和。 解題思路:關(guān)鍵是確定計(jì)算本息和的公式。從數(shù)學(xué)知識(shí)可知,若存款額為p0,則: 活期存款一年后本息和為p1=p0(1+r1)。 一年期定期存款,一年后本息和為p2=p0(1+r2)。 兩次半年定期存款,一年后本息和為p3=p0(1+r3/2)(1+r3/2)。 畫(huà)出N-S流程圖,見(jiàn)圖3.2。 圖3.2第48頁(yè)/共203頁(yè)任務(wù)3.1 順序程序設(shè)計(jì)舉例 #includestdio.hint main ()float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3; 定義變量p1=p0*(1+
44、r1); 計(jì)算活期本息和p2=p0*(1+r2); 計(jì)算一年定期本息和p3=p0*(1+r32)*(1+r32);計(jì)算存兩次半年定期的本息和 printf(“p1=%fnp2=%fnp3=%fn”,p1,p2,p3);輸出結(jié)果 return 0; 運(yùn)行結(jié)果:P1=1002.599976P2=1022.500000 P3=1018.898010第49頁(yè)/共203頁(yè)任務(wù)3.2 C語(yǔ)句概述 C程序的執(zhí)行部分是由語(yǔ)句組成的。程序的功能也是由執(zhí)行語(yǔ)句實(shí)現(xiàn)的,C程序主要包含表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句、復(fù)合語(yǔ)句和空語(yǔ)句,其中控制語(yǔ)句包含多種情況,本任務(wù)將分別進(jìn)行介紹。 C程序結(jié)構(gòu)可以用圖3.3表示。
45、即一個(gè)C程序可以由若干個(gè)源程序文件(編譯時(shí)以文件模塊為單位)組成,一個(gè)源文件可以由若干個(gè)函數(shù)和預(yù)處理指令以及全局變量聲明部分組成(關(guān)于“全局變量”見(jiàn)項(xiàng)目7)。一個(gè)函數(shù)由數(shù)據(jù)聲明部分和執(zhí)行語(yǔ)句組成。 圖3.3第50頁(yè)/共203頁(yè)任務(wù)3.2 C語(yǔ)句概述 C語(yǔ)句分為以下5類(lèi) : (1) 控制語(yǔ)句??刂普Z(yǔ)句用于完成一定的控制功能。C語(yǔ)句只有9種控制語(yǔ)句,它們的形式是: if( )else (條件語(yǔ)句) for ( ) (循環(huán)語(yǔ)句) while( ) (循環(huán)語(yǔ)句) dowhile( ) (循環(huán)語(yǔ)句) continue (結(jié)束本次循環(huán)語(yǔ)句) break (中斷執(zhí)行switch或循環(huán)語(yǔ)句) switch (
46、多分支選擇語(yǔ)句) return (從函數(shù)返回語(yǔ)句) goto (轉(zhuǎn)向語(yǔ)句,在結(jié)構(gòu)化程序中基本不用goto語(yǔ)句) 上面9種語(yǔ)句表示形式中的( )表示括號(hào)中是一個(gè)“判別條件”,“”表示內(nèi)嵌的語(yǔ)句。例如上面的“if( )else”的具體語(yǔ)句可以寫(xiě)成: if(xy) z=x ; else z=y ;第51頁(yè)/共203頁(yè)任務(wù)3.2 C語(yǔ)句概述 (2) 函數(shù)調(diào)用語(yǔ)句。函數(shù)調(diào)用語(yǔ)句由一個(gè)函數(shù)調(diào)用加一個(gè)分號(hào)構(gòu)成,例如:printf(“This is a c statement .”); 其中printf(“This is a c statement .”)是一個(gè)函數(shù)調(diào)用,加一個(gè)分號(hào)成為一個(gè)語(yǔ)句。 表達(dá)式語(yǔ)句。
47、表達(dá)式語(yǔ)句由一個(gè)表達(dá)式加一個(gè)分號(hào)構(gòu)成,最典型的是,有賦值表達(dá)式構(gòu)成一個(gè)賦值語(yǔ)句。例如: a=3 是一個(gè)賦值表達(dá)式,而 a=3; 是一個(gè)賦值語(yǔ)句。 空語(yǔ)句。下面是一個(gè)空語(yǔ)句: ; 此語(yǔ)句只有一個(gè)分號(hào),它什么也不做。那么它有什么用呢?可以用來(lái)作為流程的轉(zhuǎn)向點(diǎn)(流程從程序其他地方轉(zhuǎn)到此語(yǔ)句處),也可以用來(lái)作為循環(huán)語(yǔ)句中的循環(huán)體(循環(huán)體是空語(yǔ)句,表示循環(huán)體什么也不做)。 第52頁(yè)/共203頁(yè)任務(wù)3.2 C語(yǔ)句概述 復(fù)合語(yǔ)句。可以用 把一些語(yǔ)句和聲明括起來(lái)成為復(fù)合語(yǔ)句(又稱(chēng)語(yǔ)句塊)。例如下面是一個(gè)復(fù)合語(yǔ)句:float pi=2.14159,r=2.5,area; 定義變量area=pi * r * r
48、;printf(“area=%f”,area); 可以在復(fù)合語(yǔ)句中包含聲明部分(如上面的第2行),C99允許將聲明部分放在復(fù)合語(yǔ)句中的任何位置,但習(xí)慣上把它放在語(yǔ)句塊開(kāi)頭位置。復(fù)合語(yǔ)句常用在if語(yǔ)句或循環(huán)中,此時(shí)程序需要連續(xù)執(zhí)行一組數(shù)據(jù)。 注意:復(fù)合語(yǔ)句中最后一個(gè)語(yǔ)句中最后的分號(hào)不能忽略不寫(xiě)。 C語(yǔ)言允許一行寫(xiě)幾個(gè)語(yǔ)句,也允許一個(gè)語(yǔ)句拆開(kāi)寫(xiě)在幾行上,書(shū)寫(xiě)格式無(wú)固定要求 第53頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出輸入輸出舉例輸入輸出舉例 案例3.3 求ax2+bx+c=0方程的根。a ,b ,c由鍵盤(pán)輸入,設(shè)b24ac0。 解題思路:首先要知道求方程式的根的方法。由數(shù)學(xué)知識(shí)已知:如果b24
49、ac0,則一元二次方程有兩個(gè)實(shí)根: , 可以將上面的分式分為兩項(xiàng): , 則x1 =p+q, x2=pq有了這些式子,只要知道a ,b ,c的值,就能順利的求出方程的兩個(gè)根。2142bbacxa 2242bbacxa 2bpa242bacqa第54頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 #include #include 程序重要調(diào)用求平方根函數(shù)sqrtint main () double a ,b ,c ,disc ,x1,x2,p ,q; disc用來(lái)存放判別式(b*b4ac)的值scanf(“%1f%1f%1f”,&a,&b,&c); 輸入雙精度變量型的值要用格式聲明“%1f”disc
50、=b*b4*a*c;p=b(2.0*a);q=sqrt(disc)(2.0*a);x1=p+q;x2=pq; 求出方程的兩個(gè)根printf(“x1=%6.2fnx2=%6.2fn”,x1,x2); 輸出方程的兩個(gè)根 return 0;運(yùn)行結(jié)果:1 3 2X1=-1.00X2=-2.00第55頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出有關(guān)數(shù)據(jù)輸入輸出的概念有關(guān)數(shù)據(jù)輸入輸出的概念 從前面的程序可以看到:幾乎每一個(gè)C程序都包含輸入輸出。因?yàn)橐M(jìn)行運(yùn)算,就必須給出數(shù)據(jù),而運(yùn)算的結(jié)果當(dāng)然需要輸出,以便人們應(yīng)用。沒(méi)有輸出的程序是沒(méi)有意義的。輸入輸出是程序中最基本的操作之一。 在討論程序的輸入輸出時(shí)首先要注
51、意以下幾點(diǎn)。 所謂輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言的。 C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由C標(biāo)準(zhǔn)函數(shù)庫(kù)中的函數(shù)來(lái)實(shí)現(xiàn)的。 在使用系統(tǒng)庫(kù)函數(shù)時(shí),要在程序文件的開(kāi)頭用預(yù)處理指令#include把有關(guān)頭文件放在本程序中 如:#include 注意:應(yīng)養(yǎng)成這樣的習(xí)慣:只要在本程序文件中使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),一律加上#include指令。 第56頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出用用printf函數(shù)輸出數(shù)據(jù)函數(shù)輸出數(shù)據(jù) 在C程序中用來(lái)實(shí)現(xiàn)輸出和輸入的,主要是printf函數(shù)和scanf函數(shù)。這兩個(gè)函數(shù)是格式輸入輸出函數(shù)。用到兩個(gè)函數(shù)時(shí),程序設(shè)計(jì)人員必須制定輸入輸出數(shù)據(jù)的格式,即
52、根據(jù)數(shù)據(jù)的不同類(lèi)型指定不同的格式。 1、printf函數(shù)的一般格式 printf函數(shù)的一般格式為 printf(格式控制,輸出表列) 例如: printf(“%d,%cn”,i ,c) 2、格式字符 (1) d格式字符。用來(lái)輸出一個(gè)有符號(hào)的十進(jìn)制整數(shù)。 可以在格式聲明中指定輸出數(shù)據(jù)的域?qū)挘ㄋ嫉牧袛?shù)),如用“%5d”,指定輸出數(shù)據(jù)占5列,輸出的數(shù)據(jù)顯示在此5列區(qū)域的右側(cè)。如: printf(“%5dn%5dn”,12,345); 輸出結(jié)果為 12 (12前面有3個(gè)空格) 345 (345前面有1個(gè)空格) 第57頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 (2)c格式符。用來(lái)輸出一個(gè)字符。例如;
53、 char ch=a; printf(“%c”,ch); 運(yùn)行時(shí)輸出 a 一個(gè)整數(shù),如果在0127范圍中,也可以用“%c”使之按字符形式輸出,在輸出前,系統(tǒng)會(huì)將該整數(shù)作為ASCII碼轉(zhuǎn)換成相應(yīng)的字符;如: short a=121; printf(“%c”,a); 輸出字符y。 (3)s格式符。用來(lái)輸出一個(gè)字符串。如: printf(“%s”,“CHINA”); 執(zhí)行此函數(shù)時(shí)在顯示屏上輸出字符串“CHINA”(不包括雙引號(hào))。 第58頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 (4) f格式符。用來(lái)輸出實(shí)數(shù)(包括單、雙精度、長(zhǎng)雙精度)。以小數(shù)形式輸出,有幾種用法: 基本型,用%f。 不指定輸出數(shù)
54、據(jù)的長(zhǎng)度,由系統(tǒng)根據(jù)數(shù)據(jù)的實(shí)際情況決定數(shù)據(jù)所占的列數(shù)。系統(tǒng)處理的方法一般是:實(shí)數(shù)中的整數(shù)部分全部輸出,小數(shù)部分輸出6位。 示例示例 3.4 用%f輸出實(shí)數(shù),只能得到6位小數(shù)。#includeint main( )double a=1.0;printf(“%fn”, a3);return 0;運(yùn)行結(jié)果:0.333333 雖然a是雙精度型,a3的結(jié)果也是雙精度型,但是用%f格式聲明只能輸出6位小數(shù)。 第59頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 指定數(shù)據(jù)寬度和小數(shù)位數(shù),用%m.nf。 如果想在示例3.4輸出雙精度變量a的15位小數(shù),可以采用案例3.3所用的方法,用“%20.15fn”, a/3
55、)運(yùn)行結(jié)果: 0.333333333333333 注意:在用%f輸出時(shí)要注意數(shù)據(jù)本身能提供的有效數(shù)字,如float型數(shù)據(jù)的存儲(chǔ)單元只能保證6位有效數(shù)字。double型數(shù)據(jù)能保證15位有效數(shù)字。不要以為計(jì)算機(jī)輸出的所有數(shù)字都是絕對(duì)精確有效的。 輸出的數(shù)據(jù)向左對(duì)齊,用%m.nf。 在m.n的前面加一個(gè)負(fù)號(hào),其作用與%m.nf形式作用基本相同,但當(dāng)數(shù)據(jù)長(zhǎng)度不超過(guò)m時(shí),數(shù)據(jù)向左靠,右端補(bǔ)空格。如: printf(“%24.15f,%24.15fn”,a ,a); 運(yùn)行結(jié)果:3332.333333333333500 3332.333333333333500 第1次輸出a時(shí)輸出結(jié)果向左端靠,右端空5列。第
56、2次輸出a使輸出結(jié)果向右端靠,左端空5列。 第60頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 (5) e格式符。用格式聲明%e指定以指數(shù)形式輸出實(shí)數(shù)。 例如: printf(“%e”,122.456); 輸出如下: 1.234560 e+002 所輸出的實(shí)數(shù)共占13列寬度(注:不同系統(tǒng)的規(guī)定略有不同)。 也可以用“%m.ne”形式的格式聲明,如: printf(“%12.2e”,122.456); 輸出為 1.23e+002 (數(shù)的前面有4個(gè)空格) 格式符e也可以寫(xiě)成大寫(xiě)E形式,因此輸出的數(shù)據(jù)中的指數(shù)不是以小寫(xiě)字母e表示而以大寫(xiě)字母E表示,如1.23460E+002。 第61頁(yè)/共203頁(yè)任務(wù)
57、3.3 數(shù)據(jù)的輸入/輸出表3.1 printf函數(shù)中用到的格式字符函數(shù)中用到的格式字符 第62頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出函數(shù)輸入數(shù)據(jù)函數(shù)輸入數(shù)據(jù) 1 . scanf函數(shù)的一般形式函數(shù)的一般形式 scanf(格式控制,地址表列) “格式控制”的含義同printf函數(shù)。“地址表列”是由若干個(gè)地址組成的的表列,可以是變量的地址,或字符串的首地址。 2 . scanf函數(shù)中的格式聲明函數(shù)中的格式聲明 與printf函數(shù)中的格式聲明相似,以%開(kāi)始,以一個(gè)格式字符結(jié)束,中間可以插入附加的字符。 表表3-4 scanf函數(shù)中用到的格式附加字符函數(shù)中用到的格式附加字符 第63頁(yè)/共203頁(yè)任務(wù)
58、3.3 數(shù)據(jù)的輸入/輸出表表3-3 scanf函數(shù)中所用到的格式字符函數(shù)中所用到的格式字符 第64頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出字符數(shù)據(jù)的輸入輸出字符數(shù)據(jù)的輸入輸出 除了可以用printf函數(shù)和scanf函數(shù)輸出和輸入字符外,C函數(shù)庫(kù)還提供了一些專(zhuān)門(mén)用于輸入和輸出字符的函數(shù)。 用用putchar函數(shù)輸出一個(gè)字符函數(shù)輸出一個(gè)字符 putchar函數(shù)的一般形式為 putchar(c) 示例示例 3.6 先后輸出BOY三個(gè)字符。 解題思路:定義3個(gè)變量,分別賦以初值B,O,Y, 然后用putchar函數(shù)輸出這3個(gè)字符變量的值。 第65頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 #incl
59、udeint main( )char a=B,b=O,c=Y; 定義3個(gè)字符變量并初始化putchar(a); 向顯示器輸出字符Bputchar(b); 向顯示器輸出字符Oputchar(c); 向顯示器輸出字符Yputchar(n); 向顯示器輸出一個(gè)換行符return 0;運(yùn)行結(jié)果:BOY連續(xù)輸出B,O,Y3個(gè)字符,然后換行。 第66頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 用用getchar函數(shù)輸入一個(gè)字符函數(shù)輸入一個(gè)字符 為了向計(jì)算機(jī)輸入一個(gè)字符,可以調(diào)用系統(tǒng)函數(shù)庫(kù)中的getchar函數(shù)(字符輸入函數(shù))。getchar函數(shù)的一般形式為 getchar( ) 示例示例3.7 從鍵盤(pán)輸入
60、BOY3個(gè)字符,然后把它們輸出到屏幕。 解題思路:用3個(gè)getchar函數(shù)先后從鍵盤(pán)向計(jì)算機(jī)輸入BOY3個(gè)字符,然后用putchar函數(shù)輸出。 第67頁(yè)/共203頁(yè)任務(wù)3.3 數(shù)據(jù)的輸入/輸出 #includeint main( )char a, b, c; 定義字符變量a, b, ca=getchar( ); 從鍵盤(pán)輸入一個(gè)字符,送給字符變量ab=getchar( ); 從鍵盤(pán)輸入一個(gè)字符,送給字符變量bc=getchar( ); 從鍵盤(pán)輸入一個(gè)字符,送給字符變量cputchar(a); 將變量a的值輸出putchar(b); 將變量b的值輸出putchar(c); 將變量c的值輸出putc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 瑜伽呼吸教學(xué)核心方法與實(shí)踐
- 2025許昌陶瓷職業(yè)學(xué)院輔導(dǎo)員考試試題及答案
- 2025西安理工大學(xué)輔導(dǎo)員考試試題及答案
- 2025遼寧科技大學(xué)輔導(dǎo)員考試試題及答案
- 2025鹽城工學(xué)院輔導(dǎo)員考試試題及答案
- 2025福建師范大學(xué)輔導(dǎo)員考試試題及答案
- 機(jī)械創(chuàng)新設(shè)計(jì)說(shuō)明
- 幼兒疾病預(yù)防教案
- 南昌高新企業(yè)管理服務(wù)有限公司招聘筆試題庫(kù)2025
- 上海楊浦區(qū)同元敦商貿(mào)有限公司招聘筆試題庫(kù)2025
- 太原日用陶瓷項(xiàng)目商業(yè)計(jì)劃書(shū)范文
- 薪酬福利體系優(yōu)化方案
- SA8000-社會(huì)責(zé)任程序文件(完整版)
- 2025年社區(qū)工作者招聘考試試題及答案清單
- 單細(xì)胞測(cè)序:解鎖妊娠相關(guān)疾病細(xì)胞與分子特征的新鑰匙
- 裝飾工程掛靠協(xié)議書(shū)
- 山東省濟(jì)南市2025屆高三三模地理試卷(含答案)
- 廣東省廣州市普通高中2025屆高三下學(xué)期第三次???物理試題(含答案)
- 2025年房產(chǎn)贈(zèng)與合同示范文本
- 游樂(lè)園安全培訓(xùn)課件
- 江蘇省海安中學(xué)、金陵中學(xué)、宿遷中學(xué)三校2024-2025學(xué)年高三年級(jí)下學(xué)期4月聯(lián)考測(cè)試 化學(xué)試卷(含答案)
評(píng)論
0/150
提交評(píng)論