第二章程序的靈魂---算法_第1頁
第二章程序的靈魂---算法_第2頁
第二章程序的靈魂---算法_第3頁
第二章程序的靈魂---算法_第4頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章第二章 程序的靈魂程序的靈魂-算法算法 什么是程序? 計(jì)算機(jī)是機(jī)器-在求解某一問題時(shí)-需要有相應(yīng)程序-程序是用計(jì)算機(jī)能夠識(shí)別的語言表示出的如何求解問題的一段“文章”-因?yàn)闆]有程序的計(jì)算機(jī)是不知如何求解問題的。那如何寫出程序呢? 一是:學(xué)習(xí)掌握計(jì)算機(jī)能夠識(shí)別的語言 二是:求解問題的方法步驟-算法 三是:將兩者的結(jié)合,即用計(jì)算機(jī)語言將求解問題的方法步驟表達(dá)出來即寫出程序。 程序是用計(jì)算機(jī)語言表達(dá)的算法。 程序設(shè)計(jì)首先要進(jìn)行的是算法設(shè)計(jì)程序設(shè)計(jì)首先要進(jìn)行的是算法設(shè)計(jì)2.1 算法的概念算法就是求解問題的方法步驟。算法從時(shí)間和空間兩個(gè)方面有不同的性質(zhì)。同一個(gè)問題有不同的算法,所以評(píng)價(jià)一個(gè)算法就有優(yōu)

2、劣之分。如:1+2+3+100時(shí)間性、可讀性等 2.2 算法舉例例1:求1*2*n即n!S1:使p=1S2:使i=2S3:給定n的值S4:使p*i,將乘積存入p,表示為p*i=iS5:使i的值增加1,即i+1=iS6:如果i不大于n,返回重新執(zhí)行步驟S4,以及其后的S5和S6,最后得到p的即是n!的值.S7:打印p,即是程序運(yùn)行結(jié)果例2:求1+1/2+1/3+1/100如果題目變?yōu)? 1-1/2+1/3-1/1002.3 算法特性1、有窮性2、確定性3、有效性4、0或多個(gè)輸入5、1或多個(gè)輸出2.4 算法表示1、用自然語言2、用流程圖3、用偽代碼4、用計(jì)算機(jī)語言作業(yè):P372.2 2.4(1)、

3、(3)、(8)第三章第三章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 3.1 C數(shù)據(jù)類型 一個(gè)程序應(yīng)包括兩個(gè)方面的內(nèi)容 1、對(duì)處理數(shù)據(jù)的描述(數(shù)據(jù)結(jié)構(gòu)) 2、對(duì)處理數(shù)據(jù)的操作(算法描述) Wirth提出的公式: 程序=數(shù)據(jù)結(jié)構(gòu)+算法 C提供的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)的 由于算法千變?nèi)f化,程序要處理的數(shù)據(jù)(對(duì)象)也是多種多樣,在程序設(shè)計(jì)語言中就將數(shù)據(jù)處分為不同的類型,如數(shù)值型(int、float等)、非數(shù)值型(char等)不同類型數(shù)據(jù)在內(nèi)存的存貯方式上、運(yùn)算方式上都是不同的。所以在對(duì)處理方法描述之前,要對(duì)處理過程中涉及到的數(shù)據(jù)進(jìn)行類型說明。 對(duì)各種類型的數(shù)據(jù),有兩種存在形式即:常量和

4、變量。 C程序要處理的各種數(shù)據(jù) 一、有類型之分,所以要進(jìn)行類型說明,其作用有二,一是知其存貯方法,二是知其運(yùn)算方式。 二、無論何種類型數(shù)據(jù),在程序中都有兩種出現(xiàn)形式,即常量和變量 3.2 常量與變量 3.2.1常量和符號(hào)常量 常量定義 常量類型:-3,4.6,a 常量的形式:以常量形式直接出現(xiàn); 符號(hào)常量:#define PRICE 35 程序中出現(xiàn)35處可以常量名(符號(hào)) PRICE形式出現(xiàn)。符號(hào)常量名用大寫,變量名用小寫。 3.2.2 變量 其值可以改變的量稱為變量。變量要有一個(gè)名字。變量名和變量值的區(qū)別。 用來標(biāo)記變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、文件名和有效字符序列稱為標(biāo)識(shí)符。 C語

5、言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線三種字符組成。且第一個(gè)字符必須是字母或下劃線,長(zhǎng)度的規(guī)定 合法名、大小寫被認(rèn)為是不同的字符。 在C語言中,要求對(duì)所有用到的變量作強(qiáng)制定義,也就是“先定義、后使用” 其意義有三: 1、保證變量名使用正確 2、根據(jù)類型分配存貯單元 3、根據(jù)類型判斷其運(yùn)算是否合法 3.3 整型數(shù)據(jù) 3.3.1 整形常量 整形常量即整形數(shù)。有三種形式: 1、十進(jìn)制形式 如123 2、八進(jìn)制形式 以0開頭,如0123 3、十六進(jìn)制形式 以0 x開頭,如0 x123 3.3.2 整型變量 一、整型變量的分類 1、基本型,以int表示(integer) 2、短整型,以short int表

6、示,或short表示 3、長(zhǎng)整型,以long int表示,或long表示 4、無符號(hào)型,又分無符號(hào)整形、短整型和長(zhǎng)整型,分別以u(píng)nsigned int、 unsigned short和unsigned long表示 C規(guī)定各類數(shù)據(jù)所占字節(jié)數(shù)。 二、整型變量的定義 int a,b; unsigned short c,d; long e,f; 三、整型常量的類型 整型常量與整型變量之間的匹配關(guān)系 四、整型量的運(yùn)算 進(jìn)行各種類型的算術(shù)運(yùn)算 3.4 實(shí)型數(shù)據(jù) 3.4.1實(shí)形常量 實(shí)數(shù)在C中又稱浮點(diǎn)數(shù)。實(shí)數(shù)有兩種形式: 1、十進(jìn)制數(shù)形式:它由數(shù)字和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。 如12.9,34.0或34

7、. 2、指數(shù)形式:123e3或123E3。注意的是E(或e)之前必須有數(shù)字且E后面指數(shù)必須是整數(shù)。 3.4.2 實(shí)形變量 實(shí)型變量分類與類型說明 分為兩類:?jiǎn)尉龋╢loat)和雙精度(double) 類型說明語句: float x,y; double z; 在一般的系統(tǒng)中,一個(gè)float型數(shù)據(jù)在內(nèi)存中占32位,一個(gè)double型數(shù)據(jù)在內(nèi)存中占64位. 數(shù)據(jù)的范圍和精度、實(shí)型常量不分float和double 實(shí)型量的運(yùn)算 3.5 字符型數(shù)據(jù) 3.5.1字符常量 C的字符常量有兩種形式: 1、C的字符常量是用單引號(hào)(即撇號(hào))括起來的一個(gè)字符。如A,a等 2、特殊形式的字符常量,就是以開頭的字符序

8、列。如n代表一個(gè)“換行”符。因?yàn)橛行┓秋@示字符難以用一般形式的字符表示,故規(guī)定用這種特殊形式表示。 以開頭的特殊字符見表,“轉(zhuǎn)義字符” 自己看例2.3 3.5.2 字符變量 字符變量用來存放字符常量。只能放一個(gè)字符。字符變量的定義: char c1,c2; 一個(gè)字符變量占用一個(gè)字節(jié)的內(nèi)存空間。 3.5.3 字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及其使用方法 字符是以ASCII形式放在內(nèi)存單元中的。由于它在存儲(chǔ)形式上與整數(shù)存貯形式相類似。C就使char數(shù)據(jù)與int數(shù)據(jù)可以通用。 例2.4 main() char c1,c2; c1=97;c2=98; printf(“%c %c”, c1,c2); 其中:“

9、%c”是輸出字符的格式符 例2.5 main() int i; char c; i=a; c=97; printf(“%c %d”, c,c); 程序執(zhí)行的輸出結(jié)果 3.5.4 字符串常量 字符串常量是一對(duì)雙括號(hào)括起來的字符序列。如:“How do you do.”,“CHINA”等。 可以輸出一個(gè)字符串,如: printf(“How do you do.”); 要注意的是:“A”與A不同。 在C中沒有專門的字符串變量,需要用字符數(shù)組。 3.6 變量賦初值 程序中需要對(duì)一些變量預(yù)先設(shè)置初值。C中可在定義變量時(shí)同時(shí)使變量初值化。 如: int a=4; float h=3.567; char c

10、=a; 它等同于: int a; a=4; 3.7 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 數(shù)值型是整型與實(shí)型的總稱。 各類int、float和double數(shù)據(jù)可以混合運(yùn)算。由于char與int型通用,因此,int、float、double與char間可以混合運(yùn)算。 例如: 10+a+1.5-8.68* b 是合法的。 但:在運(yùn)算前,計(jì)算機(jī)要將不同類型的數(shù)據(jù)先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。 轉(zhuǎn)換規(guī)則是: 類型數(shù)據(jù)總結(jié) 一、常量和變量 常量的形式、標(biāo)識(shí)符 二、變量 1、定義(說明) 2、內(nèi)存中的存貯形式、導(dǎo)致數(shù)據(jù)范圍(精度) 3、int與char異同點(diǎn) 三、不同類型的數(shù)據(jù)運(yùn)算方式不同 3.8 算術(shù)運(yùn)算符和算

11、術(shù)表達(dá)式 3.8.1 C運(yùn)算符簡(jiǎn)介 C運(yùn)算符范圍很寬,除了控制語句和輸入輸出以外的幾乎所有操作都作為運(yùn)算符處理。分為下面幾類: 1、算術(shù)運(yùn)算符 2、關(guān)系運(yùn)算符! 3、邏輯運(yùn)算符 ! & | 等等 3.8.2 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 一、基本的算術(shù)運(yùn)算符 + - * / %(模運(yùn)算符,或稱求余運(yùn)算符,要求%兩側(cè)都是整型數(shù)據(jù)) 7%3=1 注意:整型數(shù)的除法 如:2/4=0、5/3=1、-5/3=? 二、算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 算術(shù)表達(dá)式概念:運(yùn)算對(duì)象(操作數(shù))經(jīng)算術(shù)運(yùn)算符和括號(hào)連接起來的式子 C規(guī)定運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。 在表達(dá)式求值時(shí)先按運(yùn)算符的優(yōu)先級(jí)別進(jìn)行。如:a-b*

12、c 如果在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同,如: a-b+c C規(guī)定了各種運(yùn)算符結(jié)合方向(結(jié)合性)。算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即b先與-號(hào)結(jié)合。這種結(jié)合性稱為“左結(jié)合性”。 如果運(yùn)算符兩側(cè)操作數(shù)的類型不同,先自動(dòng)進(jìn)行類型轉(zhuǎn)換,然后進(jìn)行運(yùn)算。 注:運(yùn)算符的意義和表達(dá)式值的確定 三、強(qiáng)制類型轉(zhuǎn)換 將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型,其形式為: (類型名)(表達(dá)式) 例如: main() float x; int i; x=3.6; i=(int)x printf(“x=%f,i=%d”,x,i); 從上可知:有兩種類型轉(zhuǎn)換,一種是運(yùn)算時(shí)不必用戶指定,而由系統(tǒng)按規(guī)則自動(dòng)進(jìn)行類型轉(zhuǎn)換;另一種是

13、強(qiáng)制類型轉(zhuǎn)換。 四、自增、自減運(yùn)算符 該運(yùn)算符的作用是使變量值增1或減1,如: +i,-i 是一種形 i+,i- 式的表達(dá)式 粗看, +i和 i+都相當(dāng)于i=i+1,但有不同之處,表達(dá)式的值什么,i的值是多少 如i=2,則+i表達(dá)式的值為3,i值也為3; 而i+表達(dá)式的值為2,i值卻為3 注意: (1)自增自減運(yùn)算符的運(yùn)算對(duì)象只能是變量,不能是常量或表達(dá)式。如5+或 +(a+b)都是不合法的。 (2)+和-的結(jié)合方向是“自右至左”。如:-i+,相當(dāng)于-(i+) 五、有關(guān)表達(dá)式使用中的問題說明 1、表達(dá)式中包含自加或自減時(shí)的理解 如:若i=3 (i+)+ (i+)+ (i+)=? i=? (+i

14、)+ (+i)+ (+i)=? i=? 2、表達(dá)式的理解問題 問題一:i+j 編譯系統(tǒng)將其理解為(i+)+j還是i+(+j)呢? 問題二: main() int i=3; printf(%d %dn,i,i+); 3.9 賦值運(yùn)算符與賦值表達(dá)式 一、賦值符號(hào)“=”的作用,將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如:c=k; 二、對(duì)賦值運(yùn)算符兩側(cè)的類型不一致時(shí),類型轉(zhuǎn)移問題。 例: main() unsigned a;int b=-1; a=b;printf(“%u”,a); 注:這部分內(nèi)容理解有一個(gè)前提。 三、復(fù)合的賦值運(yùn)算符 在賦值號(hào)之前加上其它運(yùn)算符,構(gòu)成復(fù)合運(yùn)算符。 如:a+=3 理解為 a=a+3 x*=y+8 理解為 x=x*(y+8) ? 四、賦值表達(dá)式 賦值運(yùn)算符將一個(gè)變量和一個(gè)表達(dá)式連接起來的式子,一般形式為 注意: (1)賦值運(yùn)算符有兩種 (2)賦值表達(dá)式作用有二。一是使變量得值;二是使“賦值表達(dá)式”得值。 將賦值表達(dá)式做為表達(dá)式的一種 main() int a,b; a=1; b=a+=3; a-=a+=a*a; printf(%d %dn,a,b)

溫馨提示

  • 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)論