jidaocap3 程序設(shè)計(jì)語言初步_第1頁
jidaocap3 程序設(shè)計(jì)語言初步_第2頁
jidaocap3 程序設(shè)計(jì)語言初步_第3頁
jidaocap3 程序設(shè)計(jì)語言初步_第4頁
jidaocap3 程序設(shè)計(jì)語言初步_第5頁
已閱讀5頁,還剩113頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 1第三章第三章 程序設(shè)計(jì)語言初步程序設(shè)計(jì)語言初步 2程序設(shè)計(jì)語言程序設(shè)計(jì)語言:用于書寫計(jì)算機(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)算成分控制成分控制成分運(yùn)算成分運(yùn)算成分 4先聊點(diǎn)先聊點(diǎn)c語言語言 5 6數(shù)據(jù)總線 控制路線 輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備存儲(chǔ)器存儲(chǔ)器中央處理器(中央處理器(cpu)運(yùn)算部件運(yùn)算部件控制部件控制部件地址總線 實(shí)例:

3、編一個(gè)程序,從鍵盤讀入兩個(gè)整數(shù),實(shí)例:編一個(gè)程序,從鍵盤讀入兩個(gè)整數(shù),要求在屏幕上輸出相乘運(yùn)算結(jié)果。要求在屏幕上輸出相乘運(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ā)命令將存儲(chǔ)在控制部件發(fā)命令將存儲(chǔ)在內(nèi)存儲(chǔ)器中的結(jié)果輸出到顯內(nèi)存儲(chǔ)器中的結(jié)果輸出到顯示器

4、上(示器上(輸出輸出)。)。需要考慮的問題:需要考慮的問題: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ǔ)器中央處理器(中央處理器(cpu)運(yùn)算部件運(yùn)算部件控制部件控制部件內(nèi)存中數(shù)

5、據(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ù)和其他用戶自定義對象命名中的數(shù)據(jù)、函數(shù)和其他用戶自定義對象命名。程序設(shè)計(jì)語言本身會(huì)定義一些專用名稱,稱程序設(shè)計(jì)語言本身會(huì)定義一些專用名稱,稱之為之為保留字保留字或或關(guān)鍵字關(guān)鍵字,它們,它們具有特定含義,具有特定含義,程序員不能另做他用。如:程序員不能另做他用。如:c c語言規(guī)定了語言規(guī)定了3232個(gè)關(guān)鍵字。個(gè)關(guān)鍵字

6、。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; /*變量聲明變量聲明*/ int number2; int result;

7、 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í)符 11u 不同的程序設(shè)計(jì)語言標(biāo)識(shí)符格式可能不同。不同的程序設(shè)計(jì)語言標(biāo)識(shí)符

8、格式可能不同。u c c語言規(guī)定:語言規(guī)定:標(biāo)識(shí)符由大寫字母標(biāo)識(shí)符由大寫字母a a到到z z、小寫字母小寫字母a a到到z z、數(shù)字?jǐn)?shù)字0 0到到9 9和下劃線組成,且第一個(gè)字符必和下劃線組成,且第一個(gè)字符必須是字母或下劃線,隨后的字符必須是字母、數(shù)須是字母或下劃線,隨后的字符必須是字母、數(shù)字或下劃線。且大小寫敏感字或下劃線。且大小寫敏感,如,如ageage和和ageage是兩個(gè)是兩個(gè)不同的標(biāo)識(shí)符。不同的標(biāo)識(shí)符。u pascal語言規(guī)定:和語言規(guī)定:和c語言類似,只是要求第語言類似,只是要求第一個(gè)字符只能是字母(比一個(gè)字符只能是字母(比c語言約束更強(qiáng))。語言約束更強(qiáng))。3.1 標(biāo)識(shí)符標(biāo)識(shí)符思考

9、:以下哪些是合法的思考:以下哪些是合法的c語言標(biāo)識(shí)符語言標(biāo)識(shí)符age,_class_no , name1, name1,2name,#age 12數(shù)據(jù)數(shù)據(jù)是計(jì)算機(jī)處理的對象。是計(jì)算機(jī)處理的對象。數(shù)據(jù)依據(jù)其本身的特點(diǎn)可以歸為不同的類:數(shù)據(jù)依據(jù)其本身的特點(diǎn)可以歸為不同的類:整數(shù)整數(shù)、小數(shù)、字符、字符串、小數(shù)、字符、字符串等。等。(高級程序語言特點(diǎn):按照人對于數(shù)據(jù)的表達(dá)方式)(高級程序語言特點(diǎn):按照人對于數(shù)據(jù)的表達(dá)方式) 程序設(shè)計(jì)語言應(yīng)該具備區(qū)分各種類型數(shù)據(jù)的能力程序設(shè)計(jì)語言應(yīng)該具備區(qū)分各種類型數(shù)據(jù)的能力,于是引入了數(shù)據(jù)類型的概念。,于是引入了數(shù)據(jù)類型的概念。數(shù)據(jù)類型包括兩層含義:定義了一系列的值數(shù)

10、據(jù)類型包括兩層含義:定義了一系列的值( (屬于屬于該類型的數(shù)據(jù)能夠取值的范圍該類型的數(shù)據(jù)能夠取值的范圍)以及能應(yīng)用于這)以及能應(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,-38+12,-38。u注意:在數(shù)學(xué)中,整數(shù)是一個(gè)無限集合,但對注意:在數(shù)學(xué)中,整數(shù)是一個(gè)無限集合,但對于計(jì)算機(jī)來說,只能表示它的一個(gè)有限子集于計(jì)算機(jī)來說,只能表示它的一個(gè)有限子集(取決于存儲(chǔ)空間的大?。ㄈ?/p>

11、決于存儲(chǔ)空間的大?。?。整型整型3.2 數(shù)據(jù)類型數(shù)據(jù)類型程序設(shè)計(jì)語言一般包含四種程序設(shè)計(jì)語言一般包含四種標(biāo)準(zhǔn)數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型:整型、字符型、浮點(diǎn)型和布爾型整型、字符型、浮點(diǎn)型和布爾型(補(bǔ)充)(補(bǔ)充)。 143.2 數(shù)據(jù)類型整型數(shù)據(jù)類型整型整型數(shù)據(jù)占用的內(nèi)存單元數(shù):整型數(shù)據(jù)占用的內(nèi)存單元數(shù):uc語言中整型數(shù)據(jù)細(xì)分為四類:語言中整型數(shù)據(jù)細(xì)分為四類:short int、int、long int和和long long int。(和教材不同)(和教材不同)uc語言標(biāo)準(zhǔn)沒有規(guī)定每一種整數(shù)類型占用的內(nèi)語言標(biāo)準(zhǔn)沒有規(guī)定每一種整數(shù)類型占用的內(nèi)存空間大小(存空間大?。磾?shù)的范圍即數(shù)的范圍),只是約束到:),只

12、是約束到:short int和和int至少要占據(jù)至少要占據(jù)16位(位(2字節(jié)),而字節(jié)),而long數(shù)據(jù)至少要有數(shù)據(jù)至少要有32位(位(4字節(jié));且數(shù)據(jù)長字節(jié));且數(shù)據(jù)長度上,度上,short int=int=long int = long long int 。 u每一種整數(shù)類型占用的內(nèi)存字節(jié)數(shù)由編譯器根每一種整數(shù)類型占用的內(nèi)存字節(jié)數(shù)由編譯器根據(jù)所用機(jī)器的硬件情況來決定。據(jù)所用機(jī)器的硬件情況來決定。 15整型數(shù)據(jù)所允許的運(yùn)算包括:整型數(shù)據(jù)所允許的運(yùn)算包括: 二目算術(shù)運(yùn)算二目算術(shù)運(yùn)算 :+ +、- -、* *、/ /、(、(取余取余) ) ; 注意:兩個(gè)整數(shù)進(jìn)行二目運(yùn)算后結(jié)果還是整數(shù)注意:兩個(gè)整

13、數(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ù)包括26*2個(gè)字母(大小寫)個(gè)字母(大小寫)+10個(gè)數(shù)個(gè)數(shù)字字+其它顯示符號(hào),總共其它顯示符號(hào),總共95種;還有

14、種;還有33種控制種控制符號(hào),總共符號(hào),總共128種符號(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)采用ascii(american standard code for information interchange)標(biāo)準(zhǔn)編碼模式來對字符進(jìn)行編碼)標(biāo)準(zhǔn)編碼模式來對字符進(jìn)行編碼 。每個(gè)字符占用每個(gè)字符占用8位內(nèi)存(位內(nèi)存(1個(gè)字節(jié));個(gè)字節(jié));3.2 數(shù)據(jù)類型數(shù)據(jù)類型 17ascii表表l h 000000010010001101000101011001110000nuldle sp0pp 00

15、01sohdc1!1aqaq 0010stxdc2“2brbr 0011etxdc3#3cscs 0100eotdc4$4dtdt 0101enqnak%5eueu 0110acksyn&6fvfv 0111beletb,7gwgw 1000bscan)8hxhx 1001htem(9iyiy 1010lfsub*:jzjz 1011vtesc+;kk 1100fffsnn 1111sius/?o_odel2000h2002h2004h2003h2001h01000001存儲(chǔ)空間存儲(chǔ)空間該存儲(chǔ)區(qū)該存儲(chǔ)區(qū)存放字符存放字符a思考:若從鍵盤上輸入字符存儲(chǔ)到內(nèi)存,字符思考:若從鍵盤上輸入字符存

16、儲(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ù)類型字符型數(shù)據(jù)類型字符型關(guān)系運(yùn)算關(guān)系運(yùn)算(按照(按照ascii大小):大?。?,=, = =,!=例如:例如:a a 結(jié)果為真,因?yàn)榻Y(jié)果為真,因?yàn)閍的的ascii是是65 ,a的的ascii是是9

17、7 ,6597字符型所允許的運(yùn)算包括(字符型所允許的運(yùn)算包括(將字符型數(shù)據(jù)當(dāng)作整型將字符型數(shù)據(jù)當(dāng)作整型數(shù)據(jù)對待數(shù)據(jù)對待):): 算術(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=ch1ch2=ch11 (1 (若若ch1ch1值為值為b,b,則則ch2ch2為為c)c) 20浮點(diǎn)型浮點(diǎn)型u 浮點(diǎn)型是帶小數(shù)部分的數(shù)字類型浮點(diǎn)型是帶小數(shù)部分的數(shù)字類型 ,如,如3.14,1.575e5(科學(xué)計(jì)數(shù)法,即(科學(xué)計(jì)數(shù)

18、法,即 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)確的。例如,存儲(chǔ)圓周率時(shí),內(nèi)部的表示有時(shí)是不準(zhǔn)確的。例如,存儲(chǔ)圓周率時(shí),只能表示成近似的值。只能表示成近似的值。3.2 數(shù)據(jù)類型數(shù)據(jù)類型510 213.2 數(shù)據(jù)類型數(shù)據(jù)類型uc語言支持三種不同長度的浮點(diǎn)數(shù)據(jù)類型:語言支持三種不同長度的浮點(diǎn)數(shù)據(jù)類型:float、do

19、uble和和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)存單元越多。 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

20、 單目算術(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ù)不等。建議在比較兩個(gè)浮點(diǎn)數(shù)建議在比較兩個(gè)浮點(diǎn)數(shù)x和和y是否相等時(shí)使用是否相等時(shí)使用|x-y|,其中其中是一個(gè)絕對值較小的正浮點(diǎn)數(shù)。是一個(gè)絕對值較小的正浮點(diǎn)數(shù)。 233.2 數(shù)據(jù)類型布爾型(補(bǔ)充)數(shù)據(jù)類型布爾型(補(bǔ)充) 布爾類型數(shù)據(jù)布爾類型數(shù)據(jù):取值只有兩種,真(取值

21、只有兩種,真(true)或)或者假(者假(false)。允許的運(yùn)算包括:與、或、非。)。允許的運(yùn)算包括:與、或、非。 絕大多數(shù)程序設(shè)計(jì)語言中有絕大多數(shù)程序設(shè)計(jì)語言中有布爾類型布爾類型這種數(shù)據(jù)這種數(shù)據(jù)類型,如類型,如pascal語言。但是語言。但是c語言沒有定義這語言沒有定義這種數(shù)據(jù)類型。種數(shù)據(jù)類型。布爾型布爾型 24標(biāo)準(zhǔn)類型是原子的、不可再分的。程序員標(biāo)準(zhǔn)類型是原子的、不可再分的。程序員可以以標(biāo)準(zhǔn)類型為基本構(gòu)件,構(gòu)造出可以以標(biāo)準(zhǔn)類型為基本構(gòu)件,構(gòu)造出復(fù)雜復(fù)雜的數(shù)據(jù)類型。如的數(shù)據(jù)類型。如c c語言有:結(jié)構(gòu)、數(shù)組、聯(lián)語言有:結(jié)構(gòu)、數(shù)組、聯(lián)合、文件等復(fù)雜數(shù)據(jù)類型;合、文件等復(fù)雜數(shù)據(jù)類型;pascal

22、pascal語言有語言有:結(jié)構(gòu)、數(shù)組、集合、文件等復(fù)雜數(shù)據(jù)類:結(jié)構(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é)果程序需要將輸入程序需要將輸入數(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 變量變量 程

23、序運(yùn)行時(shí),通過內(nèi)存地址對內(nèi)存數(shù)據(jù)進(jìn)行讀程序運(yùn)行時(shí),通過內(nèi)存地址對內(nèi)存數(shù)據(jù)進(jìn)行讀寫;寫; 程序員寫源程序時(shí),如果也是直接使用內(nèi)存地程序員寫源程序時(shí),如果也是直接使用內(nèi)存地址來讀寫內(nèi)存數(shù)據(jù),會(huì)很麻煩!址來讀寫內(nèi)存數(shù)據(jù),會(huì)很麻煩! 如果用名字來代替地址,在程序中出現(xiàn)的是代如果用名字來代替地址,在程序中出現(xiàn)的是代表內(nèi)存空間的名字,讓編譯器來跟蹤數(shù)據(jù)實(shí)際表內(nèi)存空間的名字,讓編譯器來跟蹤數(shù)據(jù)實(shí)際存放的物理內(nèi)存地址,就可以簡化編程存放的物理內(nèi)存地址,就可以簡化編程變變量;量; 27變量用來代表內(nèi)存存儲(chǔ)空間,該存儲(chǔ)空間用來存變量用來代表內(nèi)存存儲(chǔ)空間,該存儲(chǔ)空間用來存放被加工的數(shù)據(jù)或處理的結(jié)果。源程序中對變量放

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

25、u 使用變量來對內(nèi)存數(shù)據(jù)進(jìn)行存取前,必須使用變量來對內(nèi)存數(shù)據(jù)進(jìn)行存取前,必須先定義先定義變量,變量,目的是目的是建立變量和存儲(chǔ)空間的對應(yīng)關(guān)系建立變量和存儲(chǔ)空間的對應(yīng)關(guān)系。u 變量定義指明變量定義指明變量的名稱變量的名稱和和數(shù)據(jù)類型(數(shù)據(jù)類型(變量代表變量代表的存儲(chǔ)空間存放的數(shù)據(jù)的類型的存儲(chǔ)空間存放的數(shù)據(jù)的類型)。變量的名稱要有變量的名稱要有意義,意義,要要遵循標(biāo)識(shí)符命名原則,雖然可以為任意長遵循標(biāo)識(shí)符命名原則,雖然可以為任意長度,但度,但c編譯器只認(rèn)為前編譯器只認(rèn)為前31個(gè)字符有效。變量類型個(gè)字符有效。變量類型可以告訴編譯器應(yīng)該留出幾個(gè)字節(jié)用于保存數(shù)據(jù)??梢愿嬖V編譯器應(yīng)該留出幾個(gè)字節(jié)用于保存數(shù)

26、據(jù)。u 不同語言中變量定義的寫法不一樣,不同語言中變量定義的寫法不一樣,c語言格式:語言格式:數(shù)據(jù)類型數(shù)據(jù)類型 變量名變量名1,變量名變量名2,;3.3 變量變量思考:變量定義時(shí)要指明哪些內(nèi)容?思考:變量定義時(shí)要指明哪些內(nèi)容?char sex;int age1,age2;int height;float score;數(shù)據(jù)類型數(shù)據(jù)類型變量名變量名分號(hào)必須分號(hào)必須多個(gè)同類型變多個(gè)同類型變量用逗號(hào)分割量用逗號(hào)分割 29注意,變量定義僅引起內(nèi)存存儲(chǔ)注意,變量定義僅引起內(nèi)存存儲(chǔ)空間分配,但此時(shí)變量中存儲(chǔ)的空間分配,但此時(shí)變量中存儲(chǔ)的值一般是無意義的(特殊情況除值一般是無意義的(特殊情況除外)!外)!變量

27、定義將引起內(nèi)存空間的分配。定義后,變量就變量定義將引起內(nèi)存空間的分配。定義后,變量就用來代表內(nèi)存中的一片存儲(chǔ)單元(存儲(chǔ)單元個(gè)數(shù)取用來代表內(nèi)存中的一片存儲(chǔ)單元(存儲(chǔ)單元個(gè)數(shù)取決于變量類型)。決于變量類型)。3.3 變量變量2000h2002h2004h2005h2007h2006h2003h2001hsexagescore存儲(chǔ)空間存儲(chǔ)空間char sex;int age;float score; 30二、變量賦值二、變量賦值c語言示例:語言示例: char sex; int age; float score;變量賦值:把一個(gè)值寫入變量代表的存儲(chǔ)空間。變量賦值:把一個(gè)值寫入變量代表的存儲(chǔ)空間。c語

28、言變量賦值格式:語言變量賦值格式:變量名變量名=表達(dá)式表達(dá)式sex=f;age = 18; score= 89.5;2000h2002h2004h2005h2007h2006h2003h2001hsexagescore存儲(chǔ)空間存儲(chǔ)空間ascii(f)=77)771889.5變量的值變量的值表達(dá)式是由表達(dá)式是由運(yùn)算符、操作數(shù)和括號(hào)運(yùn)算符、操作數(shù)和括號(hào)組成的、組成的、計(jì)算求值計(jì)算求值的基本單位。如:的基本單位。如:age*(i+10)3.3 變量變量 313.3 變量變量 變量使用特點(diǎn)變量使用特點(diǎn) 對變量的操作:定義變量、讀變量、寫變量對變量的操作:定義變量、讀變量、寫變量 先定義,后使用。先定義

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

30、語句用來給變量賦初始值。例如:char sex;int age = 16;/變量初始化變量初始化float score; 3.3 變量變量2000h2002h2004h2005h2007h2006h2003h2001h16存儲(chǔ)空間存儲(chǔ)空間sexagescore 333.3 變量變量試解釋下列操作的含義試解釋下列操作的含義 讀取變量的值讀取變量的值 寫入變量寫入變量 給變量賦值給變量賦值 修改變量的值修改變量的值 34#include main() int number1; /*變量定義變量定義*/ int number2; int result; printf(“please input th

31、e 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; 3.3 變量變量 /*/:注釋注釋 main()函數(shù)()函數(shù) 變量定義部分變量定義部分 操作部分操作部分 353.3 變量變量u找出下述變量定義有無錯(cuò)誤:找出下述變量定義有無錯(cuò)誤: float

32、f; char a, b; 36char sex;int age;float score;變量類型變量類型變量名變量名總結(jié):總結(jié):變量三要素:變量名(變量三要素:變量名(存儲(chǔ)空間存儲(chǔ)空間)、數(shù)據(jù)類型()、數(shù)據(jù)類型(存儲(chǔ)存儲(chǔ)空間存放的數(shù)據(jù)的類型空間存放的數(shù)據(jù)的類型)、變量值()、變量值(存儲(chǔ)內(nèi)容存儲(chǔ)內(nèi)容)3.3 變量變量2000h2002h2004h2005h2007h2006h2003h2001h701889.5存儲(chǔ)空間存儲(chǔ)空間變量的值變量的值sexagescore 37一、一、文字常量文字常量 文字常量是指在程序中未被命名的值。文字常量是指在程序中未被命名的值。例:例:circumferen

33、ce = 2 * (length + width); 其中其中2 2就是一個(gè)文字常量,就是一個(gè)文字常量,lengthlength和和widthwidth是變量是變量三類常量:三類常量:文字常量文字常量、命名常量命名常量、符號(hào)常量符號(hào)常量3.4 常量常量 38二、二、命名常量命名常量和變量類似,命名常量也是和變量類似,命名常量也是內(nèi)存存儲(chǔ)空間的名內(nèi)存存儲(chǔ)空間的名字字,代表一片內(nèi)存存儲(chǔ)空間,但一旦賦值便,代表一片內(nèi)存存儲(chǔ)空間,但一旦賦值便不不允許程序去改變該存儲(chǔ)空間中的數(shù)據(jù)允許程序去改變該存儲(chǔ)空間中的數(shù)據(jù)。 c c語言中定義一個(gè)命名常量:語言中定義一個(gè)命名常量: mainmain()() cons

34、t const float float pi = 3.14;pi = 3.14; 3.4 常量常量2000h2002h2004h2005h2007h2006h2003h2001h3.14存儲(chǔ)空間存儲(chǔ)空間pi說明說明pi是個(gè)命是個(gè)命名常量名常量; 39#include main() const float pi=3.14;/*常量定義常量定義*/ float radius , area; /*變量定義變量定義*/ printf(“please input the radius:n”); /*顯示提示信息顯示提示信息*/ scanf(“%f”,&radius); /*從鍵盤讀取半徑從鍵盤讀

35、取半徑*/ area = pi * radius * radius; /*賦值運(yùn)算賦值運(yùn)算*/ printf(“the area is : %fn ”, area); /*輸出結(jié)果輸出結(jié)果*/ system(“pause”); return 0; 40 符號(hào)常量是僅含有符號(hào)名稱的值。符號(hào)常量是僅含有符號(hào)名稱的值。c c語言符號(hào)常量定義:語言符號(hào)常量定義:#define 標(biāo)識(shí)符標(biāo)識(shí)符 替換文本替換文本 #define pi 3.14 area = pi* radius * radius; 編譯時(shí),預(yù)處理程序能夠?qū)⑺谐霈F(xiàn)該符號(hào)名稱編譯時(shí),預(yù)處理程序能夠?qū)⑺谐霈F(xiàn)該符號(hào)名稱的地方用的地方用值值替換

36、替換: : area = 3.14 * radius * radius ; 使用符號(hào)常量的好處:使程序易讀性好、容易維使用符號(hào)常量的好處:使程序易讀性好、容易維護(hù)。護(hù)。 三、三、符號(hào)常量符號(hào)常量3.4 常量常量 413.4 常量常量#include #define pi 3.14 /常量定義,注意結(jié)束處無分號(hào)常量定義,注意結(jié)束處無分號(hào)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; 423.4 常量常量 思考:命名常量和符號(hào)常量的區(qū)別思考:命名常量和符號(hào)常量的區(qū)別 內(nèi)存分配上(命名常量會(huì)在內(nèi)存的程序運(yùn)行數(shù)內(nèi)存分配上(命名常量會(huì)在內(nèi)存的程序運(yùn)行數(shù)據(jù)區(qū)分配到內(nèi)存,而符號(hào)常量不會(huì))據(jù)區(qū)分配到內(nèi)存,而符號(hào)常量不會(huì)) 類型檢查上(編譯器對命名常量會(huì)進(jìn)行類型檢類型檢查上(編譯器對命名常量會(huì)進(jìn)行類型檢查,排除程序的不安全性;對符號(hào)常

38、量只是簡查,排除程序的不安全性;對符號(hào)常量只是簡單的替換,不進(jìn)行類型檢查)單的替換,不進(jìn)行類型檢查) 43四、常量的類型四、常量的類型和變量一樣,常量也有類型。大多數(shù)程序設(shè)計(jì)語言使用整和變量一樣,常量也有類型。大多數(shù)程序設(shè)計(jì)語言使用整型、浮點(diǎn)型、字符型和字符串型常量。型、浮點(diǎn)型、字符型和字符串型常量。c c語言中四種常量:語言中四種常量:1515整型常量整型常量15.415.4浮點(diǎn)型常量浮點(diǎn)型常量aa字符型常量字符型常量 (用單引號(hào)括起字符)(用單引號(hào)括起字符)“hello” hello” 字符串型常量(用雙引號(hào)括起字符序列)字符串型常量(用雙引號(hào)括起字符序列)文字常量和符號(hào)常量的值體現(xiàn)了常量

39、的類型文字常量和符號(hào)常量的值體現(xiàn)了常量的類型3.4 常量常量 44 如果整型常量以如果整型常量以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 0xffmain() printf(“x=%d,y=%d”, x,y); system(pause); return 0; 3.4 常量常量x=32,y=255請按任意鍵繼

40、續(xù)請按任意鍵繼續(xù) . . . 45常量小測試常量小測試 下述常量定義哪些是錯(cuò)誤的?為什么?下述常量定義哪些是錯(cuò)誤的?為什么?#define ratio =1/3 #define ratio 1/3;#define 1st_character $#define if 71. 不能有號(hào);否則會(huì)用不能有號(hào);否則會(huì)用=1/3替換替換ratio2. 不能有語句結(jié)束符;號(hào)不能有語句結(jié)束符;號(hào)3. 標(biāo)識(shí)符只能以字符或者標(biāo)識(shí)符只能以字符或者下劃線開頭下劃線開頭4. if是是c語言規(guī)定的關(guān)鍵語言規(guī)定的關(guān)鍵字,有特定含義,用戶字,有特定含義,用戶不能隨便使用不能隨便使用5. 習(xí)慣上,常量名一般采習(xí)慣上,常量名一般

41、采用大寫字母。用大寫字母。 46數(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è)既無輸入又。一個(gè)既無輸入又無輸出的程序是沒有無輸出的程序是沒有用的。用的。 47輸入和輸出語句最基本的功能在于從外界環(huán)境將輸

42、入和輸出語句最基本的功能在于從外界環(huán)境將值讀入一個(gè)變量,或者將一個(gè)值寫出到外界環(huán)值讀入一個(gè)變量,或者將一個(gè)值寫出到外界環(huán)境中。境中。 3.5 輸入和輸出(輸入和輸出(i/o) 48一、輸入一、輸入 通過輸入語句或者預(yù)先定義的函數(shù)可以從外界接收值。通過輸入語句或者預(yù)先定義的函數(shù)可以從外界接收值。c c語言輸入函數(shù)舉例:語言輸入函數(shù)舉例: scanf(格式控制串,輸入項(xiàng)地址表格式控制串,輸入項(xiàng)地址表);格式控制串格式控制串:含有各種以百分號(hào)開頭的格式控制符。:含有各種以百分號(hào)開頭的格式控制符。輸入項(xiàng)地址表輸入項(xiàng)地址表:有逗號(hào)分隔開的若干輸入表項(xiàng)組成,每一個(gè):有逗號(hào)分隔開的若干輸入表項(xiàng)組成,每一個(gè)表

43、項(xiàng)是一個(gè)變量的地址。表項(xiàng)是一個(gè)變量的地址。scanf函數(shù)的作用函數(shù)的作用:從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上讀取一系列數(shù):從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)上讀取一系列數(shù)據(jù),按格式控制串的要求進(jìn)行轉(zhuǎn)換并送到輸入項(xiàng)地址表所列據(jù),按格式控制串的要求進(jìn)行轉(zhuǎn)換并送到輸入項(xiàng)地址表所列的逐變量中。的逐變量中。 3.5 輸入和輸出(輸入和輸出(i/o) 49 scanf(“%d”,&number1);u當(dāng)程序執(zhí)行該語句時(shí),等待用戶從鍵盤輸入數(shù)據(jù)并當(dāng)程序執(zhí)行該語句時(shí),等待用戶從鍵盤輸入數(shù)據(jù)并轉(zhuǎn)換成一個(gè)整數(shù),存儲(chǔ)到變量轉(zhuǎn)換成一個(gè)整數(shù),存儲(chǔ)到變量number1中。中。ud:轉(zhuǎn)換說明符(轉(zhuǎn)換說明符(conversion spec

44、ifier),用于),用于告告訴程序鍵入的數(shù)據(jù)要轉(zhuǎn)換成一個(gè)整數(shù);訴程序鍵入的數(shù)據(jù)要轉(zhuǎn)換成一個(gè)整數(shù);u&:取變量地址的運(yùn)算符,取變量地址的運(yùn)算符, & &number1表示變量表示變量number1的的首首地址地址。注意:書寫程序時(shí)不要遺漏注意:書寫程序時(shí)不要遺漏&.&.3.5 輸入和輸出(輸入和輸出(i/o)格式控制串格式控制串輸入項(xiàng)地址表輸入項(xiàng)地址表 503.5 輸入和輸出(輸入和輸出(i/o)設(shè)設(shè)age為為int型變量,型變量,sex、ch為為char型變量,型變量,height為為float型變量。型變量。輸入數(shù)據(jù)為:輸入數(shù)據(jù)為:20m1.65若希

45、望若希望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); 51用用scanfscanf語句從鍵盤同時(shí)讀入年齡和性別:語句從鍵盤同時(shí)讀入年齡和性別

46、:scanf(“%dscanf(“%d % %c c”,&age”,&age,&sex,&sex););scanf(“%d,scanf(“%d,%c%c”,&age”,&age,&se,&sex x););3.5 輸入和輸出(輸入和輸出(i/o)10 s10,s格式控制串中除了轉(zhuǎn)換說明符,還可以包含其他字符。格式控制串中除了轉(zhuǎn)換說明符,還可以包含其他字符。從鍵盤輸入的內(nèi)容要和格式控制串匹配。如果在格式從鍵盤輸入的內(nèi)容要和格式控制串匹配。如果在格式控制串中除了轉(zhuǎn)換說明符以外還有其它字符,則在輸控制串中除了轉(zhuǎn)換說明符以外還有其它字符,

47、則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。如:入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。如:空格空格scanf(“agescanf(“age=%d, sex=%d, sex=% %c c”,&age”,&age,&sex,&sex););age=10,sex=s 52二、輸出二、輸出 通過語句或者預(yù)先定義的函數(shù)可以將值輸出到外界。通過語句或者預(yù)先定義的函數(shù)可以將值輸出到外界。c c輸出函數(shù)舉例:輸出函數(shù)舉例:功能:功能:將字符串顯示在標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示將字符串顯示在標(biāo)準(zhǔn)輸出設(shè)備(一般為顯示器)上。程序員可以將常量、變量、表達(dá)式、函數(shù)器)上。程序員可以將常量、變量

48、、表達(dá)式、函數(shù)調(diào)用作為待輸出字符串的一部分。調(diào)用作為待輸出字符串的一部分。格式控制串:格式控制串:包含了某些要直接顯示的字符,也包包含了某些要直接顯示的字符,也包含一些轉(zhuǎn)換說明符。含一些轉(zhuǎn)換說明符。輸出項(xiàng)表:輸出項(xiàng)表:可以是常量、變量、表達(dá)式、函數(shù)調(diào)用??梢允浅A俊⒆兞?、表達(dá)式、函數(shù)調(diào)用。3.5 輸入和輸出(輸入和輸出(i/o) 53如:如: printfprintf(”your”your age is : %d”,age age is : %d”,age); ;注意,在輸出時(shí)轉(zhuǎn)換說明符注意,在輸出時(shí)轉(zhuǎn)換說明符% %d d不輸出,而是被變量不輸出,而是被變量ageage的值代替。假設(shè)變量的值代

49、替。假設(shè)變量ageage的值是的值是1818,則顯示器上,則顯示器上將輸出字符串將輸出字符串“your age is : 18your age is : 18” ” 注意:此處變量注意:此處變量ageage前面沒有前面沒有&!&!3.5 輸入和輸出(輸入和輸出(i/o)上機(jī)練習(xí):如果上述語句改寫成上機(jī)練習(xí):如果上述語句改寫成printf(”your age is :”, age);輸出將是怎樣?輸出將是怎樣? 543.5 輸入和輸出(輸入和輸出(i/o)可以用可以用printf語句輸出常量、變量、表達(dá)式、函語句輸出常量、變量、表達(dá)式、函數(shù)調(diào)用的值:數(shù)調(diào)用的值:printf(“t

50、he 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ù)返回值值 55若想同時(shí)輸出年齡和性別,則語句可寫為:若想同時(shí)輸出年齡和性別,則語句可寫為:printfprintf( “ your age is : %d your age is : %d,your sex

51、is your sex is : %c: %c”,age,sex”,age,sex); ;顯示器上將輸出字符串顯示器上將輸出字符串“your age is : 18, your age is : 18, your sex is : f” your sex is : f” 3.5 輸入和輸出(輸入和輸出(i/o)輸入輸出后面會(huì)再詳細(xì)講解,有興趣的同學(xué)可參見輸入輸出后面會(huì)再詳細(xì)講解,有興趣的同學(xué)可參見c程程序設(shè)計(jì)教程序設(shè)計(jì)教程的的9.3和和9.11。 56#include main() int number1; /*存放整數(shù)存放整數(shù)1*/ int number2; /*存放整數(shù)存放整數(shù)2*/ in

52、t result; /*存放結(jié)果存放結(jié)果*/ printf(“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; 2000h2004hresult2002h2005h2007h2006h2003h2001h存儲(chǔ)空間存儲(chǔ)空間numbe

53、r1number210 2010 20please input the two numbers:please input the two numbers:the result is : 200the result is : 2001020200 任務(wù)描述:輸入兩個(gè)整數(shù),任務(wù)描述:輸入兩個(gè)整數(shù),求兩數(shù)之積并輸出。求兩數(shù)之積并輸出。編譯后,源程序中出編譯后,源程序中出現(xiàn)現(xiàn)number1、number2和和result的地方將會(huì)用的地方將會(huì)用內(nèi)存相對地址(非真內(nèi)存相對地址(非真正物理地址)替換。正物理地址)替換。思考:何時(shí)、在哪里思考:何時(shí)、在哪里得到真正的物理地址?得到真正的物理地址?編譯程序怎么

54、處理變編譯程序怎么處理變量?操作系統(tǒng)怎么分量?操作系統(tǒng)怎么分配內(nèi)存?如何得到物配內(nèi)存?如何得到物理地址?深入學(xué)習(xí):理地址?深入學(xué)習(xí):編譯原理編譯原理操操作系統(tǒng)作系統(tǒng)計(jì)算機(jī)計(jì)算機(jī)組成原理組成原理假設(shè)操作系統(tǒng)已經(jīng)分配如下內(nèi)假設(shè)操作系統(tǒng)已經(jīng)分配如下內(nèi)存空間用于存放操作數(shù)和結(jié)果存空間用于存放操作數(shù)和結(jié)果程序運(yùn)行過程演示程序運(yùn)行過程演示 57找出以下程序的錯(cuò)誤找出以下程序的錯(cuò)誤1. include2. main()3. 4.printf(“input age and heightn”);5. scanf(“age =%d”, age );6. scanf(“%f”, height);7. printf(

55、“age =%d, height=%f”,age);/輸出輸出8. return 0;9. 1. 變量變量age和和height未定義就使用;未定義就使用;2. scanf(“age =%d”,& age) scanf(“%f”,&height);3. printf(“age=%d, height=%f”,age , height); 58修正后的程序includemain() int age float height;/變量定義變量定義 printf(“input age and heightn”); /輸入提示輸入提示 scanf(“age =%d”, &age);

56、 /鍵盤輸入變量鍵盤輸入變量age的值的值 scanf(%f,&height); printf(“age=%d, height=%f”,age, height);/輸出輸出 system(pause); return 0;運(yùn)行結(jié)果:運(yùn)行結(jié)果:input age and heightage=101.65age=10, height=1.65請按任意鍵繼續(xù)請按任意鍵繼續(xù). . . 59輸入輸出練習(xí):定義三個(gè)變量,分別是整型、輸入輸出練習(xí):定義三個(gè)變量,分別是整型、浮點(diǎn)型、字符型。要求從鍵盤輸入三個(gè)值存放浮點(diǎn)型、字符型。要求從鍵盤輸入三個(gè)值存放到這三個(gè)變量里,并且輸出這三個(gè)變量。到這三個(gè)變量

57、里,并且輸出這三個(gè)變量。 #includemain() 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;說明:本程序中變量的命名沒做說明:本程序中變量的命名沒做到見名知義,這在同學(xué)們以后的到見名知義,這在同學(xué)們以后的編程中要注意避免。編程中要注意避免。 60#includemain() int i; float f; char c; p

58、rintf(input i,fn); scanf(%d,%f, &i,&f ); 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;請同學(xué)們觀察本程序的輸出是什么?請同學(xué)們觀察本程序的輸出是什么?input i,f10,3.14input cthe result is: i=10,f=3.140000,c=請按任意鍵繼續(xù)請按任意鍵繼續(xù) . . .程序并沒有給用戶輸入字程序并沒有給用戶輸入字符數(shù)據(jù)的

59、機(jī)會(huì)。為什么?符數(shù)據(jù)的機(jī)會(huì)。為什么?【鏈接鏈接】 61解決方法:用解決方法:用getchar函數(shù)來讀取回車符函數(shù)來讀取回車符main() 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);inpu

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論