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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 1第三章第三章 程序設計語言初步程序設計語言初步 2程序設計語言:用于書寫計算機程序的語言,用程序設計語言:用于書寫計算機程序的語言,用于表達和描述要加工的數(shù)據(jù)以及求解問題的步于表達和描述要加工的數(shù)據(jù)以及求解問題的步驟和過程。是根據(jù)預先定義的規(guī)則語法)、驟和過程。是根據(jù)預先定義的規(guī)則語法)、由一個有限字母表上的字符構成的字符串的總由一個有限字母表上的字符構成的字符串的總體。體。程序設計語言的基本成分:程序設計語言的基本成分: 數(shù)據(jù)成分。用以數(shù)據(jù)成分。用以描述程描述程 序中所涉及的數(shù)據(jù)。運算成分。用以序中所涉及的數(shù)據(jù)。運算成分。用以描述程序中所包含的運算??刂瞥煞帧S靡悦枋龀绦蛑兴倪\算。

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

3、于2020世紀世紀7070年代初,成熟于年代初,成熟于8080年代年代C89C89),修訂于),修訂于9090年代年代C99C99),很多重量級軟件用),很多重量級軟件用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嵌入式領域和系統(tǒng)級編程占主流,桌面應用次之嵌入式領域和系統(tǒng)級編程占主流,桌面

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

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

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

7、不能另做他用。如:C C語言規(guī)定了語言規(guī)定了3232個關鍵字。個關鍵字。3.1 標識符標識符 9C語言規(guī)定的語言規(guī)定的32個關鍵字:個關鍵字: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個整數(shù)個整數(shù)*/ result = number1 * number2; /*賦值運算賦值運算*/ printf(“the result is : %dn ”, result); /*輸出結果輸出結果*/ return 0; 用戶自定義用戶自定義標識符標識符C語言語言關鍵字關鍵字3.1 標識符標識符

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

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

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

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

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

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

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

16、 8位內存位內存1 1個字節(jié));個字節(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存儲空間存儲空間該存儲區(qū)該存儲區(qū)存放字符存放字符A思索:若從鍵盤上輸入字符存儲到內存,字符思索:若從鍵盤上輸入字符存儲到內存,字符到二進制編碼的轉換是由什么部件來實現(xiàn)的?到二進制編碼的轉換是由什么部件來實現(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ù)類型字符型關系運算按照關系運算按照ASCII大?。捍笮。海?, = =,!=例如:例如:A a 結果為真,由于結果為真,由于A的的ASCII是是65 ,a的的ASCII是是97 ,6597字符型所允許的運算包括將字符型數(shù)據(jù)當作整型數(shù)據(jù)字符型所允許的運算包括將字符型數(shù)據(jù)當作整型數(shù)據(jù)對待):對待):算術運算:算術運算: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浮點型浮點型u 浮點型是帶小數(shù)部分的數(shù)字類型浮點型是帶小數(shù)部分的數(shù)字類型 ,如,如3.143.14,1.575E51.575E5科學計數(shù)法,即科學計數(shù)法,即 1.575 1.575* * ) )。u抽象地講,浮點型數(shù)據(jù)的值域是全體實數(shù),但是由抽象地講,浮點型數(shù)據(jù)的值域是全體實數(shù),但是由于計算機表示方面的原因,計算機只能表示它的一個于計算機表示方面的原因,計算機只能表示它的一個有限子集。有限子集。u 同樣由于計算機表示方面的原因,實數(shù)在計算機同樣由于計算機表示方面的原因,實數(shù)在計算機內部的表示有時是不準確的。例如

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

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

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

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

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

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

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

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

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

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

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

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

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

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

34、說明pi是個命是個命名常量名常量; 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; /*賦值運算賦值運算*/ printf(“the area is : %fn ”, area); /*輸出結果輸出結果*/ sys

35、tem(“pause”); return 0; 40 符號常量是僅含有符號名稱的值。符號常量是僅含有符號名稱的值。C C語言符號常量定義:語言符號常量定義:#define #define 標識符標識符 替換文本替換文本 #define PI 3.14 #define PI 3.14 area = PI area = PI* * radius radius * * radius; radius; 編譯時,預處理程序能夠將所有出現(xiàn)該符號名稱編譯時,預處理程序能夠將所有出現(xiàn)該符號名稱的地方用值替換的地方用值替換: : area = 3.14 area = 3.14 * * radius radius

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

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

38、用單引號括起字符)“HelloHello” 字符串型常量用雙引號括起字符序列)字符串型常量用雙引號括起字符序列)文字常量和符號常量的值體現(xiàn)了常量的類型文字常量和符號常量的值體現(xiàn)了常量的類型3.4 常量常量 43 如果整型常量以如果整型常量以0開頭,開頭,C編譯器會認為該常量編譯器會認為該常量是八進制數(shù)。如是八進制數(shù)。如040即十進制的即十進制的32。 如果整型常量以如果整型常量以0 x開頭,開頭,C編譯器會認為該常編譯器會認為該常量是十六進制數(shù)。如量是十六進制數(shù)。如0 xFF即十進制的即十進制的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請按任意鍵繼續(xù)請按任意鍵繼續(xù) . . . 44常量小測試常量小測試 下述常量定義哪些是錯誤的?為什么?下述常量定義哪些是錯誤的?為什么? #define ratio =1/3 #define ratio 1/3; #define 1st_character $ #define if 7不能有號;否則會用不能有號;否則會用=1/3替換替換ratio不能有語句結束符;號不能有語句結束符;號標識符只能以字符或者標識符只能以字符或者下劃線開頭下劃線開頭If是是C語言

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

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

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

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

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

45、); 50用用scanfscanf語句從鍵盤同時讀入年齡和性別:語句從鍵盤同時讀入年齡和性別: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格式控制串中除了轉換說明符,還可以包含其他字符。格式控制串中除了轉換說明符,還可以包含其他字符。從鍵盤輸入的內容要和格式控制串匹配。如果在格式從鍵盤輸入的內容要和格式控制串匹配。如果在格式控

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

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

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

49、可以用可以用printf語句輸出常量、變量、表達式、函語句輸出常量、變量、表達式、函數(shù)調用的值:數(shù)調用的值: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);/輸出表達式的值(?)輸出表達式的值(?)printf(“the size of int is :%d”,sizeof(int); /輸出輸出函數(shù)返回值函數(shù)返回值 54若想同時輸出年齡和性別,則語句可寫為:若想同時輸出年齡和

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)輸入輸出后面會再詳細講解,有興趣的同學可參見輸入輸出后面會再詳細講解,有興趣的同學可參見的的9.3和和9.11。 55找出以下程序的錯誤找出以下程序的錯誤inc

51、ludemain()(未定義變量)(未定義變量)printf(“input i and jn”); scanf(“i=%d”, &i); scanf(“%d”,&j); printf(“i=%d, j=%d”,i,j);/輸出輸出2個變量的值個變量的值 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個變量的值個變量的值 system(pause); return 0;運行結果:運行結果:input i and ji=1020i=10, j=20請按任意鍵繼續(xù)請按任意鍵繼續(xù). . . 57#include main() int number1; /*存放整數(shù)存放整數(shù)1*/ int number2; /*存放整數(shù)存放整數(shù)2*/ int result; /*存放結果存放結果*/ print

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

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

55、的物理地址?編譯程序怎么處理變編譯程序怎么處理變量?操作系統(tǒng)怎么分量?操作系統(tǒng)怎么分配內存?如何得到物配內存?如何得到物理地址?深入學習:理地址?深入學習:編譯原理操編譯原理操作系統(tǒng)計算機作系統(tǒng)計算機組成原理組成原理假設操作系統(tǒng)已經(jīng)分配如下內假設操作系統(tǒng)已經(jīng)分配如下內存空間用于存放操作數(shù)和結果存空間用于存放操作數(shù)和結果程序運行過程演示程序運行過程演示 58輸入輸出練習:定義三個變量,分別是整型、輸入輸出練習:定義三個變量,分別是整型、浮點型、字符型。要求從鍵盤輸入三個值存放浮點型、字符型。要求從鍵盤輸入三個值存放到這三個變量里,并且輸出這三個變量。到這三個變量里,并且輸出這三個變量。 #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、格是一個字符值?)空格是一個字符值?) printf(the result is:n); printf(i=%d,f=%f,c=%c,i,f,c); system(pause); return 0;請同學們觀察本程序的輸出是什么?請同學們觀察本程序的輸出是什么?input i,f10,3.14input cthe result is: i=10,f=3.140000,c=請按任意鍵繼續(xù)請按任意鍵繼續(xù) . . .程序并沒有給用戶輸入字程序并沒有給用戶輸入字符數(shù)據(jù)的機會。為什么?符數(shù)據(jù)的機會。為什么?【鏈接】【鏈接】 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:結果是結果是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請按任意鍵繼續(xù)請按任意鍵繼續(xù) . . .結果正確!結果正確!此外,還可以用此外,還可以用fflush函數(shù)函數(shù)來清空鍵盤緩沖區(qū)。見實來清空鍵盤緩沖區(qū)。見實驗講義附錄驗講義附錄1的第的第16個錯誤個錯誤第第130頁),要求自學。頁),要求自學。 61u表達式是由運算符、操作數(shù)和括號組成的、計算求值表達式是由運算符、操作數(shù)和括號組成的、計算求值的基本單位。的基本單位。u操作數(shù)可以是:常量、變量、函數(shù)調用和表達式;操作數(shù)可以是:常量、變量、函數(shù)調用和表達式;u表達式舉例:表達式舉例:u2 2 表達式無運算符,操作數(shù)為常量表達式無運算符,操作數(shù)為常量ui i 表達式無運

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論