C語言二級輔導(dǎo)(基礎(chǔ)知識)課件_第1頁
C語言二級輔導(dǎo)(基礎(chǔ)知識)課件_第2頁
C語言二級輔導(dǎo)(基礎(chǔ)知識)課件_第3頁
C語言二級輔導(dǎo)(基礎(chǔ)知識)課件_第4頁
C語言二級輔導(dǎo)(基礎(chǔ)知識)課件_第5頁
已閱讀5頁,還剩103頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C程序設(shè)計(jì)(二級)輔導(dǎo)計(jì)算機(jī)與信息工程學(xué)院通過等級考試,并不能表明你真正學(xué)會(huì)了C語言。正如你通過了6級英語,就能寫出莎士比亞一樣的詩句嗎?學(xué)好C語言的唯一途徑就是:編程,編程,再編程,實(shí)踐,實(shí)踐,再實(shí)踐C語言學(xué)習(xí)的目標(biāo)課程的定位公共基礎(chǔ)課,類似大學(xué)英語、高等數(shù)學(xué)、大學(xué)物理等課程教學(xué)目標(biāo):素質(zhì)教育與能力培養(yǎng)實(shí)踐能力創(chuàng)造性抽象思維能力(圖形處理、internet程序設(shè)計(jì)、自動(dòng)控制單片機(jī)、統(tǒng)計(jì)、管理信息系統(tǒng)、數(shù)據(jù)安全方面等等)二級考試的目的檢測計(jì)算機(jī)編程能力的依據(jù)激發(fā)學(xué)生學(xué)習(xí)程序設(shè)計(jì)語言的興趣實(shí)踐創(chuàng)新的基礎(chǔ),更好的服務(wù)于專業(yè)課程教學(xué)中的問題:學(xué)學(xué)習(xí)難點(diǎn)不在于掌握某種程序設(shè)計(jì)語言的語法規(guī)范,而是掌握程

2、序設(shè)計(jì)的基本方法考試目標(biāo)了解和掌握C語言的語法使用掌握的語言知識進(jìn)行編程上機(jī)調(diào)試的能力使用程序語言解決簡單實(shí)際問題考試細(xì)則網(wǎng)絡(luò)環(huán)境的上機(jī)考試考試時(shí)間:120分鐘考卷從服務(wù)器上下載、考試結(jié)果上傳至服務(wù)器考試閱卷采用機(jī)器和人工閱卷兩種形式 學(xué)編程,上機(jī)的重要性遠(yuǎn)遠(yuǎn)大于看書。親自動(dòng)手編程序的學(xué)習(xí)效果比干啃書本要好上0 xFFFFFFFF倍。上機(jī)不要就是敲書上的例子,那只能鍛煉出打字員。干點(diǎn)兒有挑戰(zhàn)性的事情,比如編個(gè)小游戲,做個(gè)惡作劇程序,更可以考慮開發(fā)共享軟件。如果你感到無從著手,那就下載別人的源代碼看。同時(shí),千萬不要把自己陷到TC2里面,把路子走得寬一些,VC、gcc、Dev-C+、Eclipse

3、,廣闊天地,精彩無限。 序號題型題量計(jì)分考核目標(biāo)一單選題1515分基本概念程序理解語義知識二程序調(diào)試題320分基本語句程序調(diào)試程序設(shè)計(jì)三程序填空題2330分常用算法程序設(shè)計(jì)四編程題235分常用算法綜合應(yīng)用合計(jì)2223題100分考試知識點(diǎn)講解C語言源程序結(jié)構(gòu) 預(yù)處理命令 外部數(shù)據(jù)定義 函數(shù)main和其它函數(shù)定義理解知道知道程序的書寫格式 基本詞法單位、標(biāo)識符/常量/運(yùn)算符等構(gòu)成規(guī)則 程序的書寫格式與風(fēng)格理解知道C語言程序設(shè)計(jì)步驟 VC編程環(huán)境的操作使用 程序的編輯/編譯/連接/調(diào)試/運(yùn)行掌握掌握C程序的組成、結(jié)構(gòu)及書寫規(guī)則一個(gè)完整的C程序int isprime(int n) int k, i;

4、if (n = 1) return 0; k = (int)sqrt(double)n); for (i=2; i=k; i+) if (n % i = 0) return 0; return 1;#include #include main() int i; for (i=2; i100; i+) if (isprime(i) printf(%dt, i); 本節(jié)要點(diǎn)C程序的組成特點(diǎn)標(biāo)識符 一/關(guān)鍵字 二/預(yù)定義標(biāo)識符 三/用戶標(biāo)識符C語言程序設(shè)計(jì)步驟 編輯、編譯與運(yùn)行 調(diào)試程序C程序常見符號分類 關(guān)鍵字(Keyword) 又稱為保留字,C語言中預(yù)先規(guī)定的具有固定含義的一些單詞數(shù)據(jù)類型修飾符

5、int,控制語句return等 標(biāo)識符(Identifier)系統(tǒng)預(yù)定義標(biāo)識符,main,printf 等 用戶自定義標(biāo)識符,Add, x, y 等運(yùn)算符(Operator)34種,詳見附錄2 分隔符(Separator) 空格、回車/換行、逗號等 其它符號 大花括號“”和“”通常用于標(biāo)識函數(shù)體或者一個(gè)語句塊 “/*”和“*/”是程序注釋所需的定界符 數(shù)據(jù)(Data)變量(Variable)常量(Constant) 標(biāo)識符命名 變量名函數(shù)名由英文字母、數(shù)字和下劃線組成,大小寫敏感不可以是數(shù)字開頭直觀,見名知意,便于記憶和閱讀最好使用英文單詞或其組合切忌使用漢語拼音 下劃線和大小寫通常用來增強(qiáng)可

6、讀性variablenamevariable_namevariableName不允許使用關(guān)鍵字作為標(biāo)識符的名字 int, float, for, while, if等某些功能的變量采用習(xí)慣命名如:for語句所采用的循環(huán)變量習(xí)慣用i, j, kWindows 風(fēng)格UNIX 風(fēng)格設(shè)置斷點(diǎn)調(diào)試運(yùn)行現(xiàn)在我們點(diǎn)擊工具欄上的“調(diào)試運(yùn)行按鈕(F5)”,這時(shí)程序?qū)⒆詣?dòng)編譯、連接、運(yùn)行,然后停在我們所設(shè)定的斷點(diǎn)的行上。設(shè)置斷點(diǎn)后,我們可以看見當(dāng)前行的最左端有一個(gè)暗紅色的大圓點(diǎn),如下圖所示: C語言數(shù)據(jù)類型 基本類型、數(shù)組、結(jié)構(gòu)、指針類型、空類型掌握C語言常量 常量和變量 整型、實(shí)型(單/雙精度)、字符型和字符串

7、常量的表示方法掌握理解C語言變量和C語言基本數(shù)據(jù)類型 各種類型變量的定義和說明 變量的初始化掌握掌握基本數(shù)據(jù)類型數(shù)據(jù)類型(Data Type)數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型實(shí)型(浮點(diǎn)型)字符型枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型單精度實(shí)型雙精度實(shí)型基本整型長整型短整型無符號整型何謂類型溢出(Overflow)?C語言直接提供的任何類型都有取值范圍。當(dāng)向其賦超過此范圍的數(shù)值,就會(huì)產(chǎn)生數(shù)值溢出,得到一個(gè)不正確的結(jié)果。TC2中int的范圍是-3276832767如果超出取值范圍,給它一個(gè)小于-32768或者大于32767的數(shù)會(huì)如何呢?現(xiàn)場編程測驗(yàn)小蛇能吞下大象嗎?typeoverflow

8、.c類型溢出的解決方案?解決方案:預(yù)先估算運(yùn)算結(jié)果的可能范圍,采用取值范圍更大的類型。1+2+3+1!+2!+3!+13+23+33+如果不需要處理負(fù)數(shù),則采用無符號類型。在運(yùn)算還沒開始之前就判斷運(yùn)算數(shù)是否在合理的取值范圍內(nèi)。如果超出,則停止運(yùn)算,轉(zhuǎn)錯(cuò)誤處理。為什么需要常量?假如不使用常量,直接使用常數(shù),會(huì)有什么影響?程序的可讀性變差容易發(fā)生書寫錯(cuò)誤修改麻煩常量只能在定義時(shí)賦值,然后不能再改變其值宏常量const常量枚舉常量常數(shù)(Constant)整型常數(shù)18、-31long int型常量 123l、123L、123456l、123456Lunsigned int型常量 123u、 123U浮

9、點(diǎn)常數(shù)十進(jìn)制小數(shù)形式 123.45、456.78指數(shù)形式 1e-2、4.5e3float型常量 123.45f、 456.78F、1e-2f、4.5e3Flong double型常量 123.45l、 456.78L、4.5e3L缺省為double因?yàn)樽帜竘和數(shù)字1容易混淆,所以當(dāng)用l做后綴時(shí),常使用大寫形式八進(jìn)制與十六進(jìn)制常數(shù)以數(shù)字“0”開始的整型常數(shù)是八進(jìn)制數(shù)022、-037010和10大小不一樣因?yàn)榘诉M(jìn)制并不常用,所以此種表示法比較少見以“0 x”或者“0X”開始的整型常數(shù)是十六進(jìn)制AF和af用來表示十進(jìn)制的1015十六進(jìn)制的形式比較常用0 x12、-0 x1F, -0 x1f字符(Ch

10、aracter)常數(shù)字符常數(shù)的表示方法a,A,5,%,$單引號內(nèi)只能有一個(gè)字符,除非用“”開頭就是一個(gè)普通整數(shù),也可以參與各種數(shù)學(xué)運(yùn)算每個(gè)字符具有一個(gè)0255之間的數(shù)值,可從ASCII表查出注意:5和整數(shù)5的區(qū)別字符的數(shù)學(xué)運(yùn)算在密碼學(xué)內(nèi)用得比較多用“”開頭的字符為轉(zhuǎn)義字符例如,n,代表1個(gè)字符字符常數(shù)轉(zhuǎn)義字符一些特殊字符(無法從鍵盤輸入或者另有它用)用轉(zhuǎn)義字符表示字符串(String)常數(shù)用雙引號括住的由0個(gè)或多個(gè)字符組成的字符序列I am a string表示空字符串轉(zhuǎn)義字符也可以在字符串中使用引號只作為字符串開始和結(jié)束的標(biāo)志C語言內(nèi)部用0表示字符串的結(jié)束除注釋外,是唯一可以出現(xiàn)中文的地方x

11、和x是不同的里定義了一系列專門的字符串處理函數(shù)變量聲明使用變量的基本原則變量必須先定義,后使用所有變量必須在第一條可執(zhí)行語句前定義聲明的順序無關(guān)緊要一條聲明語句可聲明若干個(gè)同類型的變量聲明變量,是初始化變量的最好時(shí)機(jī)不被初始化的變量,其值為危險(xiǎn)的隨機(jī)數(shù)char esc = a;int i = 1;int sum = 0;float eps = 1.0e-5;運(yùn)算符 運(yùn)算符種類、功能、目數(shù)、優(yōu)先級、結(jié)合性和副作用理解算術(shù)運(yùn)算 自動(dòng)類型轉(zhuǎn)換規(guī)則掌握關(guān)系和邏輯運(yùn)算 關(guān)系和邏輯運(yùn)算規(guī)則 邏輯運(yùn)算的優(yōu)化規(guī)則掌握理解位運(yùn)算 位運(yùn)算規(guī)則和簡單位運(yùn)算知道賦值運(yùn)算 賦值運(yùn)算中自動(dòng)類型轉(zhuǎn)換規(guī)則(以左值類型為準(zhǔn)轉(zhuǎn)換

12、) 復(fù)合賦值掌握理解其他運(yùn)算 條件、逗號、求存儲(chǔ)空間大小運(yùn)算知道表達(dá)式 表達(dá)式組成規(guī)則、各類表達(dá)式 描述計(jì)算過程/條件判斷的表達(dá)式 各類型數(shù)據(jù)混合運(yùn)算中求值順序 表達(dá)式運(yùn)算中的隱式類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換 基本運(yùn)算執(zhí)行順序、表達(dá)式結(jié)果類型理解理解掌握理解掌握基本運(yùn)算和表達(dá)式算術(shù)運(yùn)算符+,-,*,/加、減、乘、除運(yùn)算四則混合運(yùn)算中,先算乘除,后算加減,按從左向右的順序計(jì)算,左結(jié)合%求余運(yùn)算常用的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)函數(shù)名功 能函數(shù)名功 能sqrt(x)計(jì)算x的平方根,x應(yīng)大于等于0 exp(x)計(jì)算ex的值fabs(x)計(jì)算x的絕對值pow(x,y)計(jì)算xy的值log(x)計(jì)算lnx的值sin(x)計(jì)算s

13、inx的值,x為弧度值log10(x)計(jì)算lgx的值cos(x)計(jì)算cosx的值,x為弧度值關(guān)系運(yùn)算符,=, b & b c);a大于b,并且b大于c或運(yùn)算|a | b只要兩者中有一個(gè)為真,結(jié)果就為真( a b | b c); a大于b,或者b大于c求反!( !a );如果a是0,結(jié)果非0;如果a是非0,結(jié)果是0并不改變a的值實(shí)例ch是英文大寫字母 (ch = A) & (ch double float long int short chardoublefloatlongunsignedintchar,short精度低精度高自動(dòng)類型轉(zhuǎn)換在進(jìn)行賦值操作時(shí),會(huì)發(fā)生類型轉(zhuǎn)換將取值范圍小的類型轉(zhuǎn)為取值

14、范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內(nèi),則平安無事但是,浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù),會(huì)丟失小數(shù)部分,非四舍五入反之,轉(zhuǎn)換后的結(jié)果必然是錯(cuò)誤的,具體結(jié)果與機(jī)器和實(shí)現(xiàn)方式有關(guān)。避免如此使用,好的編譯器會(huì)發(fā)出警告類型強(qiáng)轉(zhuǎn)(Casting) 消除從大到小的警告l = (long)i;可以通過“(類型)表達(dá)式”的方式把表達(dá)式的值轉(zhuǎn)為任意類型強(qiáng)轉(zhuǎn)時(shí),你必須知道你在做什么強(qiáng)轉(zhuǎn)與指針,并稱C語言兩大神器,用好了可以呼風(fēng)喚雨,用壞了就損兵折將屠龍刀倚天劍例#include main() int m = 5; printf(m / 2=%dn, m/2); printf(float)(m/2

15、) = %fn, (float)(m/2); printf(float)m/2 = %fn, (float)m/2); printf(m = %dn, m);m/2 = 2(float)(m/2) = 2.000000(float)m/2 = 2.500000m = 5兩個(gè)整數(shù)運(yùn)算的結(jié)果還是整數(shù),不是浮點(diǎn)數(shù)增一和減一運(yùn)算符n+,n-,+n,-n+讓參與運(yùn)算的變量加1,-讓參與運(yùn)算的變量減1作為后綴運(yùn)算符時(shí),先取n的值,然后加/減1作為前綴運(yùn)算符時(shí),先加/減1,然后取n的值n = n+;n = n;n+;增一和減一運(yùn)算符n+,n-,+n,-n+讓參與運(yùn)算的變量加1,-讓參與運(yùn)算的變量減1作為后綴

16、運(yùn)算符時(shí),先取n的值,然后加/減1作為前綴運(yùn)算符時(shí),先加/減1,然后取n的值n = +n;n+;m = n;增一和減一運(yùn)算符良好的程序設(shè)計(jì)風(fēng)格提倡:在一行語句中,一個(gè)變量只能出現(xiàn)一次加1或者減1運(yùn)算過多的加1和減1運(yùn)算混合,不僅可讀性差,而且因?yàn)榫幾g器實(shí)現(xiàn)的方法不同,導(dǎo)致不同編譯器產(chǎn)生不同的運(yùn)行結(jié)果位操作運(yùn)算符&按位與運(yùn)算|按位或運(yùn)算按位異或運(yùn)算按位右移運(yùn)算按位求反位操作運(yùn)算符邏輯運(yùn)算與位運(yùn)算的不同main() int x=12, y=8; printf(n%5d%5d%5d, !x, x|y, x&y); printf(n%5d%5d%5d, x, x|y, x&y); printf(n%5

17、u%5d%5dn, x, x|y, x&y); 0 1 1 -13 12 865532 12 8邏輯非的結(jié)果不是按位取反正數(shù)的補(bǔ)碼與其原碼相同,負(fù)數(shù)的補(bǔ)碼為其反碼加1賦值運(yùn)算符+、-、*、/、%、&、|運(yùn)算符都可按此種方式處理這種形式看起來更直觀,且執(zhí)行效率一般也能更高一些課堂練習(xí):P45,2.2(7)n = n + 2;n += 2;逗號運(yùn)算符多數(shù)情況下,并不使用整個(gè)逗號表達(dá)式的值,更常見的情況是要分別得到各表達(dá)式的值主要用在循環(huán)語句中,同時(shí)對多個(gè)變量賦初值等 for (i = 1 , j = 00; i b) z = a; else z = b;z = (a b) ? a : b;優(yōu)先級(

18、 ) - .! + - + - * & (類型) sizeof* / %+ - = !=&|&|? := += -= *= /= %= &= = |= =,優(yōu)先級能背下優(yōu)先級表的人鳳毛麟角用括號來控制運(yùn)算順序更直觀、方便,并減少出錯(cuò)的概率結(jié)合性多數(shù)運(yùn)算符為左結(jié)合少數(shù)為右結(jié)合:一元運(yùn)算符賦值運(yùn)算符條件運(yùn)算符基本語句及順序結(jié)構(gòu)語句 定義/說明語句,表達(dá)式語句,空語句,復(fù)合語句、函數(shù)調(diào)用語句掌握選擇結(jié)構(gòu)語句 描述條件和情況的if,switch語句、 選擇語句嵌套掌握循環(huán)結(jié)構(gòu)語句 描述循環(huán)執(zhí)行的while,do-while,for語句 循環(huán)語句嵌套掌握轉(zhuǎn)移語句 改變程序流程執(zhí)行次序的break,con

19、tinue, return語句掌握語句復(fù)合語句括住的若干條語句構(gòu)成一個(gè)語句塊,稱為復(fù)合語句語句塊內(nèi)可以定義變量變量僅在定義它的復(fù)合語句內(nèi)有效變量必須在復(fù)合語句的開頭定義復(fù)合語句可以用在任何可以使用語句的地方if-else選擇結(jié)構(gòu)的一種最常用形式 if (表達(dá)式) 語句1;else語句2; 語句3表達(dá)式值非0時(shí),執(zhí)行語句1,然后語句3;表達(dá)式值為0時(shí),執(zhí)行語句2,然后語句3 語句1; 語句2;else-ifif的一種擴(kuò)展形式相當(dāng)于else分支嵌套if (表達(dá)式1) 語句1;else if (表達(dá)式2)語句2;else if (表達(dá)式3)語句3;else語句4;語句5;表達(dá)式1 語句1 語句2 語

20、句3 語句4表達(dá)式2表達(dá)式3 圖4-9 多分支選擇結(jié)構(gòu)語句1;語句2;語句3;語句4;例:體型判斷按“體指數(shù)”對肥胖程度進(jìn)行劃分: 體指數(shù)t = w / h2 (體重w單位為公斤,身高h(yuǎn)單位為米)當(dāng)t 18時(shí),為低體重;當(dāng)18 t 25時(shí),為正常體重;當(dāng)25 t 27時(shí),為超重體重;當(dāng)t 27時(shí),為肥胖。編程從鍵盤輸入你的身高h(yuǎn)和體重w,根據(jù)給定公式計(jì)算體指數(shù)t,然后判斷你的體重屬于何種類型。用3種方法編程:算法1:用不帶else子句的if語句編程 算法2:用在if子句中嵌入if 語句的形式編程 算法3:用在else子句中嵌入if 語句的形式編程 switch多路選擇switch (表達(dá)式)

21、case 常數(shù)1: 語句序列1;case 常數(shù)2: 語句序列2;default: 語句序列3;default可以沒有,但最好不省略不要忘記break語句序列1;語句序列2;語句序列n;循環(huán)while語句,for語句while (表達(dá)式) 語句; for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句; 語句;語句;while語句while (表達(dá)式) 語句; 只要表達(dá)式的值為非0,就重復(fù)執(zhí)行語句,直到表達(dá)式值為0時(shí)止語句真假假表達(dá)式語句;for語句for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句; 首先執(zhí)行表達(dá)式1。如果表達(dá)式2的值為非0,就重復(fù)執(zhí)行語句和表達(dá)式3,直到表達(dá)式2的值為0時(shí)止語句;

22、循環(huán)起始條件循環(huán)結(jié)束條件循環(huán)增量for語句for (表達(dá)式1; 表達(dá)式2; 表達(dá)式3) 語句; 相當(dāng)于:表達(dá)式1和表達(dá)式3可以沒有或者是用逗號分隔的多個(gè)表達(dá)式的組合。但最好不要有太多的表達(dá)式組合語句; 表達(dá)式1; while (表達(dá)式2) 語句;表達(dá)式3; do-while語句do 語句;while (表達(dá)式);首先執(zhí)行語句,然后判斷表達(dá)式的值。如果表達(dá)式為0,繼續(xù)向下執(zhí)行,否則,再次執(zhí)行語句,再次判斷表達(dá)式的值語句會(huì)被至少執(zhí)行一次表達(dá)式語句假真語句;條 件PA當(dāng)型循環(huán)直到循環(huán)真假假條 件PA假真假條 件P條 件PA假當(dāng)循環(huán)條件第一次就為假時(shí)選擇三種循環(huán)的一般原則如果循環(huán)次數(shù)已知,用for如果

23、循環(huán)次數(shù)未知,用while如果循環(huán)體至少要執(zhí)行一次,用do-while這只是“一般”原則,不是“原則”注意在for和while語句之后一般沒有分號有分號表示循環(huán)體就是分號之前的內(nèi)容(空循環(huán)體)while (i 100);i+;for (i = 0; i 100; i+);printf(%d, i);for通常有一個(gè)循環(huán)變量控制循環(huán)的次數(shù),不要在循環(huán)體內(nèi)改變這個(gè)變量現(xiàn)場編程計(jì)算1+2+100=?分別用如下語句編程forwhiledo-while單步跟蹤執(zhí)行程序,且使用監(jiān)視窗觀測變量值的變化嵌套循環(huán)流程的轉(zhuǎn)移控制 break語句continue語句goto語句break和continue對for、

24、while、do-while循環(huán)進(jìn)行內(nèi)部手術(shù)break,退出一層循環(huán)或者switchcontinue,中斷此次循環(huán)體的執(zhí)行,開始下一次break和continue少用為妙單步運(yùn)行演示break語句和continue語句的用法區(qū)別#include main()int i, n;for (i=1; i=5; i+)printf(Please enter n:);scanf(%d, &n);if (n 0) continue;printf(n = %dn, n);printf(Program is over!n);Please enter n: 10n = 10Please enter n: -10

25、Please enter n: 20n = 20Please enter n: -20Please enter n: 30n = 30Program is over! 其他流程轉(zhuǎn)移控制return語句將在第5章講解 標(biāo)準(zhǔn)庫函數(shù)exit() 作用是終止整個(gè)程序的執(zhí)行,強(qiáng)制返回操作系統(tǒng) 調(diào)用該函數(shù)需要嵌入頭文件常用算法求階乘: 數(shù)據(jù)類型的定義, long或double求累加和: long統(tǒng)計(jì): 統(tǒng)計(jì)正數(shù)、平均分以上、n個(gè)成績中10090、8980、7970、6960、60的人數(shù);輸入字符串中字母d的個(gè)數(shù)設(shè)置一個(gè)計(jì)數(shù)變量k:初始化為1,每遇到一次將其加1:k+;這一章我們學(xué)習(xí)了累加和存放累加和的變量

26、:初始化為0或第一項(xiàng),再循環(huán)加每一項(xiàng);循環(huán)控制:前n項(xiàng)之和已知循環(huán)次數(shù),可設(shè)置一個(gè)循環(huán)變量如i來控制;加到某一項(xiàng)或累加和滿足一定條件。例:1+2+.+n 與 1+3+5+7+.和 2+4+6+8+.及12+32+52+72+.輸入n或累加和大于2000的最小的n這一章我們學(xué)習(xí)了累加的項(xiàng)較復(fù)雜時(shí),得專門求,例:前后項(xiàng)之間無關(guān)1m+3m +5m +7m +./4=1-1/3+1/5-1/7+.直到最后一項(xiàng)的絕對值小于10-6為止前后項(xiàng)之間有關(guān)1!+2!+.+n!x0+x1 +x2+x3+.1+1+2+3+5+8+13+21+.2/1+3/2+5/3+8/5+13/8+21/13+.a+aa+aaa

27、+aaaa+aaaaa+.a是一個(gè)數(shù)字,例a=2,2+22+222+2222+.其他常用算法求素?cái)?shù)斐波那契數(shù)列展轉(zhuǎn)相除法求最大公約數(shù)枚舉法求百元買百雞一維數(shù)組 一維數(shù)組定義、引用和初始化掌握二維數(shù)組 二維數(shù)組定義、引用和初始化掌握字符數(shù)組和字符串 字符數(shù)組定義、引用和初始化 字符串結(jié)束標(biāo)志、初始化、字符串處理函數(shù)掌握理解數(shù)組內(nèi)容提要數(shù)組類型;向函數(shù)傳遞一維數(shù)組和二維數(shù)組;常用算法:排序、查找、求最大最小值等;用字符數(shù)組存取字符串;使用字符串處理函數(shù)處理字符串?dāng)?shù)組(Array)int a10;定義一個(gè)有10個(gè)元素的數(shù)組,每個(gè)元素的類型均為int使用a0、a1、a2、a9這樣的形式訪問每個(gè)元素???/p>

28、以像使用普通變量一樣使用他們。系統(tǒng)會(huì)在內(nèi)存分配連續(xù)的10個(gè)int空間給此數(shù)組直接對a的訪問,就是訪問此數(shù)組的首地址a數(shù)組首地址a9a8a7a1a0數(shù)組的定義與初始化數(shù)組定義后的初值仍然是隨機(jī)數(shù),一般需要我們來初始化int a5 = 12, 34, 56 ,78 ,9 ;int a5 = 0 ;int a = 11, 22, 33, 44, 55 ;數(shù)組大小最好用宏來定義,以適應(yīng)未來可能的變化#define SIZE 10int aSIZE;數(shù)組大小定義好后,將永遠(yuǎn)不變數(shù)組的使用數(shù)組的下標(biāo)都是從0開始對數(shù)組每個(gè)元素的使用與普通變量無異可以用任意表達(dá)式作為下標(biāo),動(dòng)態(tài)決定訪問哪個(gè)元素for (i=0

29、; iSIZE; i+) ai = 2 * i;下標(biāo)越界是大忌!使用大于最大下標(biāo)的下標(biāo),將訪問數(shù)組以外的空間。那里的數(shù)據(jù)是未知的,可能帶來嚴(yán)重后果sizeof可以用來獲得數(shù)組大小只能逐個(gè)對數(shù)組元素進(jìn)行操作(字符數(shù)組例外)輸入方法:int a10,i;輸入第i個(gè)數(shù)組元素:scanf(%d,&ai);輸入整個(gè)數(shù)組元素:for (i=0;i10;i+) scanf(%d,&ai);輸出方法:輸出第i個(gè)數(shù)組元素:printf(%d,ai);輸出整個(gè)數(shù)組元素:for (i=0;i10;i+) printf(%d,ai);一維數(shù)組的輸入和輸出餐飲服務(wù)質(zhì)量調(diào)查打分 有40個(gè)學(xué)生被邀請給自助餐廳的食品和服務(wù)質(zhì)

30、量打分(110等級),統(tǒng)計(jì)調(diào)查結(jié)果,并用*打印如下形式的統(tǒng)計(jì)結(jié)果直方圖 Grade CountHistogram 1 5* 2 10* 3 7* .餐飲服務(wù)質(zhì)量調(diào)查打分 提示定義數(shù)組score存放打的分?jǐn)?shù)定義數(shù)組count為計(jì)數(shù)器(count0不用)計(jì)算統(tǒng)計(jì)結(jié)果:設(shè)置一個(gè)循環(huán),依次檢查數(shù)組元素值scorei,是1則將數(shù)組元素count1加1,是2則將數(shù)組元素count2加1,依此類推for (i=0; iSTUDENTS; i+)countscorei +;打印統(tǒng)計(jì)結(jié)果,設(shè)置一個(gè)循環(huán),按count數(shù)組元素的值,打印相應(yīng)個(gè)數(shù)的符號*二維數(shù)組的定義數(shù)據(jù)類型 數(shù)組名常量表達(dá)式常量表達(dá)式;int a2

31、3;a0a1a- a00 a01 a02- a10 a11 a12二維數(shù)組的存儲(chǔ)結(jié)構(gòu)short int a23;a0a1a10a11a12a00a01a02存放順序:按行存放先順序存放第0行的元素再存放第1行的元素a00a01a02a10a11a12二維數(shù)組的輸入和輸出數(shù)組的輸入和輸出只能逐個(gè)對數(shù)組元素進(jìn)行操作(字符數(shù)組例外)int a23,i,j;輸入方法:輸入第i行第j列元素:scanf(“%d”,&aij);輸入整個(gè)數(shù)組元素:for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij);輸出方法:輸出第i行第j列元素:printf(“%d”,aij);輸

32、出整個(gè)數(shù)組元素:for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d”,aij);打印最高分(常考到的題目)從鍵盤輸入學(xué)生人數(shù)n;從鍵盤輸入所有學(xué)生的學(xué)號和成績分別存入數(shù)組num和score假設(shè)其中的一個(gè)學(xué)生成績?yōu)樽罡適axScore = score0;對所有學(xué)生成績進(jìn)行比較,即 for (i=1; i maxScore則修改maxScore值為scorei 打印最高分maxScore排序算法交換法排序選擇法排序查找算法順序查找折半查找順序查找int Search(long a, int n, long x) int i; for (i=0; iamid, low

33、=mid+1第二次循環(huán):99011 99013 99015 99017 99019 low=mid high x=amid,找到哈,找到了!折半查找數(shù)組下標(biāo) 0 1 2 3 4 5 6第一次循環(huán):99011 99013 99015 99017 99019 查找值x=99016 low mid high xamid, low=mid+1第二次循環(huán):99011 99013 99015 99017 99019 low=mid high xamid, high=mid-1第三次循環(huán):99011 99013 99015 99017 99019 high low 不滿足low=high, 循環(huán)結(jié)束,未找到

34、 唉,沒找到!計(jì)算每門課程的總分和平均分void Total(int scoreCOURSE, int sum, float aver, int n) int i, j;for (j=0; jCOURSE; j+) sumj = 0; for (i=0; in; i+) sumj = sumj + scoreij; averj = (float) sumj / n; 可以省略數(shù)組第一維的長度不能省略數(shù)組第二維的長度字符串(String)與字符數(shù)組字符串一串以0結(jié)尾的字符在C語言中被看作字符串用雙引號括起的一串字符是字符串常量,C語言自動(dòng)為其添加0終結(jié)符C語言并沒有為字符串提供任何專門的表示法,

35、完全使用字符數(shù)組和字符指針來處理字符數(shù)組每個(gè)元素都是字符類型的數(shù)組char string80;字符數(shù)組的初始化用字符型數(shù)據(jù)對數(shù)組進(jìn)行初始化 char str6 = C,h,i,n,a,0; 用字符串常量直接對數(shù)組初始化 char str6 = China; char str6 = China;逐個(gè)輸入輸出for (i=0; si!=0; i+) putchar(si);putchar(n);一次性輸入輸出scanf(%s,s); printf(%s,s);char s10;字符數(shù)組的輸入輸出 gets(s); puts(s);scanf()char str10;scanf(%s, str);不

36、能讀入帶空格的字符串,gets()可以這兩種用法都不安全。當(dāng)用戶的輸入多于10個(gè)(含10個(gè)),str數(shù)組將越界現(xiàn)場編程做試驗(yàn)scanf被公認(rèn)為最易遭到黑客攻擊的函數(shù)之一gets()字符串輸入函數(shù)gets()也沒有提供限制輸入字符串長度的方法,容易引起緩沖區(qū)溢出,給黑客攻擊以可乘之機(jī) 對輸入字符串長度有限制的函數(shù)調(diào)用fgets(buf, sizeof (buf), stdin);字符串處理函數(shù)在中定義了若干專門的字符串處理函數(shù)strcpy: string copystrcpy(目的字符串,源字符串);strlen: string lengthstrlen(字符串);返回字符串的實(shí)際長度,不包括0

37、strcat: string combinationstrcat(目的字符串,源字符串);strcmp: string comparisonstrcmp(字符串1,字符串2);當(dāng)出現(xiàn)第一對不相等的字符時(shí),就由這兩個(gè)字符決定所在字符串的大小返回其ASCII碼比較的結(jié)果值 字符串處理函數(shù)str1 = str2; /*錯(cuò)誤*/strcpy(str1,str2); /*正確*/if (str1 str2) /*錯(cuò)誤*/ if (strcmp(str1,str2) 0) /*正確*/字符串不能直接整體復(fù)制!也不能用關(guān)系運(yùn)算符比較大小例從鍵盤任意輸入5個(gè)學(xué)生的姓名,編程找出并輸出按字典順序排在最前面的學(xué)生姓

溫馨提示

  • 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

提交評論