09程序設(shè)計(jì)語言初步第三章.pptppt課件_第1頁
09程序設(shè)計(jì)語言初步第三章.pptppt課件_第2頁
09程序設(shè)計(jì)語言初步第三章.pptppt課件_第3頁
09程序設(shè)計(jì)語言初步第三章.pptppt課件_第4頁
09程序設(shè)計(jì)語言初步第三章.pptppt課件_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 1第三章第三章 程序設(shè)計(jì)語言初步程序設(shè)計(jì)語言初步 2程序設(shè)計(jì)語言:用于書寫計(jì)算機(jī)程序的語言,用程序設(shè)計(jì)語言:用于書寫計(jì)算機(jī)程序的語言,用于表達(dá)和描述要加工的數(shù)據(jù)以及求解問題的步于表達(dá)和描述要加工的數(shù)據(jù)以及求解問題的步驟和過程。是根據(jù)預(yù)先定義的規(guī)則語法)、驟和過程。是根據(jù)預(yù)先定義的規(guī)則語法)、由一個(gè)有限字母表上的字符構(gòu)成的字符串的總由一個(gè)有限字母表上的字符構(gòu)成的字符串的總體。體。程序設(shè)計(jì)語言的基本成分:程序設(shè)計(jì)語言的基本成分: 數(shù)據(jù)成分。用以數(shù)據(jù)成分。用以描述程描述程 序中所涉及的數(shù)據(jù)。運(yùn)算成分。用以序中所涉及的數(shù)據(jù)。運(yùn)算成分。用以描述程序中所包含的運(yùn)算??刂瞥煞?。用以描述程序中所包含的運(yùn)算。

2、控制成分。用以表達(dá)程序中的控制構(gòu)造。傳輸成分。用以表表達(dá)程序中的控制構(gòu)造。傳輸成分。用以表達(dá)程序中數(shù)據(jù)的傳輸。達(dá)程序中數(shù)據(jù)的傳輸。 3提綱提綱標(biāo)識(shí)符標(biāo)識(shí)符 數(shù)據(jù)類型數(shù)據(jù)類型變量變量常量常量輸入和輸出輸入和輸出表達(dá)式表達(dá)式語句語句函數(shù)函數(shù)本章結(jié)合本章結(jié)合C語言語言向大家介紹結(jié)構(gòu)向大家介紹結(jié)構(gòu)化程序設(shè)計(jì)語言化程序設(shè)計(jì)語言的基本概念的基本概念 數(shù)據(jù)成分?jǐn)?shù)據(jù)成分傳輸成分傳輸成分運(yùn)算成分運(yùn)算成分控制成分控制成分 4先聊點(diǎn)先聊點(diǎn)C語言語言u(píng)是一種高級(jí)語言是一種高級(jí)語言u(píng)相對(duì)于低級(jí)語言而言,在一個(gè)高的級(jí)別上進(jìn)行編程相對(duì)于低級(jí)語言而言,在一個(gè)高的級(jí)別上進(jìn)行編程u歷史悠久,戰(zhàn)勛卓著歷史悠久,戰(zhàn)勛卓著u誕生于誕生

3、于2020世紀(jì)世紀(jì)7070年代初,成熟于年代初,成熟于8080年代年代C89C89),修訂于),修訂于9090年代年代C99C99),很多重量級(jí)軟件用),很多重量級(jí)軟件用C C編寫編寫u上天入地,無所不能上天入地,無所不能u幾乎沒有不能用幾乎沒有不能用C C寫出的軟件,沒有不支持寫出的軟件,沒有不支持C C的系統(tǒng)的系統(tǒng)u很多流行語言、新生語言都借鑒了很多流行語言、新生語言都借鑒了C C的思想、語法的思想、語法uC+,Java,C#,PHPC+,Java,C#,PHP等,幾乎都是用等,幾乎都是用C C編寫編寫u現(xiàn)狀現(xiàn)狀u嵌入式領(lǐng)域和系統(tǒng)級(jí)編程占主流,桌面應(yīng)用次之嵌入式領(lǐng)域和系統(tǒng)級(jí)編程占主流,桌面

4、應(yīng)用次之 5 6數(shù)據(jù)總線 控制路線 輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備存儲(chǔ)器存儲(chǔ)器中央處理器中央處理器CPU)運(yùn)算部件運(yùn)算部件控制部件控制部件地址總線 實(shí)例:編一個(gè)程序,從鍵盤讀入兩個(gè)整數(shù),要求在屏幕上輸出相乘運(yùn)算結(jié)果。處理步驟:處理步驟:1.控制部件發(fā)命令從鍵盤讀控制部件發(fā)命令從鍵盤讀取數(shù)據(jù)并存儲(chǔ)到內(nèi)存儲(chǔ)器中取數(shù)據(jù)并存儲(chǔ)到內(nèi)存儲(chǔ)器中輸入)。輸入)。2.控制部件發(fā)命令從內(nèi)存儲(chǔ)控制部件發(fā)命令從內(nèi)存儲(chǔ)器中取出這兩個(gè)數(shù)置入運(yùn)算器中取出這兩個(gè)數(shù)置入運(yùn)算部件的寄存器中,讓運(yùn)算器部件的寄存器中,讓運(yùn)算器執(zhí)行乘法運(yùn)算,運(yùn)算結(jié)果寫執(zhí)行乘法運(yùn)算,運(yùn)算結(jié)果寫回存儲(chǔ)器中處置)?;卮鎯?chǔ)器中處置)。3.控制部件發(fā)命令將存

5、儲(chǔ)在控制部件發(fā)命令將存儲(chǔ)在內(nèi)存儲(chǔ)器中的結(jié)果輸出到顯內(nèi)存儲(chǔ)器中的結(jié)果輸出到顯示器上輸出)。示器上輸出)。需要考慮的問題:需要考慮的問題:1.輸入:如何從鍵盤讀取這兩個(gè)數(shù)并將其存放輸入:如何從鍵盤讀取這兩個(gè)數(shù)并將其存放到內(nèi)存中?程序如何約束輸入的必須是整數(shù)?到內(nèi)存中?程序如何約束輸入的必須是整數(shù)?2.處置:計(jì)算時(shí)如何讀取內(nèi)存中的這兩個(gè)數(shù)?處置:計(jì)算時(shí)如何讀取內(nèi)存中的這兩個(gè)數(shù)?如何實(shí)現(xiàn)計(jì)算?計(jì)算結(jié)果如何寫回內(nèi)存?如何實(shí)現(xiàn)計(jì)算?計(jì)算結(jié)果如何寫回內(nèi)存?3.輸出:如何將內(nèi)存中的計(jì)算結(jié)果輸出到顯示輸出:如何將內(nèi)存中的計(jì)算結(jié)果輸出到顯示器?器? 7數(shù)據(jù)總線 控制路線 輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備存儲(chǔ)器存儲(chǔ)

6、器中央處理器中央處理器CPU)運(yùn)算部件運(yùn)算部件控制部件控制部件內(nèi)存中數(shù)據(jù)內(nèi)存中數(shù)據(jù)的存取的存取:變量、變量、常量、常量、數(shù)據(jù)類型數(shù)據(jù)類型輸入輸入:輸入輸入語句語句輸出輸出:輸出輸出語句語句地址總線 計(jì)算的實(shí)現(xiàn)計(jì)算的實(shí)現(xiàn):運(yùn)算符運(yùn)算符表達(dá)式表達(dá)式語句語句函數(shù)函數(shù) 8標(biāo)識(shí)符是由程序員定義的單詞,用來給程序標(biāo)識(shí)符是由程序員定義的單詞,用來給程序中的數(shù)據(jù)、函數(shù)和其他用戶自定義對(duì)象命名中的數(shù)據(jù)、函數(shù)和其他用戶自定義對(duì)象命名。程序設(shè)計(jì)語言本身會(huì)定義一些專用名稱,稱程序設(shè)計(jì)語言本身會(huì)定義一些專用名稱,稱之為保留字或關(guān)鍵字,它們具有特定含義,之為保留字或關(guān)鍵字,它們具有特定含義,程序員不能另做他用。如:程序員

7、不能另做他用。如:C C語言規(guī)定了語言規(guī)定了3232個(gè)關(guān)鍵字。個(gè)關(guān)鍵字。3.1 標(biāo)識(shí)符標(biāo)識(shí)符 9C語言規(guī)定的語言規(guī)定的32個(gè)關(guān)鍵字:個(gè)關(guān)鍵字:auto double int struct break else long switch case enum register typedefchar extern return union const float short unsigned continue for signed void default goto sizeof volatiledo if static while 10#include main() int number1; /*

8、變量聲明變量聲明*/ int number2; int result; printf(“please input the two numbers:n”); /*顯示提示信息顯示提示信息*/ scanf(“%d%d”,&number1,&number2); /*從鍵盤讀取從鍵盤讀取2個(gè)整數(shù)個(gè)整數(shù)*/ result = number1 * number2; /*賦值運(yùn)算賦值運(yùn)算*/ printf(“the result is : %dn ”, result); /*輸出結(jié)果輸出結(jié)果*/ return 0; 用戶自定義用戶自定義標(biāo)識(shí)符標(biāo)識(shí)符C語言語言關(guān)鍵字關(guān)鍵字3.1 標(biāo)識(shí)符標(biāo)識(shí)符

9、11u 不同的程序設(shè)計(jì)語言標(biāo)識(shí)符格式可能不同。不同的程序設(shè)計(jì)語言標(biāo)識(shí)符格式可能不同。u C C語言規(guī)定:標(biāo)識(shí)符由大寫字母語言規(guī)定:標(biāo)識(shí)符由大寫字母A A到到Z Z、小寫字母、小寫字母a a到到z z、數(shù)字、數(shù)字0 0到到9 9和下劃線組成,且第一個(gè)字符必和下劃線組成,且第一個(gè)字符必須是字母或下劃線,隨后的字符必須是字母、數(shù)須是字母或下劃線,隨后的字符必須是字母、數(shù)字或下劃線。且大小寫敏感,如字或下劃線。且大小寫敏感,如ageage和和AgeAge是兩個(gè)是兩個(gè)不同的標(biāo)識(shí)符。不同的標(biāo)識(shí)符。u PASCAL PASCAL語言規(guī)定:和語言規(guī)定:和C C語言類似,只是要求第一語言類似,只是要求第一個(gè)字符

10、只能是字母比個(gè)字符只能是字母比C C語言約束更強(qiáng))。語言約束更強(qiáng))。3.1 標(biāo)識(shí)符標(biāo)識(shí)符思索:以下哪些是合法的思索:以下哪些是合法的C語言標(biāo)識(shí)符語言標(biāo)識(shí)符age,_class_no , name1, name1,2name,#age 12數(shù)據(jù)是計(jì)算機(jī)處理的對(duì)象。數(shù)據(jù)是計(jì)算機(jī)處理的對(duì)象。數(shù)據(jù)依據(jù)其本身的特點(diǎn)可以歸為不同的類:整數(shù)數(shù)據(jù)依據(jù)其本身的特點(diǎn)可以歸為不同的類:整數(shù)、小數(shù)、字符、字符串等。、小數(shù)、字符、字符串等。(高級(jí)程序語言特點(diǎn):按照人對(duì)于數(shù)據(jù)的表達(dá)方(高級(jí)程序語言特點(diǎn):按照人對(duì)于數(shù)據(jù)的表達(dá)方式)式) 程序設(shè)計(jì)語言應(yīng)該具備區(qū)分各種類型數(shù)據(jù)的能力程序設(shè)計(jì)語言應(yīng)該具備區(qū)分各種類型數(shù)據(jù)的能力,于

11、是引入了數(shù)據(jù)類型的概念。,于是引入了數(shù)據(jù)類型的概念。數(shù)據(jù)類型包括兩層含義:定義了一系列的值數(shù)據(jù)類型包括兩層含義:定義了一系列的值( (屬于屬于該類型的數(shù)據(jù)能夠取值的范圍以及能應(yīng)用于這該類型的數(shù)據(jù)能夠取值的范圍以及能應(yīng)用于這些值上的一系列操作數(shù)據(jù)操作)。些值上的一系列操作數(shù)據(jù)操作)。 3.2 數(shù)據(jù)類型數(shù)據(jù)類型 13u整數(shù)是由符號(hào)和一個(gè)或多個(gè)數(shù)字組成的正數(shù)、整數(shù)是由符號(hào)和一個(gè)或多個(gè)數(shù)字組成的正數(shù)、0 0或負(fù)數(shù),又稱為帶符號(hào)的自然數(shù)或負(fù)數(shù),又稱為帶符號(hào)的自然數(shù) ,如,如+12,-+12,-3838。u留意:在數(shù)學(xué)中,整數(shù)是一個(gè)無限集合,但對(duì)留意:在數(shù)學(xué)中,整數(shù)是一個(gè)無限集合,但對(duì)于計(jì)算機(jī)來說,只能表

12、示它的一個(gè)有限子集于計(jì)算機(jī)來說,只能表示它的一個(gè)有限子集取決于存儲(chǔ)空間的大?。┤Q于存儲(chǔ)空間的大?。?。整型整型3.2 數(shù)據(jù)類型數(shù)據(jù)類型程序設(shè)計(jì)語言一般包含四種標(biāo)準(zhǔn)數(shù)據(jù)類型:程序設(shè)計(jì)語言一般包含四種標(biāo)準(zhǔn)數(shù)據(jù)類型:整型、字符型、浮點(diǎn)型和布爾型補(bǔ)充)。整型、字符型、浮點(diǎn)型和布爾型補(bǔ)充)。 143.2 數(shù)據(jù)類型整型數(shù)據(jù)類型整型整型數(shù)據(jù)占用的內(nèi)存單元數(shù):整型數(shù)據(jù)占用的內(nèi)存單元數(shù):C語言中整型數(shù)據(jù)細(xì)分為四類:語言中整型數(shù)據(jù)細(xì)分為四類:short int、int、long int和和long long int。(和教材不同)。(和教材不同)C語言標(biāo)準(zhǔn)沒有規(guī)定每一種整數(shù)類型占用的內(nèi)存語言標(biāo)準(zhǔn)沒有規(guī)定每一種整

13、數(shù)類型占用的內(nèi)存空間大小即數(shù)的范圍),只是約束到:空間大小即數(shù)的范圍),只是約束到:short int和和int至少要占據(jù)至少要占據(jù)16位位2字節(jié)),而字節(jié)),而long數(shù)數(shù)據(jù)至少要有據(jù)至少要有32位位4字節(jié));且數(shù)據(jù)長(zhǎng)度上,字節(jié));且數(shù)據(jù)長(zhǎng)度上,short int=int=long int = long long int 。 每一種整數(shù)類型占用的內(nèi)存字節(jié)數(shù)由編譯器根據(jù)每一種整數(shù)類型占用的內(nèi)存字節(jié)數(shù)由編譯器根據(jù)所用機(jī)器的硬件情況來決定。所用機(jī)器的硬件情況來決定。 15整型數(shù)據(jù)所允許的運(yùn)算包括:整型數(shù)據(jù)所允許的運(yùn)算包括: 二目算術(shù)運(yùn)算二目算術(shù)運(yùn)算 :+ +、- -、* *、/ /、(取余、(取余

14、) ) ; 留意:兩個(gè)整數(shù)進(jìn)行二目運(yùn)算后結(jié)果還是整數(shù)留意:兩個(gè)整數(shù)進(jìn)行二目運(yùn)算后結(jié)果還是整數(shù) 如:如:125 / 10 = 12125 / 10 = 12余數(shù)余數(shù)5 5被舍棄)被舍棄), , 125 % 10 = 5 125 % 10 = 5 單目算術(shù)運(yùn)算單目算術(shù)運(yùn)算 :取負(fù)值等;:取負(fù)值等; 關(guān)系運(yùn)算:關(guān)系運(yùn)算: ,= ,=,= =(= =(相等),相等), != !=(不相等)(不相等)C C語言中關(guān)系運(yùn)算結(jié)果為語言中關(guān)系運(yùn)算結(jié)果為1 1真或真或0 0假)假) 3.2 數(shù)據(jù)類型整型數(shù)據(jù)類型整型 16字符型字符型u字符數(shù)據(jù)包括字符數(shù)據(jù)包括2626* *2 2個(gè)字母大小寫)個(gè)字母大小寫)+10

15、+10個(gè)數(shù)個(gè)數(shù)字字+ +其它顯示符號(hào),總共其它顯示符號(hào),總共9595種;還有種;還有3333種控制種控制符號(hào),總共符號(hào),總共128128種符號(hào);種符號(hào); u字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ):實(shí)際存放的是一字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ):實(shí)際存放的是一個(gè)整數(shù)值。多數(shù)計(jì)算機(jī)系統(tǒng)采用個(gè)整數(shù)值。多數(shù)計(jì)算機(jī)系統(tǒng)采用ASCIIASCIIAmerican Standard Code for Information American Standard Code for Information InterchangeInterchange標(biāo)準(zhǔn)編碼模式來對(duì)字符進(jìn)行編標(biāo)準(zhǔn)編碼模式來對(duì)字符進(jìn)行編碼碼 。每個(gè)字符占用。每個(gè)字符占用8

16、 8位內(nèi)存位內(nèi)存1 1個(gè)字節(jié));個(gè)字節(jié));3.2 數(shù)據(jù)類型數(shù)據(jù)類型 17ASCII表表L H 000000010010001101000101011001110000NULDLE SP0Pp 0001SOHDC1!1AQaq 0010STXDC2“2BRbr 0011ETXDC3#3CScs 0100EOTDC4$4DTdt 0101ENQNAK%5EUeu 0110ACKSYN&6FVfv 0111BELETB,7GWgw 1000BSCAN)8HXhx 1001HTEM(9IYiy 1010LFSUB*:JZjz 1011VTESC+;Kk 1100FFFSNn 1111SIUS/

17、?O_oDEL2000H2019H2019H2019H2019H01000001存儲(chǔ)空間存儲(chǔ)空間該存儲(chǔ)區(qū)該存儲(chǔ)區(qū)存放字符存放字符A思索:若從鍵盤上輸入字符存儲(chǔ)到內(nèi)存,字符思索:若從鍵盤上輸入字符存儲(chǔ)到內(nèi)存,字符到二進(jìn)制編碼的轉(zhuǎn)換是由什么部件來實(shí)現(xiàn)的?到二進(jìn)制編碼的轉(zhuǎn)換是由什么部件來實(shí)現(xiàn)的? 18ASCIIASCII(AA)=65 A=65 A的的ASCIIASCII值是值是6565ASCIIASCII(aa)=97 =97 規(guī)律:大寫字母的規(guī)律:大寫字母的ASCIIASCII編碼編碼3232小寫字母的小寫字母的ASCIIASCII編碼編碼 3.2 數(shù)據(jù)類型字符型數(shù)據(jù)類型字符型 193.2 數(shù)據(jù)

18、類型字符型數(shù)據(jù)類型字符型關(guān)系運(yùn)算按照關(guān)系運(yùn)算按照ASCII大小):大?。?,=, = =,!=例如:例如:A a 結(jié)果為真,由于結(jié)果為真,由于A的的ASCII是是65 ,a的的ASCII是是97 ,6597字符型所允許的運(yùn)算包括將字符型數(shù)據(jù)當(dāng)作整型數(shù)據(jù)字符型所允許的運(yùn)算包括將字符型數(shù)據(jù)當(dāng)作整型數(shù)據(jù)對(duì)待):對(duì)待):算術(shù)運(yùn)算:算術(shù)運(yùn)算:ch2=ch1-32 (ch2=ch1-32 (若若ch1ch1值為值為b b, ,則則ch2ch2為為B B) ) ch2=ch1-1 ( ch2=ch1-1 (若若ch1ch1值為值為b b, ,則則ch2ch2為為a a) ) ch2=ch1 ch2=ch11

19、 (1 (若若ch1ch1值為值為b b, ,則則ch2ch2為為c c) ) 20浮點(diǎn)型浮點(diǎn)型u 浮點(diǎn)型是帶小數(shù)部分的數(shù)字類型浮點(diǎn)型是帶小數(shù)部分的數(shù)字類型 ,如,如3.143.14,1.575E51.575E5科學(xué)計(jì)數(shù)法,即科學(xué)計(jì)數(shù)法,即 1.575 1.575* * ) )。u抽象地講,浮點(diǎn)型數(shù)據(jù)的值域是全體實(shí)數(shù),但是由抽象地講,浮點(diǎn)型數(shù)據(jù)的值域是全體實(shí)數(shù),但是由于計(jì)算機(jī)表示方面的原因,計(jì)算機(jī)只能表示它的一個(gè)于計(jì)算機(jī)表示方面的原因,計(jì)算機(jī)只能表示它的一個(gè)有限子集。有限子集。u 同樣由于計(jì)算機(jī)表示方面的原因,實(shí)數(shù)在計(jì)算機(jī)同樣由于計(jì)算機(jī)表示方面的原因,實(shí)數(shù)在計(jì)算機(jī)內(nèi)部的表示有時(shí)是不準(zhǔn)確的。例如

20、,存儲(chǔ)圓周率時(shí),內(nèi)部的表示有時(shí)是不準(zhǔn)確的。例如,存儲(chǔ)圓周率時(shí),只能表示成近似的值。只能表示成近似的值。3.2 數(shù)據(jù)類型數(shù)據(jù)類型510 213.2 數(shù)據(jù)類型數(shù)據(jù)類型uC語言支持三種不同長(zhǎng)度的浮點(diǎn)數(shù)據(jù)類型:語言支持三種不同長(zhǎng)度的浮點(diǎn)數(shù)據(jù)類型:float、double和和long double。 其中其中float一般占一般占32位位(字節(jié));字節(jié));double一般占一般占64位(位( 8字節(jié))字節(jié)), long double占占96位(位( 12字節(jié))。字節(jié))。u三者區(qū)別:越后面的類型運(yùn)算精度越高,值域三者區(qū)別:越后面的類型運(yùn)算精度越高,值域越大,但占用的內(nèi)存單元越多。越大,但占用的內(nèi)存單元越多

21、。 22浮點(diǎn)型所允許的運(yùn)算包括:浮點(diǎn)型所允許的運(yùn)算包括: 二目算術(shù)運(yùn)算二目算術(shù)運(yùn)算 :+ +、- -、* *、/ /;浮點(diǎn)型數(shù)據(jù)進(jìn)行二目運(yùn)算結(jié)果還是浮點(diǎn)型。浮點(diǎn)型數(shù)據(jù)進(jìn)行二目運(yùn)算結(jié)果還是浮點(diǎn)型。 如:如:12.0/5.0=2.412.0/5.0=2.4 單目算術(shù)運(yùn)算單目算術(shù)運(yùn)算 :取負(fù)值:取負(fù)值 關(guān)系運(yùn)算:關(guān)系運(yùn)算: ,= ,=,= = =,!=!= 3.2 數(shù)據(jù)類型浮點(diǎn)型數(shù)據(jù)類型浮點(diǎn)型留意:要避免做兩個(gè)實(shí)數(shù)相等或不相等的比較。由于計(jì)算留意:要避免做兩個(gè)實(shí)數(shù)相等或不相等的比較。由于計(jì)算機(jī)表示方面的近似性,會(huì)使得本來應(yīng)該相等的兩個(gè)數(shù)不等。機(jī)表示方面的近似性,會(huì)使得本來應(yīng)該相等的兩個(gè)數(shù)不等。建議在

22、比較兩個(gè)浮點(diǎn)數(shù)建議在比較兩個(gè)浮點(diǎn)數(shù)X和和Y是否相等時(shí)使用是否相等時(shí)使用|X-Y|,其中其中是一個(gè)絕對(duì)值較小的正浮點(diǎn)數(shù)。是一個(gè)絕對(duì)值較小的正浮點(diǎn)數(shù)。 233.2 數(shù)據(jù)類型布爾型補(bǔ)充)數(shù)據(jù)類型布爾型補(bǔ)充) 布爾類型數(shù)據(jù):取值只有兩種,真布爾類型數(shù)據(jù):取值只有兩種,真True或或者假者假False)。允許的運(yùn)算包括:與、或、非)。允許的運(yùn)算包括:與、或、非。 絕大多數(shù)程序設(shè)計(jì)語言中有布爾類型這種數(shù)據(jù)絕大多數(shù)程序設(shè)計(jì)語言中有布爾類型這種數(shù)據(jù)類型,如類型,如Pascal語言。但是語言。但是C語言沒有定義這語言沒有定義這種數(shù)據(jù)類型。種數(shù)據(jù)類型。布爾型布爾型 24標(biāo)準(zhǔn)類型是原子的、不可再分的。程序員標(biāo)準(zhǔn)類型

23、是原子的、不可再分的。程序員可以以標(biāo)準(zhǔn)類型為基本構(gòu)件,構(gòu)造出復(fù)雜可以以標(biāo)準(zhǔn)類型為基本構(gòu)件,構(gòu)造出復(fù)雜的數(shù)據(jù)類型。如的數(shù)據(jù)類型。如C C語言有:構(gòu)造、數(shù)組、結(jié)語言有:構(gòu)造、數(shù)組、結(jié)合、文件等復(fù)雜數(shù)據(jù)類型;合、文件等復(fù)雜數(shù)據(jù)類型;PASCALPASCAL語言有語言有:構(gòu)造、數(shù)組、集合、文件等復(fù)雜數(shù)據(jù)類:構(gòu)造、數(shù)組、集合、文件等復(fù)雜數(shù)據(jù)類型。型。 3.2 數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型 253.3 變量變量數(shù)據(jù)總線 控制路線 輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備存儲(chǔ)器存儲(chǔ)器中央處理器中央處理器CPU)運(yùn)算部件運(yùn)算部件控制部件控制部件輸入數(shù)據(jù)、中間運(yùn)輸入數(shù)據(jù)、中間運(yùn)算結(jié)果、最終結(jié)果算結(jié)果、最終結(jié)

24、果程序需要將輸入程序需要將輸入數(shù)據(jù)、中間運(yùn)算數(shù)據(jù)、中間運(yùn)算結(jié)果以及最終結(jié)結(jié)果以及最終結(jié)果暫時(shí)保存在內(nèi)果暫時(shí)保存在內(nèi)存單元中。存單元中。地址總線 程序如何實(shí)現(xiàn)程序如何實(shí)現(xiàn)從內(nèi)存單元存從內(nèi)存單元存取數(shù)據(jù)?取數(shù)據(jù)? 263.3 變量變量 程序運(yùn)行時(shí),通過內(nèi)存地址對(duì)內(nèi)存數(shù)據(jù)進(jìn)行讀寫; 程序員寫源程序時(shí),如果也是直接使用內(nèi)存地址來讀寫內(nèi)存數(shù)據(jù),會(huì)很麻煩! 如果用名字來代替地址,在程序中出現(xiàn)的是代表內(nèi)存空間的名字,讓編譯器來跟蹤數(shù)據(jù)實(shí)際存放的物理內(nèi)存地址,就可以簡(jiǎn)化編程變量; 27變量用來代表內(nèi)存存儲(chǔ)空間,該存儲(chǔ)空間用來存變量用來代表內(nèi)存存儲(chǔ)空間,該存儲(chǔ)空間用來存放被加工的數(shù)據(jù)或處理的結(jié)果。源程序中對(duì)變量

25、放被加工的數(shù)據(jù)或處理的結(jié)果。源程序中對(duì)變量的操作讀和賦值實(shí)際上是對(duì)存儲(chǔ)空間的讀寫的操作讀和賦值實(shí)際上是對(duì)存儲(chǔ)空間的讀寫操作。操作。變量具有三個(gè)重要屬性:稱號(hào)、值和數(shù)據(jù)類型。變量具有三個(gè)重要屬性:稱號(hào)、值和數(shù)據(jù)類型。2000H2019H2019H2019H2019H2019H2019H2019Hsexagescore內(nèi)存內(nèi)存用用sex代表地址為代表地址為2019H的內(nèi)存單的內(nèi)存單元,元,score代表地址為代表地址為2019H2019H的一片內(nèi)存空間。用變量的一片內(nèi)存空間。用變量來實(shí)現(xiàn)對(duì)這些內(nèi)存空間數(shù)據(jù)的存來實(shí)現(xiàn)對(duì)這些內(nèi)存空間數(shù)據(jù)的存取。取。3.3 變量變量 28一、變量定義 u 使用變量來對(duì)內(nèi)

26、存數(shù)據(jù)進(jìn)行存取前,必須先定義變量,目的是建立變量和存儲(chǔ)空間的對(duì)應(yīng)關(guān)系。u 變量定義指明變量的名稱和數(shù)據(jù)類型變量代表的存儲(chǔ)空間存放的數(shù)據(jù)的類型)。變量的名稱要遵循標(biāo)識(shí)符命名原則,雖然可以為任意長(zhǎng)度,但C編譯器只認(rèn)為前31個(gè)字符有效。變量類型可以告訴編譯器留出適量的用于保存數(shù)據(jù)的內(nèi)存。u 不同語言中變量定義的寫法不一樣,C語言格式:數(shù)據(jù)類型 變量名1,變量名2,;3.3 變量變量思索:變量定義時(shí)要指明哪些內(nèi)容?思索:變量定義時(shí)要指明哪些內(nèi)容?char sex;int age1,age2;float score;數(shù)據(jù)類型數(shù)據(jù)類型變量名變量名分號(hào)必須分號(hào)必須多個(gè)同類型變多個(gè)同類型變量用逗號(hào)分割量用逗號(hào)

27、分割 29留意,變量定義僅引起內(nèi)存存儲(chǔ)留意,變量定義僅引起內(nèi)存存儲(chǔ)空間分配,但此時(shí)變量中存儲(chǔ)的空間分配,但此時(shí)變量中存儲(chǔ)的值一般是無意義的特殊情況除值一般是無意義的特殊情況除外)!外)!變量定義將引起內(nèi)存空間的分配。定義后,變量就變量定義將引起內(nèi)存空間的分配。定義后,變量就用來代表內(nèi)存中的一片存儲(chǔ)單元存儲(chǔ)單元個(gè)數(shù)取用來代表內(nèi)存中的一片存儲(chǔ)單元存儲(chǔ)單元個(gè)數(shù)取決于變量類型)。決于變量類型)。3.3 變量變量2000H2019H2019H2019H2019H2019H2019H2019Hsexagescore存儲(chǔ)空間存儲(chǔ)空間char sex;int age;float score; 30二、變量賦值

28、二、變量賦值3.3 變量變量C語言示例:語言示例: char sex; int age; float score;變量賦值:把一個(gè)值寫入變量代表的存儲(chǔ)空間。變量賦值:把一個(gè)值寫入變量代表的存儲(chǔ)空間。C語言變量賦值格式:變量名語言變量賦值格式:變量名=表達(dá)式表達(dá)式sex=F;age = 18; score= 89.5;2000H2019H2019H2019H2019H2019H2019H2019Hsexagescore存儲(chǔ)空間存儲(chǔ)空間ASCII(F)=77)771889.5變量的值變量的值 313.3 變量變量 變量使用特點(diǎn) 先定義,后使用。 int age; 定義一個(gè)變量為整數(shù)類型。如未定義,

29、則在編譯時(shí)被查出,認(rèn)為非法。 變量未被賦值前,值一般是無意義的。 對(duì)變量賦值過程是“覆蓋過程,用新值去替換舊值。 讀取變量代表的存儲(chǔ)空間數(shù)據(jù)又稱讀取變量的值):age=age+1; 讀取變量的值時(shí),該變量保持不變。 32C C語言允許變量在定義時(shí)進(jìn)行初始化。初始語言允許變量在定義時(shí)進(jìn)行初始化。初始化語句用來給變量賦初始值?;Z句用來給變量賦初始值。(?)(?)例如:例如:char sexchar sex;int age = 16;int age = 16;float score;float score; 3.3 變量變量2000H2019H2019H2019H2019H2019H2019H20

30、19H16存儲(chǔ)空間存儲(chǔ)空間sexagescore 333.3 變量變量試解釋下列操作的含義試解釋下列操作的含義讀取變量的值讀取變量的值寫入變量寫入變量給變量賦值給變量賦值修改變量的值修改變量的值 34#include main() int number1; /*變量聲明變量聲明*/ int number2; int result; printf(“please input the two numbers:n”); /*顯示提示信息顯示提示信息*/ scanf(“%d%d”,&(取變量地址的運(yùn)算符取變量地址的運(yùn)算符number1,&number2); /*從鍵盤讀取從鍵盤讀取2個(gè)

31、整數(shù)個(gè)整數(shù)*/ result = number1 * number2; /*賦值運(yùn)算賦值運(yùn)算*/ printf(“the result is : %dn ”, result); /*輸出結(jié)果輸出結(jié)果*/ return 0; 3.3 變量變量 353.3 變量變量u找出下述變量定義的錯(cuò)誤:找出下述變量定義的錯(cuò)誤:u float f;u char A, B; 36char sex;int age;float score;變量類型變量類型變量名變量名總結(jié):總結(jié):變量三要素:變量名存儲(chǔ)空間)、數(shù)據(jù)類型存儲(chǔ)變量三要素:變量名存儲(chǔ)空間)、數(shù)據(jù)類型存儲(chǔ)空間存放的數(shù)據(jù)的類型)、變量值存儲(chǔ)內(nèi)容)空間存放的數(shù)據(jù)的

32、類型)、變量值存儲(chǔ)內(nèi)容)3.3 變量變量2000H2019H2019H2019H2019H2019H2019H2019H701889.5存儲(chǔ)空間存儲(chǔ)空間變量的值變量的值sexagescore 37一、文字常量一、文字常量 文字常量是指在程序中未被命名的值。文字常量是指在程序中未被命名的值。例:例:circumference = 2 circumference = 2 * * (length + widthlength + width); ; 其中其中2 2就是一個(gè)文字常量,就是一個(gè)文字常量,lengthlength和和widthwidth是變量是變量三類常量:文字常量、命名常量、符號(hào)常量三類常

33、量:文字常量、命名常量、符號(hào)常量3.4 常量常量 38二、命名常量二、命名常量和變量類似,命名常量也是內(nèi)存存儲(chǔ)空間的名和變量類似,命名常量也是內(nèi)存存儲(chǔ)空間的名字,代表一片內(nèi)存存儲(chǔ)空間,但一般不允許程字,代表一片內(nèi)存存儲(chǔ)空間,但一般不允許程序去改變?cè)摯鎯?chǔ)空間中的數(shù)據(jù)。序去改變?cè)摯鎯?chǔ)空間中的數(shù)據(jù)。 C C語言中定義一個(gè)命名常量:語言中定義一個(gè)命名常量: main main()() const float pi = 3.14; const float pi = 3.14; 3.4 常量常量2000H2019H2019H2019H2019H2019H2019H2019H3.14存儲(chǔ)空間存儲(chǔ)空間pi說明

34、說明pi是個(gè)命是個(gè)命名常量名常量; 39#include main() const float pi=3.14;/*常量定義常量定義*/ float radius; /*變量定義變量定義*/ float area; printf(“please input the radius:n”); /*顯示提示信息顯示提示信息*/ scanf(“%f”,&radius); /*從鍵盤讀取半徑從鍵盤讀取半徑*/ area = pi * radius * radius; /*賦值運(yùn)算賦值運(yùn)算*/ printf(“the area is : %fn ”, area); /*輸出結(jié)果輸出結(jié)果*/ sys

35、tem(“pause”); return 0; 40 符號(hào)常量是僅含有符號(hào)名稱的值。符號(hào)常量是僅含有符號(hào)名稱的值。C C語言符號(hào)常量定義:語言符號(hào)常量定義:#define #define 標(biāo)識(shí)符標(biāo)識(shí)符 替換文本替換文本 #define PI 3.14 #define PI 3.14 area = PI area = PI* * radius radius * * radius; radius; 編譯時(shí),預(yù)處理程序能夠?qū)⑺谐霈F(xiàn)該符號(hào)名稱編譯時(shí),預(yù)處理程序能夠?qū)⑺谐霈F(xiàn)該符號(hào)名稱的地方用值替換的地方用值替換: : area = 3.14 area = 3.14 * * radius radius

36、 * * radius radius ; 使用符號(hào)常量的好處:使程序易讀性好、容易維使用符號(hào)常量的好處:使程序易讀性好、容易維護(hù)。護(hù)。 三、符號(hào)常量三、符號(hào)常量3.4 常量常量 413.4 常量常量#include #define PI 3.14 /常量定義,注意結(jié)束處無分號(hào),在主函數(shù)之前常量定義,注意結(jié)束處無分號(hào),在主函數(shù)之前main() float radius; /*變量定義變量定義*/ float area; printf(“please input the radius:n”); /*顯示提示信息顯示提示信息*/ scanf(“%f”,&radius); /*從鍵盤讀取半徑從

37、鍵盤讀取半徑*/ area = PI* radius * radius; /*賦值運(yùn)算賦值運(yùn)算*/ printf(“the area is : %fn ”, area); /*輸出結(jié)果輸出結(jié)果*/ system(“pause”); return 0; 42四、常量的類型四、常量的類型和變量一樣,常量也有類型。大多數(shù)程序設(shè)計(jì)語言使用整和變量一樣,常量也有類型。大多數(shù)程序設(shè)計(jì)語言使用整型、浮點(diǎn)型、字符型和字符串型常量。型、浮點(diǎn)型、字符型和字符串型常量。C C語言中四種常量:語言中四種常量:1515整型常量整型常量15.415.4浮點(diǎn)型常量浮點(diǎn)型常量A A字符型常量字符型常量 (用單引號(hào)括起字符)(

38、用單引號(hào)括起字符)“HelloHello” 字符串型常量用雙引號(hào)括起字符序列)字符串型常量用雙引號(hào)括起字符序列)文字常量和符號(hào)常量的值體現(xiàn)了常量的類型文字常量和符號(hào)常量的值體現(xiàn)了常量的類型3.4 常量常量 43 如果整型常量以如果整型常量以0開頭,開頭,C編譯器會(huì)認(rèn)為該常量編譯器會(huì)認(rèn)為該常量是八進(jìn)制數(shù)。如是八進(jìn)制數(shù)。如040即十進(jìn)制的即十進(jìn)制的32。 如果整型常量以如果整型常量以0 x開頭,開頭,C編譯器會(huì)認(rèn)為該常編譯器會(huì)認(rèn)為該常量是十六進(jìn)制數(shù)。如量是十六進(jìn)制數(shù)。如0 xFF即十進(jìn)制的即十進(jìn)制的255。 #include #define X 040 #define Y 0XFF main()

39、printf(“X=%d,Y=%d”, X,Y); system(pause); return 0; 3.4 常量常量X=32,Y=255請(qǐng)按任意鍵繼續(xù)請(qǐng)按任意鍵繼續(xù) . . . 44常量小測(cè)試常量小測(cè)試 下述常量定義哪些是錯(cuò)誤的?為什么?下述常量定義哪些是錯(cuò)誤的?為什么? #define ratio =1/3 #define ratio 1/3; #define 1st_character $ #define if 7不能有號(hào);否則會(huì)用不能有號(hào);否則會(huì)用=1/3替換替換ratio不能有語句結(jié)束符;號(hào)不能有語句結(jié)束符;號(hào)標(biāo)識(shí)符只能以字符或者標(biāo)識(shí)符只能以字符或者下劃線開頭下劃線開頭If是是C語言

40、規(guī)定的關(guān)鍵語言規(guī)定的關(guān)鍵字,有特定含義,用戶字,有特定含義,用戶不能隨便使用不能隨便使用習(xí)慣上,常量名一般采習(xí)慣上,常量名一般采用大寫字母。用大寫字母。 45數(shù)據(jù)總線 控制路線 輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備存儲(chǔ)器存儲(chǔ)器中央處理器中央處理器CPU)運(yùn)算部件運(yùn)算部件控制部件控制部件地址總線 3.5 輸入和輸出輸入和輸出I/O)一個(gè)真正有用的程一個(gè)真正有用的程序一般會(huì)從輸入設(shè)序一般會(huì)從輸入設(shè)備接收數(shù)據(jù)、并將備接收數(shù)據(jù)、并將運(yùn)算結(jié)果輸出到輸運(yùn)算結(jié)果輸出到輸出設(shè)備中。出設(shè)備中。為了實(shí)現(xiàn)和輸入輸出為了實(shí)現(xiàn)和輸入輸出設(shè)備的通信,程序必設(shè)備的通信,程序必須要有輸入和輸出語須要有輸入和輸出語句。一個(gè)既無輸入

41、又句。一個(gè)既無輸入又無輸出的程序是沒有無輸出的程序是沒有用的。用的。 46輸入和輸出語句最基本的功能在于從外界環(huán)境將輸入和輸出語句最基本的功能在于從外界環(huán)境將值讀入一個(gè)變量,或者將一個(gè)值寫出到外界環(huán)值讀入一個(gè)變量,或者將一個(gè)值寫出到外界環(huán)境中。境中。 3.5 輸入和輸出輸入和輸出I/O) 47一、輸入一、輸入 通過輸入語句或者預(yù)先定義的函數(shù)可以從外界接收值通過輸入語句或者預(yù)先定義的函數(shù)可以從外界接收值。C C語言輸入函數(shù)舉例:語言輸入函數(shù)舉例: scanf( scanf(格式控制串,輸入項(xiàng)地址表格式控制串,輸入項(xiàng)地址表););格式控制串:含有各種以百分號(hào)開頭的格式控制符。格式控制串:含有各種以

42、百分號(hào)開頭的格式控制符。輸入項(xiàng)地址表:有逗號(hào)分隔開的若干輸入表項(xiàng)組成,每輸入項(xiàng)地址表:有逗號(hào)分隔開的若干輸入表項(xiàng)組成,每一個(gè)表項(xiàng)是一個(gè)變量的地址。一個(gè)表項(xiàng)是一個(gè)變量的地址。scanfscanf函數(shù)的作用:從標(biāo)準(zhǔn)輸入設(shè)備鍵盤上讀取一函數(shù)的作用:從標(biāo)準(zhǔn)輸入設(shè)備鍵盤上讀取一系列數(shù)據(jù),按格式控制串的要求進(jìn)行轉(zhuǎn)換并送到輸入項(xiàng)系列數(shù)據(jù),按格式控制串的要求進(jìn)行轉(zhuǎn)換并送到輸入項(xiàng)地址表所列的逐變量中。地址表所列的逐變量中。 3.5 輸入和輸出輸入和輸出I/O) 48 scanf(“%d”,&number1);當(dāng)程序執(zhí)行該語句時(shí),等待用戶從鍵盤輸入數(shù)據(jù)并轉(zhuǎn)當(dāng)程序執(zhí)行該語句時(shí),等待用戶從鍵盤輸入數(shù)據(jù)并轉(zhuǎn)換成

43、一個(gè)整數(shù),存儲(chǔ)到變量換成一個(gè)整數(shù),存儲(chǔ)到變量number1中。中。d:轉(zhuǎn)換說明符:轉(zhuǎn)換說明符conversion specifier),用于告訴),用于告訴程序鍵入的數(shù)據(jù)要轉(zhuǎn)換成一個(gè)整數(shù);程序鍵入的數(shù)據(jù)要轉(zhuǎn)換成一個(gè)整數(shù);&:取變量地址的運(yùn)算符,:取變量地址的運(yùn)算符, &number1表示變量表示變量number1的首地址。的首地址。留意:書寫程序時(shí)不要遺漏留意:書寫程序時(shí)不要遺漏&.3.5 輸入和輸出輸入和輸出I/O)格式控制串格式控制串輸入項(xiàng)地址表輸入項(xiàng)地址表 493.5 輸入和輸出輸入和輸出I/O)設(shè)設(shè)age為為int型變量,型變量,sex、ch為為char型變量,

44、型變量,height為為float型變量。型變量。輸入數(shù)據(jù)為:輸入數(shù)據(jù)為:20M1.65若希望若希望age得到值得到值20,sex得到值得到值M,height得到值得到值1.65,則函數(shù)調(diào)用為:則函數(shù)調(diào)用為: scanf(“%d%c%f”,&age,&sex, &height); 若希望若希望ch得到字符值得到字符值2, age得到整型值得到整型值0, sex得到字得到字符值符值M, height得到浮點(diǎn)值得到浮點(diǎn)值1.65,則函數(shù)調(diào)用為:,則函數(shù)調(diào)用為: scanf(“%c%d%c%f”,&ch, &age, &sex, &height

45、); 50用用scanfscanf語句從鍵盤同時(shí)讀入年齡和性別:語句從鍵盤同時(shí)讀入年齡和性別:scanf(“%d scanf(“%d %c”,&age,&sex);%c”,&age,&sex);scanf(“%d,%c”,&age,&sescanf(“%d,%c”,&age,&sex);x);3.5 輸入和輸出輸入和輸出I/O)10 S10,S格式控制串中除了轉(zhuǎn)換說明符,還可以包含其他字符。格式控制串中除了轉(zhuǎn)換說明符,還可以包含其他字符。從鍵盤輸入的內(nèi)容要和格式控制串匹配。如果在格式從鍵盤輸入的內(nèi)容要和格式控制串匹配。如果在格式控

46、制串中除了轉(zhuǎn)換說明符以外還有其它字符,則在輸控制串中除了轉(zhuǎn)換說明符以外還有其它字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。如:入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。如:空格空格scanf(“age=%d, sex=%c”,&age,&sex);scanf(“age=%d, sex=%c”,&age,&sex);age=10,sex=S 51二、輸出二、輸出 通過語句或者預(yù)先定義的函數(shù)可以將值輸出到外界。通過語句或者預(yù)先定義的函數(shù)可以將值輸出到外界。C C輸出函數(shù)舉例:輸出函數(shù)舉例:printf(printf(格式控制串,輸出項(xiàng)表格式控制串,輸出項(xiàng)表););功能

47、:將字符串顯示在標(biāo)準(zhǔn)輸出設(shè)備一般為顯示功能:將字符串顯示在標(biāo)準(zhǔn)輸出設(shè)備一般為顯示器上。程序員可以將常量、變量、表達(dá)式、函數(shù)器上。程序員可以將常量、變量、表達(dá)式、函數(shù)調(diào)用作為待輸出字符串的一部分。調(diào)用作為待輸出字符串的一部分。格式控制串:包含了某些要直接顯示的字符,也包格式控制串:包含了某些要直接顯示的字符,也包含一些轉(zhuǎn)換說明符。含一些轉(zhuǎn)換說明符。輸出項(xiàng)表:可以是常量、變量、表達(dá)式、函數(shù)調(diào)用。輸出項(xiàng)表:可以是常量、變量、表達(dá)式、函數(shù)調(diào)用。3.5 輸入和輸出輸入和輸出I/O) 52如:如: printfprintf(”Your age is : %dYour age is : %d”,age,ag

48、e); ;留意,在輸出時(shí)轉(zhuǎn)換說明符留意,在輸出時(shí)轉(zhuǎn)換說明符%d%d不輸出,而是被變量不輸出,而是被變量ageage的值代替。假設(shè)變量的值代替。假設(shè)變量ageage的值是的值是1818,則顯示器上,則顯示器上將輸出字符串將輸出字符串“Your age is : 18Your age is : 18” 留意:此處變量留意:此處變量ageage前面沒有前面沒有&!&!3.5 輸入和輸出輸入和輸出I/O)上機(jī)練習(xí):如果上述語句改寫成上機(jī)練習(xí):如果上述語句改寫成printf(“Your age is :”, age);輸出將是怎樣?輸出將是怎樣? 533.5 輸入和輸出輸入和輸出I/O)

49、可以用可以用printf語句輸出常量、變量、表達(dá)式、函語句輸出常量、變量、表達(dá)式、函數(shù)調(diào)用的值:數(shù)調(diào)用的值:printf(“the agerage score is %d”,SCORE);/輸出輸出常量常量printf(“your age is %d”,age); /輸出變量輸出變量printf(“the value of (2+3)10 is:%dn”,(2+3)10);/輸出表達(dá)式的值(?)輸出表達(dá)式的值(?)printf(“the size of int is :%d”,sizeof(int); /輸出輸出函數(shù)返回值函數(shù)返回值 54若想同時(shí)輸出年齡和性別,則語句可寫為:若想同時(shí)輸出年齡和

50、性別,則語句可寫為:printfprintf( “ Your age is : %d Your age is : %d,your sex is : your sex is : %c%c”,age,sex,age,sex); ;顯示器上將輸出字符串顯示器上將輸出字符串“Your age is : 18, Your age is : 18, your sex is : Fyour sex is : F” 3.5 輸入和輸出輸入和輸出I/O)輸入輸出后面會(huì)再詳細(xì)講解,有興趣的同學(xué)可參見輸入輸出后面會(huì)再詳細(xì)講解,有興趣的同學(xué)可參見的的9.3和和9.11。 55找出以下程序的錯(cuò)誤找出以下程序的錯(cuò)誤inc

51、ludemain()(未定義變量)(未定義變量)printf(“input i and jn”); scanf(“i=%d”, &i); scanf(“%d”,&j); printf(“i=%d, j=%d”,i,j);/輸出輸出2個(gè)變量的值個(gè)變量的值 return 0;變量變量i和和j未定義就使用;未定義就使用;scanf(“i=%d”,& i) scanf(“%d”,& j);3. printf(“i=%d, j=%d”,i,j); 56修正后的程序includemain() int i,j;/變量定義變量定義 printf(“input i and jn”

52、); /輸入提示輸入提示 scanf(“i=%d”, &i); /鍵盤輸入變量鍵盤輸入變量i的值的值 scanf(%d,&j); printf(“i=%d, j=%d”,i,j);/輸出輸出2個(gè)變量的值個(gè)變量的值 system(pause); return 0;運(yùn)行結(jié)果:運(yùn)行結(jié)果:input i and ji=1020i=10, j=20請(qǐng)按任意鍵繼續(xù)請(qǐng)按任意鍵繼續(xù). . . 57#include main() int number1; /*存放整數(shù)存放整數(shù)1*/ int number2; /*存放整數(shù)存放整數(shù)2*/ int result; /*存放結(jié)果存放結(jié)果*/ print

53、f(“please input the two numbers:n”); /*顯示提示信息顯示提示信息*/ scanf(“%d %d”,&number1,&number2); /*讀取整數(shù)讀取整數(shù)*/ result = number1 * number2; /*賦值運(yùn)算賦值運(yùn)算*/ printf(“the result is : %dn ”, result); /*輸出結(jié)果輸出結(jié)果*/ return 0; 2000H2019Hresult2019H2019H2019H2019H2019H2019H存儲(chǔ)空間存儲(chǔ)空間number1number210 2010 20please in

54、put the two numbers:please input the two numbers:the result is : 200the result is : 2001020200 任務(wù)描述:輸入兩個(gè)整數(shù)任務(wù)描述:輸入兩個(gè)整數(shù),求兩數(shù)之積并輸出。,求兩數(shù)之積并輸出。 /*/:注釋注釋 main()函數(shù)()函數(shù) 變量定義部分變量定義部分 操作部分操作部分編譯后,源程序中出編譯后,源程序中出現(xiàn)現(xiàn)number1、number2和和result的地方將會(huì)用的地方將會(huì)用內(nèi)存相對(duì)地址非真內(nèi)存相對(duì)地址非真正物理地址交換。正物理地址交換。思索:何時(shí)、在哪里思索:何時(shí)、在哪里得到真正的物理地址?得到真正

55、的物理地址?編譯程序怎么處理變編譯程序怎么處理變量?操作系統(tǒng)怎么分量?操作系統(tǒng)怎么分配內(nèi)存?如何得到物配內(nèi)存?如何得到物理地址?深入學(xué)習(xí):理地址?深入學(xué)習(xí):編譯原理操編譯原理操作系統(tǒng)計(jì)算機(jī)作系統(tǒng)計(jì)算機(jī)組成原理組成原理假設(shè)操作系統(tǒng)已經(jīng)分配如下內(nèi)假設(shè)操作系統(tǒng)已經(jīng)分配如下內(nèi)存空間用于存放操作數(shù)和結(jié)果存空間用于存放操作數(shù)和結(jié)果程序運(yùn)行過程演示程序運(yùn)行過程演示 58輸入輸出練習(xí):定義三個(gè)變量,分別是整型、輸入輸出練習(xí):定義三個(gè)變量,分別是整型、浮點(diǎn)型、字符型。要求從鍵盤輸入三個(gè)值存放浮點(diǎn)型、字符型。要求從鍵盤輸入三個(gè)值存放到這三個(gè)變量里,并且輸出這三個(gè)變量。到這三個(gè)變量里,并且輸出這三個(gè)變量。 #inc

56、ludemain() int i; float f; char c; scanf(“%d,%f,%c”, &i, &f, &c ); printf(“the result is:n”); printf(“i=%d,f=%f,c=%c”,i, f, c); system(“pause”); return 0; 59#includemain() int i; float f; char c; printf(input i,fn); scanf(%d,%f, &i,&f ); printf(input cn); scanf(“%c”, &c ); (空

57、格是一個(gè)字符值?)空格是一個(gè)字符值?) printf(the result is:n); printf(i=%d,f=%f,c=%c,i,f,c); system(pause); return 0;請(qǐng)同學(xué)們觀察本程序的輸出是什么?請(qǐng)同學(xué)們觀察本程序的輸出是什么?input i,f10,3.14input cthe result is: i=10,f=3.140000,c=請(qǐng)按任意鍵繼續(xù)請(qǐng)按任意鍵繼續(xù) . . .程序并沒有給用戶輸入字程序并沒有給用戶輸入字符數(shù)據(jù)的機(jī)會(huì)。為什么?符數(shù)據(jù)的機(jī)會(huì)。為什么?【鏈接】【鏈接】 60解決方法:用解決方法:用getchar函數(shù)來讀取回車符函數(shù)來讀取回車符mai

58、n() int i; float f; char c; printf(input i,fn); scanf(%d,%f, &i,&f ); getchar(); /*將存于緩沖區(qū)的回車符讀入將存于緩沖區(qū)的回車符讀入*/ printf(input cn); scanf(%c, &c ); printf(the result is:結(jié)果是結(jié)果是n); printf(i=%d,f=%f,c=%c,i,f,c); system(pause);(為什么此程序沒有(為什么此程序沒有return 0?)input i,f10,3.14input cythe result is: i=

59、10,f=3.140000,c=y請(qǐng)按任意鍵繼續(xù)請(qǐng)按任意鍵繼續(xù) . . .結(jié)果正確!結(jié)果正確!此外,還可以用此外,還可以用fflush函數(shù)函數(shù)來清空鍵盤緩沖區(qū)。見實(shí)來清空鍵盤緩沖區(qū)。見實(shí)驗(yàn)講義附錄驗(yàn)講義附錄1的第的第16個(gè)錯(cuò)誤個(gè)錯(cuò)誤第第130頁),要求自學(xué)。頁),要求自學(xué)。 61u表達(dá)式是由運(yùn)算符、操作數(shù)和括號(hào)組成的、計(jì)算求值表達(dá)式是由運(yùn)算符、操作數(shù)和括號(hào)組成的、計(jì)算求值的基本單位。的基本單位。u操作數(shù)可以是:常量、變量、函數(shù)調(diào)用和表達(dá)式;操作數(shù)可以是:常量、變量、函數(shù)調(diào)用和表達(dá)式;u表達(dá)式舉例:表達(dá)式舉例:u2 2 表達(dá)式無運(yùn)算符,操作數(shù)為常量表達(dá)式無運(yùn)算符,操作數(shù)為常量ui i 表達(dá)式無運(yùn)

60、算符,操作數(shù)為變量表達(dá)式無運(yùn)算符,操作數(shù)為變量usizeof(int) sizeof(int) 表達(dá)式無運(yùn)算符,操作數(shù)為函數(shù)調(diào)用表達(dá)式無運(yùn)算符,操作數(shù)為函數(shù)調(diào)用u2 + i 2 + i 操作數(shù)為常量和變量操作數(shù)為常量和變量ui i * * sizeof(int) sizeof(int) 操作數(shù)為變量和函數(shù)調(diào)用操作數(shù)為變量和函數(shù)調(diào)用u2+ i 2+ i * * sizeof(int) sizeof(int) 加法運(yùn)算的第加法運(yùn)算的第2 2個(gè)操作數(shù)仍為表個(gè)操作數(shù)仍為表達(dá)式達(dá)式3.6 表達(dá)式表達(dá)式 623.6 表達(dá)式表達(dá)式u典型的幾類運(yùn)算符和表達(dá)式典型的幾類運(yùn)算符和表達(dá)式 :u算術(shù)運(yùn)算符和算術(shù)表達(dá)式;算術(shù)運(yùn)算符和算術(shù)表達(dá)式;u 關(guān)系運(yùn)算符和關(guān)系表達(dá)式;關(guān)系運(yùn)算符和關(guān)系表達(dá)式;u邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式 ;u賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式 ; 633.6 表達(dá)式表達(dá)式一、算術(shù)運(yùn)算符和算術(shù)表達(dá)式一、算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符:、算術(shù)運(yùn)算符:、/、(取余取余) 等;等;算術(shù)表達(dá)式:由算術(shù)運(yùn)算符、操作數(shù)和括號(hào)構(gòu)成的算術(shù)表達(dá)式:由

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論