




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第1章 C語(yǔ)言概述本章主要內(nèi)容:1.1 C語(yǔ)言簡(jiǎn)介1.2 C語(yǔ)言程序結(jié)構(gòu)1.3 C語(yǔ)言程序的執(zhí)行(重點(diǎn))1.4 VC+運(yùn)行C程序說(shuō)明(重點(diǎn))本章教學(xué)要求:了解C語(yǔ)言的基本特點(diǎn) 熟悉C程序的基本結(jié)構(gòu)掌握使用VC+運(yùn)行C語(yǔ)言程序的方法步1.1 C語(yǔ)言簡(jiǎn)介1.1.1 C語(yǔ)言的發(fā)展史C語(yǔ)言之所以命名為C,是因?yàn)?C語(yǔ)言源自Ken Thompson發(fā)明的B語(yǔ)言1983年由美國(guó)國(guó)家標(biāo)準(zhǔn)局(American National Standards Institute,簡(jiǎn)稱ANSI)開(kāi)始制定C語(yǔ)言標(biāo)準(zhǔn),于1989年12月完成,并在1990年春天發(fā)布,稱之為ANSI C,有時(shí)也被稱為 C89 或 C90。第1章
2、C語(yǔ)言概述1.1 C語(yǔ)言簡(jiǎn)介1.1.1 C語(yǔ)言的特點(diǎn)1簡(jiǎn)潔緊湊、靈活方便2運(yùn)算符豐富 3數(shù)據(jù)類型豐富4表達(dá)方式靈活實(shí)用 5允許直接訪問(wèn)物理地址,對(duì)硬件進(jìn)行操作 6生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高 7可移植性好 第1章 C語(yǔ)言概述1.2 C語(yǔ)言程序結(jié)構(gòu)我們通過(guò)一個(gè)簡(jiǎn)單的例子說(shuō)明C語(yǔ)言程序的結(jié)構(gòu)?!纠?-1】#include int main( )/*主函數(shù):求兩數(shù)之和*/ int a,b,sum;/*定義三個(gè)變量a,b,sum*/ a=2;b=4;/*給a、b賦值*/ sum=a+b;/求和的結(jié)果賦給sum printf(%d +%d =%d,a,b,sum);/輸出sum的值 return
3、0;第1章 C語(yǔ)言概述1.2 C語(yǔ)言程序結(jié)構(gòu)C語(yǔ)言程序的結(jié)構(gòu):(1)C程序是由函數(shù)構(gòu)成的,每一個(gè)函數(shù)完成相對(duì)獨(dú)立的功能。一個(gè)程序可以由多個(gè)函數(shù)組成,但至少包含一個(gè)函數(shù),即main函數(shù),它稱為主函數(shù),程序總是從main函數(shù)開(kāi)始執(zhí)行,并在main函數(shù)中結(jié)束的。(2)C語(yǔ)言程序通常使用英文小寫(xiě)字母書(shū)寫(xiě),只有符號(hào)常量或其他特殊用途的符號(hào)才使用大寫(xiě)。應(yīng)該注意的是,C語(yǔ)言對(duì)大小寫(xiě)是區(qū)分的,它們代表著不同的字符。(3)C語(yǔ)言程序是由一條條語(yǔ)句組成的,每個(gè)語(yǔ)句都具有規(guī)定的語(yǔ)法格式和特定的功能。上面程序中,printf()是輸出變量數(shù)值的函數(shù)調(diào)用語(yǔ)句;a=2是賦值語(yǔ)句。(4)C語(yǔ)句以分號(hào)(;)結(jié)束,分號(hào)是語(yǔ)句不
4、可缺少的組成部分。第1章 C語(yǔ)言概述1.2 C語(yǔ)言程序結(jié)構(gòu)C語(yǔ)言程序的結(jié)構(gòu):(5)C語(yǔ)言程序中,一個(gè)語(yǔ)句可以占用多行,一行也可以有多個(gè)語(yǔ)句。(6)C語(yǔ)言程序中使用大括號(hào)“”和“”來(lái)表示程序的結(jié)構(gòu)層次范圍。一個(gè)完整的程序模塊要用一對(duì)大括號(hào)括起來(lái),以表示該程序模塊的范圍。應(yīng)該注意的是,左大括號(hào)“”和右大括號(hào)“”應(yīng)該成對(duì)使用。(7)為了增加程序的可讀性,可以使用適量的空格和空行。但是,變量名、函數(shù)名和C語(yǔ)言保留字中間不能加入空格。除此之外的空格和空行可以任意設(shè)置,C語(yǔ)言編譯系統(tǒng)是不會(huì)理會(huì)這些空格和空行的。(8)可以用*或 / 對(duì)C程序中的任何部分作注釋。一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注
5、釋,以增加程序的可讀性。第1章 C語(yǔ)言概述1.3 C語(yǔ)言程序的執(zhí)行1.3.1 C程序調(diào)試步驟1編輯編輯是建立或修改C源程序文件的過(guò)程,并以文件的形式存儲(chǔ)在磁盤(pán)上,C源程序文件的擴(kuò)展名為“.c”。 2編譯與連接編譯是通過(guò)編譯器將源程序轉(zhuǎn)換為機(jī)器代碼,生成目標(biāo)程序的過(guò)程。在C語(yǔ)言源程序的編譯過(guò)程中,可以檢查出程序中的語(yǔ)法錯(cuò)誤。連接是把一個(gè)C語(yǔ)言應(yīng)用程序與所用到的庫(kù)函數(shù)以及其他目標(biāo)程序連接為一個(gè)整體,生成可執(zhí)行文件(*.exe)的過(guò)程。3運(yùn)行生成的可執(zhí)行文件,既可在編譯系統(tǒng)環(huán)境下運(yùn)行,也可以脫離編譯系統(tǒng)直接執(zhí)行。4其他操作修改系統(tǒng)路徑;調(diào)試程序;打開(kāi)源程序等。 第1章 C語(yǔ)言概述1.3 C語(yǔ)言程序的
6、執(zhí)行1.3.1使用Visual C+調(diào)試C語(yǔ)言程序1. 啟動(dòng)Visual C+6.0開(kāi)發(fā)環(huán)境第1章 C語(yǔ)言概述1.3 C語(yǔ)言程序的執(zhí)行1.3.1使用Visual C+調(diào)試C語(yǔ)言程序2. 建立C語(yǔ)言源程序文件第1章 C語(yǔ)言概述1.3 C語(yǔ)言程序的執(zhí)行1.3.1使用Visual C+調(diào)試C語(yǔ)言程序3.編輯C語(yǔ)言程序的內(nèi)容第1章 C語(yǔ)言概述1.3 C語(yǔ)言程序的執(zhí)行1.3.1使用Visual C+調(diào)試C語(yǔ)言程序4.建立并運(yùn)行可執(zhí)行程序(1)在“組建”菜單中單擊“編譯”,建立目標(biāo)文件。(2)在“組建”菜單中單擊“組建”,建立可執(zhí)行程序。第1章 C語(yǔ)言概述1.3 C語(yǔ)言程序的執(zhí)行1.3.1使用Visual
7、 C+調(diào)試C語(yǔ)言程序4.建立并運(yùn)行可執(zhí)行程序根據(jù)錯(cuò)誤信息提示對(duì)源程序文件進(jìn)行修改之后,再重新對(duì)源文件進(jìn)行編譯、構(gòu)建,即可建立可執(zhí)行文件。(3)在“組建”菜單中單擊“執(zhí)行”,運(yùn)行程序,就會(huì)彈出一個(gè)窗口,顯示程序的運(yùn)行結(jié)果第1章 C語(yǔ)言概述1.3 C語(yǔ)言程序的執(zhí)行1.3.1使用Visual C+調(diào)試C語(yǔ)言程序5. 關(guān)閉程序如果想在不關(guān)閉軟件的情況下,編輯運(yùn)行另外一個(gè)程序,需要關(guān)閉上一次運(yùn)行的工作空間,方法是選擇“文件”菜單中的“關(guān)閉工作空間”命令,這樣才能再編輯、編譯一個(gè)新的程序,否則即使新建了一個(gè)新的C語(yǔ)言源程序文件,新編輯了一個(gè)程序,但仍然會(huì)編譯上一次的那個(gè)程序,所以一定要關(guān)閉工作空間。另外,
8、創(chuàng)建C程序文件時(shí),可以更改程序的存放位置。寫(xiě)好程序以后,也可以依次按Ctrl+F7、F7、Ctrl+F5三對(duì)組合鍵編譯并運(yùn)行程序。第1章 C語(yǔ)言概述1.4 VC+運(yùn)行C程序說(shuō)明1.4.1編輯程序在編輯過(guò)程中,當(dāng)輸入一個(gè)C語(yǔ)言的關(guān)鍵字時(shí),Visual C+系統(tǒng)自動(dòng)將其設(shè)定為藍(lán)色字體以示區(qū)別。如果輸入了一個(gè)塊結(jié)構(gòu)語(yǔ)句(如for(i=0;i10;i+)、while(n (大于) = (大于等于) b, x=2, ab字符的比較是按ASCII碼值的大小進(jìn)行比較。因此,ab的結(jié)果為0。第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.6 數(shù)據(jù)的基本運(yùn)算2.6.4 邏輯運(yùn)算符和邏輯表達(dá)式1邏輯運(yùn)算符C語(yǔ)言提供了三種邏輯
9、運(yùn)算符:&(邏輯與)| (邏輯或)! (邏輯非)第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.6 數(shù)據(jù)的基本運(yùn)算2.6.4 邏輯運(yùn)算符和邏輯表達(dá)式2優(yōu)先級(jí)和結(jié)合性邏輯運(yùn)算符的優(yōu)先級(jí)由高到低依次為: ! & |與其它運(yùn)算符相比,&和|運(yùn)算符低于關(guān)系運(yùn)算符,!高于算術(shù)運(yùn)算符。即:! 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 & | 賦值運(yùn)算符邏輯運(yùn)算符的結(jié)合性為“左結(jié)合”。第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.6 數(shù)據(jù)的基本運(yùn)算2.6.4 邏輯運(yùn)算符和邏輯表達(dá)式3邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來(lái)的式子稱為邏輯表達(dá)式。例如:a&b, a|b, (x0)&(y0)說(shuō)明:(1)若x=1,y=2,則(x0)&(y0)
10、的值為1。(2)a,b,c三數(shù)中a為最大的條件是:(ab)&(ac)。(3)若a=4,則!a的值為0。在邏輯運(yùn)算中,將非零值認(rèn)作為1,因此它的邏輯非值就是0。第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.6 數(shù)據(jù)的基本運(yùn)算2.6.5 逗號(hào)運(yùn)算符C語(yǔ)言提供一種特殊的運(yùn)算符逗號(hào)運(yùn)算符,它將兩個(gè)表達(dá)式連接起來(lái)。如:3+5,6+9稱為逗號(hào)表達(dá)式。逗號(hào)表達(dá)式的一般形式為:表達(dá)式1,表達(dá)式2,表達(dá)式n逗號(hào)表達(dá)式的求解過(guò)程是:先求解表達(dá)式1的值,再求表達(dá)式2的值。整個(gè)逗號(hào)表達(dá)式的值是最后那個(gè)表達(dá)式的值。第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.7 混合運(yùn)算2.7.1 系統(tǒng)自動(dòng)轉(zhuǎn)換整型、單精度型、雙精度型數(shù)據(jù)可以混合運(yùn)算。前
11、已述及,字符型數(shù)據(jù)可以與整型通用,因此,整型、實(shí)型(包括單、雙精度)、字符型數(shù)據(jù)間可以混合運(yùn)算。例如: 10+ a+1.5-8765.1234+ b是合法的。在進(jìn)行運(yùn)算時(shí),不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進(jìn)行運(yùn)算。第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.7 混合運(yùn)算2.7.2 強(qiáng)制類型轉(zhuǎn)換可以使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式轉(zhuǎn)換成所需類型。例如:(double)a(將a轉(zhuǎn)換成double類型)(int)(x+y)(將x+y的值轉(zhuǎn)換成整型)(float)(5%3)(將5%3的值轉(zhuǎn)換成float類型)其一般形式為:(類型名)(表達(dá)式)第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式2.7 混合運(yùn)算2.7.2
12、強(qiáng)制類型轉(zhuǎn)換第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式本章結(jié)束!第3章 順序結(jié)構(gòu)程序設(shè)計(jì)本章主要內(nèi)容:3.1 格式化輸出printf()(重點(diǎn))3.2 格式化輸入scanf()(重點(diǎn))3.3 字符的輸入輸出3.4 順序結(jié)構(gòu)程序設(shè)計(jì)舉例本章教學(xué)要求:熟悉順序結(jié)構(gòu)程序設(shè)計(jì)的特點(diǎn) 掌握格式化輸入輸出函數(shù)的使用方法3.1 格式化輸出printf()3.1.1 printf的一般格式格式:printf(格式控制,輸出表列);1格式控制 格式控制是用雙引號(hào)括起來(lái)的字符串,它包括格式說(shuō)明和普通字符兩部分。(1)格式說(shuō)明 格式說(shuō)明由“%”和格式字符組成,它的作用是說(shuō)明計(jì)算機(jī)中的數(shù)值將以何種形式顯示在屏幕上。第3章 順序
13、結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()(2)普通字符 普通字符是需要原樣輸出的字符。如:x=、y= 。普通字符的使用使輸出結(jié)果更加清晰、易懂。比如,輸出結(jié)果x=5就比只輸出5更容易使人理解。例如: float x; printf(x=%fn,x);第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()2 輸出表列 輸出表列是需要輸出的數(shù)據(jù),它可以是常量、變量或表達(dá)式,各輸出項(xiàng)之間以逗號(hào)作為間隔。執(zhí)行printf函數(shù)時(shí)輸出項(xiàng)將按格式符指定的格式輸出。【例3-1】分析下列程序的執(zhí)行結(jié)果。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()3.1.2 格式字符C語(yǔ)言中的格式字符主要
14、有以下幾種,如表3-1所示。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf() 1輸出整型數(shù)據(jù)的格式字符d:按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。md:m為指定的輸出寬度。若數(shù)據(jù)位數(shù)小于m,當(dāng)m為正數(shù)時(shí),則左端補(bǔ)空格;當(dāng)m為負(fù)數(shù)時(shí),則右端補(bǔ)空格。若數(shù)據(jù)位數(shù)大于m,按實(shí)際位數(shù)輸出。ld:用于輸出長(zhǎng)整型數(shù)據(jù)。o:以八進(jìn)制數(shù)形式輸出。x:以十六進(jìn)制數(shù)形式輸出。u:以無(wú)符號(hào)型整數(shù)形式輸出。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()【例3-2】#include int main() int a,b; a=123,b=12345; printf(*%d*,*%d*n,a,b); printf(
15、*%5d*,*%4d*n,a,b); printf(*%-5d*,*%-4d*n,a,b); return 0;第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()【例3-3】#include int main() long x; x=123456; printf(%ldn,x); return 0;程序運(yùn)行結(jié)果:123456第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()【例3-4】 #include int main() int a,b,c; a=10;b=010;c=0 x10; printf(%d,%o,%xn,a,b,c); printf(%d,%d,%dn,a,b,
16、c); return 0; 程序運(yùn)行結(jié)果:10,10,1010,8,16第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()【例3-5】#include int main() unsigned int a; a=4294967295; printf(%u,%dn,a,a); return 0;程序運(yùn)行結(jié)果:4294967295,-1第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()2輸出實(shí)型數(shù)據(jù)的格式字符f:以小數(shù)形式輸出實(shí)數(shù),保留6位小數(shù)。m.nf:輸出數(shù)據(jù)共占m位,其中有n位小數(shù),小數(shù)點(diǎn)占1位。如果數(shù)據(jù)長(zhǎng)度小于m,則左端補(bǔ)空格,即數(shù)據(jù)右對(duì)齊;-m.nf: 當(dāng)數(shù)據(jù)長(zhǎng)度小于m時(shí),
17、右端補(bǔ)空格,即數(shù)據(jù)左對(duì)齊?!纠?-6】第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()【例3-7】 #include int main() float x=123.456; printf(%fn,x); printf(*%-10.3f*n,x); printf(*%10.1f*n,x); return 0;第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf()【例3-8】#include int main() float r=2.5,s; s=3.14*r*r; printf(s=%fn,s); printf(s=%.2fn,s); return 0;第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.
18、1 格式化輸出printf() 3輸出字符型數(shù)據(jù)的格式符c:輸出單個(gè)字符。mc:按指定寬度m輸出字符。若m為正值,則輸出字符右對(duì)齊;若m為負(fù)值,則輸出字符左對(duì)齊?!纠?-9】第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.1 格式化輸出printf() 4輸出字符串的格式符s:按實(shí)際長(zhǎng)度輸出字符串。ms:按指定寬度m輸出字符串。當(dāng)m為正數(shù)時(shí),字符串右對(duì)齊輸出;m為負(fù)數(shù)時(shí),字符串左對(duì)齊輸出;如果m小于字符串長(zhǎng)度,則按實(shí)際長(zhǎng)度輸出。m.ns:只輸出字符串的前n個(gè)字符,共占m列。當(dāng)m為正數(shù)時(shí),字符串右對(duì)齊輸出;m為負(fù)數(shù)時(shí),字符串左對(duì)齊輸出。【例3-10】第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()3.2.1
19、 scanf的一般格式格式:scanf(格式字符,地址表列); 例如:scanf(%d,&a);說(shuō)明:(1)“地址表列”是變量的內(nèi)存地址,它是通過(guò)對(duì)變量的“求地址”運(yùn)算得到的,“”就是求地址運(yùn)算符。(2)scanf函數(shù)也使用格式符,格式符的作用是表示用戶想要將輸入的文本轉(zhuǎn)換為何種形式存儲(chǔ)在內(nèi)存中。第3章 順序結(jié)構(gòu)的程序設(shè)計(jì)第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()3.2.2 scanf的用法1整型、實(shí)型數(shù)據(jù)的輸入scanf(“%d,%d,%d”,&a,&b,&c);scanf(%d%d%d,&a,&b,&c); 如果格式符之間以逗號(hào)間隔,則輸入的數(shù)據(jù)間也要以逗號(hào)間隔。 比如,要給
20、變量a、b、c分別賦值1、2、3,則在執(zhí)行時(shí)輸入數(shù)據(jù)如下: 1,2,3第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()【例3-11】#include int main()int a,b;float c,d;scanf(%d,%d,&a,&b);scanf(%f,%f,&c,&d);printf(%d,%d,%.1f,%.1fn,a,b,c,d); return 0;第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()【例3-12】#include int main()float a,b;scanf(%f%f,&a,&b);printf(a=%.1f b=%.1fn,a,b); re
21、turn 0;程序運(yùn)行結(jié)果:2.5凵 2.6a=2.5 b=2.6第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()(3)scanf(a=%d,b=%d,&a,&b); 若要給a、b分別賦值為1、2,則運(yùn)行時(shí)輸入: a=1,b=2【例3-13】#include int main()int a,b,c,d;scanf(a=%d,b=%dn,&a,&b);scanf(c:%d,d:%d,&c,&d);printf(%d %d %d %dn,a,b,c,d); return 0;第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()【例3-14】#include int main()int
22、a;printf(輸入年齡:);scanf(%d,&a);printf(年齡:%dn,a); return 0;程序運(yùn)行結(jié)果:輸入年齡:10年齡:10第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()2字符型數(shù)據(jù)的輸入scanf(%c,%c,%c,&a,&b,&c); 在字符輸入時(shí),如果scanf中的格式符間以逗號(hào)間隔,輸入數(shù)據(jù)時(shí),字符間也以逗號(hào)間隔。scanf(“%c%c%c”,&a,&b,&c); 在字符輸入時(shí),如果scanf中的格式符間沒(méi)有間隔,輸入數(shù)據(jù)時(shí),字符要連續(xù)輸入。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()【例3-15】#include int main()c
23、har a,b,c;scanf(%c,%c,%c,&a,&b,&c);printf(%c%c%cn,a,b,c); return 0;第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()【例3-16】#include int main()char a,b,c;scanf(%c%c%c,&a,&b,&c);printf(%c%c%cn,a,b,c); return 0;程序運(yùn)行結(jié)果:youyou第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.2 格式化輸入scanf()【例3-17】編寫(xiě)程序,求圓面積。分析:圓面積的計(jì)算公式為:s=r2,因?yàn)殒I盤(pán)上不能輸入,所以用3.14代替。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.3 字
24、符的輸入輸出getchar()和putchar()3.3.1 getchar函數(shù)格式:變量=getchar();【例3-18】第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.3 字符的輸入輸出getchar()和putchar()3.3.2 putchar函數(shù)格式:putchar(c);【例3-19】第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.4 順序結(jié)構(gòu)程序設(shè)計(jì)舉例【例3-20】求一元二次方程ax2+bx+c=0的根。 分析: 要用計(jì)算機(jī)解方程,必須給出求解方程的算法,對(duì)于一元二次方程ax2+bx+c=0來(lái)說(shuō),就是要給出求根公式。給公式中的變量賦值,計(jì)算機(jī)就可以求出方程的根了。 因?yàn)榍蟾街杏玫搅似椒礁瘮?shù)sqrt(x),所
25、以程序必須將數(shù)學(xué)頭文件:math.h包含到程序中。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.4 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 【例3-21】輸入任意三個(gè)整數(shù),求和及平均值。分析: 編寫(xiě)該程序時(shí),有兩個(gè)地方需要注意: 定義變量時(shí),平均值變量aver要定義為實(shí)型,不能定義為整型,否則誤差太大。求平均值時(shí),sum除以實(shí)數(shù)3.0,而不是除以整數(shù)3,如果除數(shù)和被除數(shù)都是整數(shù),那么商也將是一個(gè)整數(shù),這樣也會(huì)造成誤差大的錯(cuò)誤。第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.4 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 【例3-22】從鍵盤(pán)輸入一個(gè)小寫(xiě)字母,將其轉(zhuǎn)換為大寫(xiě)字母輸出。分析: 大寫(xiě)字母的ASCII碼值等于小寫(xiě)字母的ASCII碼值減32。 第3章 順序結(jié)構(gòu)程序
26、設(shè)計(jì)3.4 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 【例3-23】輸入三角形的三條邊,求三角形面積。三角形面積的計(jì)算公式為:分析: 為簡(jiǎn)單起見(jiàn),設(shè)輸入的三條邊a、b、c能構(gòu)成三角形,所以讀者運(yùn)行程序時(shí),給變量的賦值必須保證三邊長(zhǎng)的值可以構(gòu)成三角形,否則運(yùn)行結(jié)果將是錯(cuò)誤的。 第3章 順序結(jié)構(gòu)程序設(shè)計(jì)3.4 順序結(jié)構(gòu)程序設(shè)計(jì)舉例 【例3-24】在屏幕上用“*”畫(huà)出一個(gè)三角形。程序如下:#include int main() printf( *n); printf( *n); printf( *n); printf( *n); printf( *n); return 0; 第3章 順序結(jié)構(gòu)程序設(shè)計(jì)本章結(jié)束!第4章 選
27、擇結(jié)構(gòu)程序設(shè)計(jì)本章主要內(nèi)容:4.1 if 語(yǔ)句(重點(diǎn))4.2 switch語(yǔ)句4.3 選擇結(jié)構(gòu)程序設(shè)計(jì)舉例(重點(diǎn))本章教學(xué)要求:了解選擇結(jié)構(gòu)的特點(diǎn) 熟悉選擇結(jié)構(gòu)程序設(shè)計(jì)的一般方法 掌握 if 語(yǔ)句和 switch 語(yǔ)句的使用方法 4.1 if語(yǔ)句 if 語(yǔ)句也稱為條件語(yǔ)句,它根據(jù)一個(gè)條件的真和假有選擇地執(zhí)行或不執(zhí)行某個(gè)語(yǔ)句。C語(yǔ)言提供了三種形式的if語(yǔ)句,可以實(shí)現(xiàn)單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu)。4.1.1 復(fù)合語(yǔ)句復(fù)合語(yǔ)句是用一對(duì)大括號(hào)“ ”括起來(lái)的一組語(yǔ)句。 復(fù)合語(yǔ)句的一般形式為: 說(shuō)明部分; 語(yǔ)句部分; 第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句注意: 復(fù)合語(yǔ)句中的右大括號(hào)“
28、”后面沒(méi)有分號(hào); 一個(gè)復(fù)合語(yǔ)句在語(yǔ)法上等價(jià)于單個(gè)語(yǔ)句,凡一個(gè)語(yǔ)句能夠出現(xiàn)的地方都能出現(xiàn)復(fù)合語(yǔ)句,換句話說(shuō),復(fù)合語(yǔ)句在邏輯上是一個(gè)語(yǔ)句; 復(fù)合語(yǔ)句中說(shuō)明部分的變量,其作用域只限于該復(fù)合語(yǔ)句內(nèi)部,在復(fù)合語(yǔ)句外無(wú)意義; 后面將要介紹的if子句和else子句以及while、for的循環(huán)體,在語(yǔ)法上均看作為單個(gè)語(yǔ)句,若需要多個(gè)語(yǔ)句,必須寫(xiě)成復(fù)合語(yǔ)句的形式。另外,函數(shù)體語(yǔ)法上也是一個(gè)復(fù)合語(yǔ)句,但復(fù)合語(yǔ)句可以嵌套,而函數(shù)體中不可以嵌套函數(shù)。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句4.1.2 單分支 if 語(yǔ)句格式: if(表達(dá)式) 語(yǔ)句;功能:先計(jì)算表達(dá)式的值,如果表達(dá)式的值為真(非0值),則執(zhí)行其后的語(yǔ)句
29、,否則,跳過(guò)該語(yǔ)句,執(zhí)行if語(yǔ)句的后續(xù)語(yǔ)句。其流程圖如圖4-1所示。第4章 選擇結(jié)構(gòu)的程序設(shè)計(jì)4.1 if語(yǔ)句說(shuō)明:(1)表達(dá)式通常是關(guān)系表達(dá)式或邏輯表達(dá)式,也可以是任意類型的表達(dá)式(如整型、實(shí)型、字符型等)。在if語(yǔ)句的判斷中只要表達(dá)式的值為非0,就執(zhí)行表達(dá)式后面的語(yǔ)句。(2)表達(dá)式兩側(cè)的圓括號(hào)不能省略。(3)格式中的語(yǔ)句可以是單個(gè)語(yǔ)句,也可以是復(fù)合語(yǔ)句。如: if(ac,則交換其值,使得bc。這樣就得到了由小到大的順序。 由于篇幅所限,這里程序只運(yùn)行了一次,理論上,要測(cè)試程序正確,需要驗(yàn)證程序的每一個(gè)分支。對(duì)于本例,需要把a(bǔ)、b、c排序的三種情況都測(cè)試一次,才能證明程序是正確的。 第4章
30、選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句4.1.3 雙分支 if 語(yǔ)句格式: if(表達(dá)式) 語(yǔ)句1; else 語(yǔ)句2;功能:先計(jì)算表達(dá)式的值,當(dāng)表達(dá)式的值為真(非0值),則執(zhí)行語(yǔ)句1;否則執(zhí)行語(yǔ)句2。其流程圖如圖4-2所示。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句說(shuō)明:(1)if 和else 是C語(yǔ)言的關(guān)鍵字,且else 不是獨(dú)立的語(yǔ)句,它是if語(yǔ)句的一部分。使用時(shí)else必須與if成對(duì)使用,共同組成一條if-else 語(yǔ)句。(2)“語(yǔ)句1”稱為if子句 ,“語(yǔ)句2”稱為else子句,它們可以是單個(gè)語(yǔ)句或是復(fù)合語(yǔ)句。(3)在此形式的if語(yǔ)句中,無(wú)論if子句或else子句形式上多么復(fù)雜,它們都是if
31、或else的子語(yǔ)句,分別代表雙分支選擇結(jié)構(gòu)的分支之一,不要把子語(yǔ)句理解為獨(dú)立的語(yǔ)句。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句【例4-4】輸入三個(gè)整數(shù),輸出最大值。分析:假設(shè)三個(gè)數(shù)為a、b、c,先求出a和b中的大者,再將其和c比較,就可得出三數(shù)中的最大值。思考:如果程序中if(mc),該分支的語(yǔ)句將如何變化?請(qǐng)讀者自行修改練習(xí),并比較兩種用法。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句4.1.4 多分支 if 語(yǔ)句格式:if(表達(dá)式1) 語(yǔ)句1;else if(表達(dá)式2) 語(yǔ)句2;else if(表達(dá)式3) 語(yǔ)句3;else if(表達(dá)式n) 語(yǔ)句n;else 語(yǔ)句n+1;功能:依次判斷表達(dá)式的值
32、,如果其中一個(gè)表達(dá)式的值非0,則執(zhí)行相應(yīng)的語(yǔ)句,然后跳出整個(gè)if語(yǔ)句繼續(xù)執(zhí)行后續(xù)語(yǔ)句。如果所有的表達(dá)式都為0,則執(zhí)行語(yǔ)句n+1,然后執(zhí)行后續(xù)語(yǔ)句。其流程圖如圖4-3所示。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句說(shuō)明:(1)無(wú)論有多少分支的if-else if語(yǔ)句,它們都是一個(gè)if語(yǔ)句,在分析程序時(shí)尤其要注意這點(diǎn),不要把一個(gè)多分支if語(yǔ)句理解為多個(gè)語(yǔ)句。(2)最后一個(gè)else常作為缺省條件,即當(dāng)前面的條件表達(dá)式測(cè)試都失敗時(shí),則執(zhí)行語(yǔ)句n+1?!纠?-6】輸入一個(gè)百分制成績(jī),要求輸出其對(duì)應(yīng)的五級(jí)制的等級(jí),即90分以上為A,8089為B,7079為C,6069為D,60分以下為E。思考:如果程序中i
33、f(mc),該分支的語(yǔ)句將如何變化?請(qǐng)讀者自行修改練習(xí),并比較兩種用法。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.1 if語(yǔ)句4.1.5 條件運(yùn)算符 ?: C語(yǔ)言提供一種簡(jiǎn)單方式來(lái)表示if-else 語(yǔ)句的一種形式。這被稱為條件表達(dá)式,使用條件運(yùn)算符“?:”實(shí)現(xiàn),格式:表達(dá)式1 ?表達(dá)式2 :表達(dá)式3功能:如果表達(dá)式1為真(非0),整個(gè)條件表達(dá)式的值等于表達(dá)式2的值,否則,整個(gè)條件表達(dá)式的值等于表達(dá)式3的值。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.2 switch語(yǔ)句switch語(yǔ)句的功能與if-else if類似,都是用來(lái)解決多分支選擇問(wèn)題的。但是,在某些情況下,switch語(yǔ)句使用更加方便。 4.2.1 switc
34、h語(yǔ)句格式: switch(表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句序列1; case 常量表達(dá)式2: 語(yǔ)句序列2; case 常量表達(dá)式n: 語(yǔ)句序列n; default:語(yǔ)句序列; 第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.2 switch語(yǔ)句switch語(yǔ)句的執(zhí)行過(guò)程: 先計(jì)算switch表達(dá)式的值,然后將該值與各case后面的常量表達(dá)式的值進(jìn)行比較。當(dāng)其值與某一常量表達(dá)式的值相同時(shí),就從該case后面的語(yǔ)句開(kāi)始執(zhí)行,直到switch語(yǔ)句結(jié)束時(shí)為止;若其值與所有的常量表達(dá)式的值都不相同,就執(zhí)行default后面的語(yǔ)句,若不存在default,則程序繼續(xù)執(zhí)行switch語(yǔ)句之后的語(yǔ)句。第4章 選擇結(jié)構(gòu)程
35、序設(shè)計(jì)4.2 switch語(yǔ)句說(shuō)明:(1)switch表達(dá)式是選擇條件,可以為任何類型。(2)case后面的常量表達(dá)式是值為常數(shù)的表達(dá)式,通常為常量或符號(hào)常量。類型必須和switch表達(dá)式的類型相同;(3)switch語(yǔ)句中的所有case常量表達(dá)式的值必須各不相同;(4)每個(gè)case(稱為一種情況)下可以有零或多個(gè)語(yǔ)句,有多個(gè)語(yǔ)句時(shí)可以不加。(5)當(dāng)switch找到與表達(dá)式相匹配的case時(shí),將從該case開(kāi)始,執(zhí)行其后的所有分支,直到switch語(yǔ)句結(jié)束。如果希望程序只執(zhí)行與表達(dá)式相匹配的case,其它不執(zhí)行,則需要使用break語(yǔ)句。break語(yǔ)句的作用是,使程序的執(zhí)行跳出switch語(yǔ)句
36、,執(zhí)行switch語(yǔ)句后面的語(yǔ)句。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.2 switch語(yǔ)句【例4-7】運(yùn)行下列程序,熟悉switch的用法。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.2 switch語(yǔ)句【例4-8】運(yùn)行下列程序,寫(xiě)出運(yùn)行結(jié)果。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.2 switch語(yǔ)句【例4-9】從鍵盤(pán)輸入兩個(gè)實(shí)數(shù)和一個(gè)四則運(yùn)算符(、)執(zhí)行相應(yīng)的運(yùn)算并輸出運(yùn)算結(jié)果。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.2 switch語(yǔ)句4.2.2 switch 和if-else 在解決多分支選擇問(wèn)題時(shí),用switch或者用if-else通常是沒(méi)有一定之規(guī)的。如果選擇是基于求實(shí)型變量或表達(dá)式的值,就不能使用switch。如果變量必須落入
37、某個(gè)范圍,也不能很方便地使用switch。這樣寫(xiě)是很簡(jiǎn)單的: if(變量1&變量0:兩個(gè)不等實(shí)根; b2-4ac=0:兩個(gè)相等實(shí)根; b2-4ac0:兩個(gè)共軛復(fù)根。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.3 選擇結(jié)構(gòu)程序設(shè)計(jì)舉例【例4-11】輸入三角形的三條邊,求三角形面積。三角形面積的計(jì)算公式為:分析: 第3章曾經(jīng)做過(guò)這道題,當(dāng)時(shí)要求運(yùn)行程序時(shí)輸入的三邊長(zhǎng)必須能夠構(gòu)成一個(gè)三角形,否則程序?qū)⒊霈F(xiàn)錯(cuò)誤。構(gòu)成三角形的條件是任意兩邊之和大于第三邊,現(xiàn)在使用條件語(yǔ)句可以很方便地解決這個(gè)問(wèn)題。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.3 選擇結(jié)構(gòu)程序設(shè)計(jì)實(shí)例【例4-12】編寫(xiě)程序,將百分制成績(jī)轉(zhuǎn)換為五級(jí)制成績(jī)。轉(zhuǎn)換方法: 成績(jī)9
38、0分:優(yōu) 80成績(jī)90分:良 70成績(jī)80分:中 60成績(jī)70分:及格 成績(jī)60分:不及格第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)4.3 選擇結(jié)構(gòu)程序設(shè)計(jì)舉例【例4-13】輸入年月日,判斷其為該年度的第幾天。分析: 以2015年8月29日為例,要判斷這一天是2015年的第幾天,需要將前7個(gè)月的天數(shù)求和,再加29。所以,switch(m-1)結(jié)構(gòu)從case 7分支進(jìn)入,一直向下執(zhí)行,直到case 0為止,求出了1-7月份天數(shù)的累加和,再加上8月份的天數(shù),正好是241天。2月份是個(gè)特殊的月份,要判斷是否為閏年。第4章 選擇結(jié)構(gòu)程序設(shè)計(jì)本章結(jié)束!第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)本章主要內(nèi)容:5.1 for 語(yǔ)句(重點(diǎn))5.
39、2 while 語(yǔ)句(重點(diǎn))5.3 do-while 語(yǔ)句5.4 break 和 continue 語(yǔ)句5.5 多重循環(huán)(重點(diǎn))5.6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例本章教學(xué)要求:了解循環(huán)結(jié)構(gòu)的概念 熟悉循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的方法 掌握while、do-while、for循環(huán)控制語(yǔ)句的使用方法。 5.1 for 語(yǔ)句本節(jié)主要介紹循環(huán)結(jié)構(gòu)的概念以及循環(huán)結(jié)構(gòu)程序能解決的問(wèn)題。 循環(huán)結(jié)構(gòu)的概念定義:循環(huán)是指在所設(shè)計(jì)的程序中,有條件地反復(fù)執(zhí)行某一段程序的現(xiàn)象。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中一種很重要的結(jié)構(gòu),又稱為重復(fù)結(jié)構(gòu)。循環(huán)的特點(diǎn):在給定條件成立時(shí),反復(fù)執(zhí)行某個(gè)程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)
40、執(zhí)行的程序段稱為循環(huán)體。循環(huán)結(jié)構(gòu)的分類:當(dāng)型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu)。 循環(huán)條件和循環(huán)體設(shè)置不好,很可能得不到預(yù)期的結(jié)果,甚至出現(xiàn)死循環(huán)。 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 for 語(yǔ)句5.1.1 for語(yǔ)句的格式for語(yǔ)句的一般格式為:for(表達(dá)式;表達(dá)式;表達(dá)式) 語(yǔ)句;其中:表達(dá)式1: 為循環(huán)變量賦初值表達(dá)式2: 為循環(huán)繼續(xù)的條件表達(dá)式3: 為循環(huán)變量的增值語(yǔ)句: 又被稱為循環(huán)體,它是當(dāng)表達(dá)式2為真(非0)時(shí)要重復(fù)執(zhí)行的語(yǔ)句,它可以由一條語(yǔ)句或復(fù)合語(yǔ)句組成。 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 for 語(yǔ)句5.1.2 for語(yǔ)句的執(zhí)行過(guò)程(1)計(jì)算表達(dá)式1的值,給循環(huán)變量賦初值,表達(dá)式僅在進(jìn)
41、入for語(yǔ)句時(shí)執(zhí)行一次。(2)判斷表達(dá)式2的值,若其為“真”(非0),則執(zhí)行循環(huán)體語(yǔ)句,然后轉(zhuǎn)到第(3)步;若其為“假”(0),則結(jié)束循環(huán),執(zhí)行for語(yǔ)句的下一條語(yǔ)句。(3)計(jì)算表達(dá)式3的值。表達(dá)式3改變循環(huán)變量的值,它在每次執(zhí)行完循環(huán)體語(yǔ)句之后,都要被執(zhí)行一次。然后返回第(2)步繼續(xù)執(zhí)行。 for語(yǔ)句的執(zhí)行過(guò)程流程圖如圖5-1所示。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 for 語(yǔ)句第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 for 語(yǔ)句說(shuō)明:(1)for語(yǔ)句的使用非常靈活,它的三個(gè)表達(dá)式可以省略1個(gè)或2個(gè),也可以3個(gè)都省略,但間隔符“;”必須保留。例如:下列程序段把i=1提到for語(yǔ)句之前,省略了表達(dá)式1。
42、int i=1;s=0; for( ;i=100 ;i+) s=s+I;例如:下列兩個(gè)程序段均為死循環(huán),因?yàn)楸磉_(dá)式2的值永遠(yuǎn)為真。(2)在for語(yǔ)句中,表達(dá)式1和表達(dá)式3都可以是一項(xiàng)或是多項(xiàng),多于一項(xiàng)時(shí),各項(xiàng)之間用“,”分隔,形成逗號(hào)表達(dá)式。 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 for 語(yǔ)句5.1.3 for語(yǔ)句的用法【例5-1】編程計(jì)算s=1+2+3+.+100,用for語(yǔ)句實(shí)現(xiàn)。 依照此程序,請(qǐng)讀者自行完成下列編程題: 計(jì)算:s=1+3+5+.+99 計(jì)算:s=1+2+3+.+n第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 for 語(yǔ)句【例5-2】編程求n!。分析:n!=1*2*3*n。求階乘時(shí)需要賦初值為
43、1,不能是0,因?yàn)?乘任何數(shù)都是0如果n值較大,n!可能溢出,應(yīng)將結(jié)果變量說(shuō)明為float或double類型。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.1 for 語(yǔ)句【例5-3】把100200之間能被7整除的數(shù)輸出。分析:能被7整除的數(shù)是:x%7=0#include int main() int i;for(i=100;i=200;i+) if(i%7=0) printf(%5d,i);printf(n);return 0;第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.2 while語(yǔ)句5.2.1 while語(yǔ)句的格式while語(yǔ)句的一般格式為: while(表達(dá)式) 語(yǔ)句;其中:(1)“表達(dá)式”是循環(huán)條件,可以為任何類型
44、表達(dá)式,表達(dá)式必須用( )括起來(lái);(2)“語(yǔ)句”又被稱為循環(huán)體,為C語(yǔ)言中的任何一種語(yǔ)句(包括復(fù)合語(yǔ)句、if語(yǔ)句、case 語(yǔ)句)。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.2 while語(yǔ)句5.2.2 while語(yǔ)句的執(zhí)行過(guò)程while語(yǔ)句的執(zhí)行過(guò)程如下:(1)計(jì)算表達(dá)式的值,并判斷其為“真”(非0)或“假”(0)。(2)若表達(dá)式的值為“真”,則執(zhí)行循環(huán)體語(yǔ)句,然后返回到while語(yǔ)句重復(fù)第(1)步;若表達(dá)式的值為“假”,則結(jié)束循環(huán),執(zhí)行while語(yǔ)句的下一語(yǔ)句。while語(yǔ)句的執(zhí)行過(guò)程如圖5-2所示。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.2 while語(yǔ)句說(shuō)明:(1)while語(yǔ)句的特點(diǎn)是:先判斷表達(dá)式,后執(zhí)行循
45、環(huán)體語(yǔ)句。如果第一次判斷表達(dá)式的值為“假”,則循環(huán)體語(yǔ)句一次也不執(zhí)行。(2)循環(huán)體語(yǔ)句可以是一條語(yǔ)句,也可以是復(fù)合語(yǔ)句。(3)循環(huán)結(jié)構(gòu)由循環(huán)條件和循環(huán)體語(yǔ)句構(gòu)成,在循環(huán)體中應(yīng)該包含使循環(huán)趨向于結(jié)束的語(yǔ)句,否則會(huì)形成死循環(huán)。程序中應(yīng)避免出現(xiàn)死循環(huán)。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.2 while語(yǔ)句5.2.3 while語(yǔ)句的用法【例5-5】輸出一行數(shù)字0 1 2 3 4,要求每個(gè)數(shù)字中間空3格。#include int main()int i;i=0;while(i5) printf(%4d,i+);printf(n);return 0; 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.2 while語(yǔ)句【例5-6】將
46、輸入的正文復(fù)制到輸出,每次一個(gè)字符。分析:以 E0F 為結(jié)束標(biāo)志的字符流稱為一個(gè)正文,可以包含空白字符,例如空格 和換行字符n。鍵入 Ctrl+z則 getchar 函數(shù)返回文件結(jié)束字符 EOF。程序中:c=getchar(); while(c!=EOF) putchar(c); c=getchar(); 可簡(jiǎn)化為:while(c=getchar()!=EOF) putchar(c);第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.2 while語(yǔ)句【例5-7】輸入一行字符,分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字的個(gè)數(shù)。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.3 do-while語(yǔ)句5.3.1 do-while語(yǔ)句的格式do-w
47、hile語(yǔ)句的一般格式為:do 語(yǔ)句;while(表達(dá)式);其中:(1)語(yǔ)句部分可以是簡(jiǎn)單語(yǔ)句或復(fù)合語(yǔ)句;(2)表達(dá)式是循環(huán)條件,可以是任何類型表達(dá)式,表達(dá)式必須用()括起來(lái)。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.3 do-while語(yǔ)句5.3.2 do-while語(yǔ)句的執(zhí)行過(guò)程do-while語(yǔ)句的執(zhí)行過(guò)程如下:(1)執(zhí)行循環(huán)體語(yǔ)句;(2)計(jì)算表達(dá)式的值,判斷其為“真”(非0)或“假”(0)。若為“真”,則返回第1步,繼續(xù)執(zhí)行循環(huán)體;若為“假”,則結(jié)束循環(huán),執(zhí)行do-while語(yǔ)句的下一語(yǔ)句。do-while語(yǔ)句的執(zhí)行過(guò)程如圖5-3所示。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.3 do-while語(yǔ)句說(shuō)明:(1)
48、do-while語(yǔ)句和while都能實(shí)現(xiàn)循環(huán)控制,while結(jié)構(gòu)的程序通常都可以轉(zhuǎn)換成do-while結(jié)構(gòu);(2)do-while語(yǔ)句與while語(yǔ)句的區(qū)別是:while語(yǔ)句先判斷循環(huán)條件是否滿足,如果滿足再執(zhí)行循環(huán)體,因此有可能一次也不執(zhí)行循環(huán)體;而do-while語(yǔ)句是先執(zhí)行一次循環(huán)體,然后再判斷循環(huán)條件是否滿足,因此,循環(huán)體至少要執(zhí)行一次。因此,do-while語(yǔ)句通常用于那些至少要執(zhí)行一次循環(huán)的情況。(3)do-while循環(huán)體中一定要有能使條件表達(dá)式值趨于0的操作,否則會(huì)出現(xiàn)死循環(huán)。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.3 do-while語(yǔ)句5.3.3 do-while語(yǔ)句的用法【例5-9】
49、計(jì)算: 直到最后一項(xiàng)的絕對(duì)值小于10-6為止。分析:這是一個(gè)求級(jí)數(shù)和問(wèn)題,方法是依次計(jì)算每一項(xiàng),并將該項(xiàng)與前面各項(xiàng)之和累加,如果某項(xiàng)絕對(duì)值小于10-6(反映精度),則求和結(jié)束,否則,重復(fù)上述過(guò)程。從式子的第二項(xiàng)起,每一項(xiàng)都是前一項(xiàng)乘以一個(gè)因子: (-x2)/(n*(n-1) (n=3,5,7,9,)如果用t表示每一項(xiàng)的值,則: t=t*(-x2)/(n*(n-1) (n=3,5,7,9,)第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.3 do-while語(yǔ)句5.3.4 三種循環(huán)語(yǔ)句比較 當(dāng)程序中需要用到循環(huán)語(yǔ)句時(shí),選擇哪個(gè)語(yǔ)句和個(gè)人使用習(xí)慣有關(guān),但一般來(lái)說(shuō)有以下一些流行的風(fēng)格。(1)for語(yǔ)句適合循環(huán)次數(shù)已知的
50、情況。(2)while語(yǔ)句適合循環(huán)次數(shù)不確定,但已知循環(huán)條件。(3)do-while語(yǔ)句與while語(yǔ)句可以互通使用,但do-while更適合于至少循環(huán)一次的情況。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.4 break和continue語(yǔ)句5.4.1 break語(yǔ)句格式:break;功能:結(jié)束循環(huán),執(zhí)行循環(huán)語(yǔ)句的下一語(yǔ)句。break語(yǔ)句只能用于下面兩種情況:(1)出現(xiàn)在循環(huán)語(yǔ)句的循環(huán)體中,當(dāng)循環(huán)條件還未變?yōu)榧贂r(shí)提前結(jié)束循環(huán)語(yǔ)句的執(zhí)行(強(qiáng)行退出循環(huán))。(2)出現(xiàn)在switch語(yǔ)句中,使程序中途退出switch語(yǔ)句,即跳過(guò)break語(yǔ)句之后直到switch語(yǔ)句體結(jié)束的所有語(yǔ)句。除上述兩處外,其他位置均不能出現(xiàn)
51、break語(yǔ)句。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.4 break和continue語(yǔ)句【例5-10】編寫(xiě)程序,用循環(huán)計(jì)算圓面積,如果輸入非數(shù)字半徑則結(jié)束循環(huán)。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.4 break和continue語(yǔ)句5.4.2 continue語(yǔ)句格式:continue;功能:終止循環(huán)體的本次執(zhí)行,控制轉(zhuǎn)移到循環(huán)體的末尾,循環(huán)是否繼續(xù)取決于循環(huán)條件是否滿足。continue語(yǔ)句只能出現(xiàn)在循環(huán)語(yǔ)句的循環(huán)體中。例如:for(i=0;i10;i+) ch=getchar(); if(ch=n) continue; putchar(); 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.5 多重循環(huán)5.5.1 多重循環(huán)的格
52、式多重循環(huán)的格式如下:while(表達(dá)式) for( 表達(dá)式1;表達(dá)式2;表達(dá)式3 ) 以上循環(huán)就構(gòu)成了雙重循環(huán)。三種循環(huán)語(yǔ)句(for、while、do-while)均可以互相嵌套形成多重循環(huán)結(jié)構(gòu)。需要注意,內(nèi)外層循環(huán)是完整的,相互之間不允許交叉。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.5 多重循環(huán)5.5.2 多重循環(huán)的執(zhí)行過(guò)程下面以一個(gè)雙重循環(huán)的程序?yàn)槔?,說(shuō)明多重循環(huán)的執(zhí)行過(guò)程?!纠?-11】寫(xiě)出下列程序的運(yùn)行結(jié)果。 本例中:i 循環(huán)稱為外層循環(huán),控制輸出幾行j 循環(huán)稱為內(nèi)層循環(huán),控制一行輸出幾列第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.5 多重循環(huán)5.5.3 多重循環(huán)的使用【例5-12】編程計(jì)算:s=1!+3!+5
53、!第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.5 多重循環(huán)【例5-13】求Fibonacci數(shù)列:1,1,2,3,5,8, 的前40項(xiàng)。分析:Fibonacci的規(guī)律是:數(shù)列從第3項(xiàng)開(kāi)始,每項(xiàng)都是其前兩項(xiàng)之和。即: a=1;b=1; a=a+b;b=a+b; a=a+b;b=a+b; 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.5 多重循環(huán)【例5-14】打印下列圖形: ABCDEF BCDEF CDEF DEF EF F第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例【例5-15】任意10個(gè)數(shù),求正數(shù)的個(gè)數(shù)及正數(shù)和。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例【例5-16】輸出三位數(shù)中的“水仙花數(shù)”。 水仙花數(shù)是
54、指一個(gè)3位數(shù) ,其各位數(shù)字的 3次冪之和等于該數(shù)本身。例如,153是一個(gè)“水仙花數(shù)”,153=13+53+33分析:本題的關(guān)鍵是要分離出3位數(shù)的百位、十位和個(gè)位數(shù)字。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例【例5-17】將一張100元的人民幣換成10元、5元和1元的零鈔,一共有幾種兌換方法。分析:因?yàn)?0元最多只能有2張,20元最多有5張,10元最多有10張,也可以一張也沒(méi)有,所以三個(gè)循環(huán)的范圍分別是:02、05、010第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例【例5-18】百馬百擔(dān)問(wèn)題:有100匹馬,馱100擔(dān)貨,大馬馱3擔(dān),中馬馱2擔(dān),兩匹小馬馱1擔(dān),問(wèn)有大、中、小馬
55、各多少。分析:符合本題輸出的條件: 馬的總數(shù)等于100; 貨的總數(shù)等于100; 小馬數(shù)必須是偶數(shù)。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)5.6 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例【例5-19】打印下列圖形: * * * *分析:本題需要用到雙重循環(huán),外層循環(huán)(i循環(huán))控制打印4行,內(nèi)層循環(huán)(j循環(huán))控制打印列,每列2*i-1個(gè)。k循環(huán)用于打印每行的前導(dǎo)空格。第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)本章結(jié)束!第6章 數(shù)組本章主要內(nèi)容:6.1 數(shù)組的概念6.2 一維數(shù)組(重點(diǎn))6.3 二維數(shù)組(重點(diǎn))6.4 字符數(shù)組 本章教學(xué)要求:了解數(shù)組中數(shù)據(jù)的存儲(chǔ)方法 熟悉數(shù)組的概念、數(shù)組元素的表示方法掌握數(shù)組的編程方法6.1 數(shù)組的基本概念本節(jié)介紹數(shù)
56、組的定義和數(shù)組程序設(shè)計(jì)要解決的問(wèn)題。 6.1.1 數(shù)組解決的問(wèn)題類型相同的一組數(shù)的存儲(chǔ)類型相同一組數(shù)的處理通過(guò)對(duì)下標(biāo)的控制實(shí)現(xiàn)對(duì)數(shù)組的處理: 循環(huán)變量控制下標(biāo) 處理的數(shù)組映射到下標(biāo)如:40個(gè)學(xué)生成績(jī)的存儲(chǔ) 100個(gè)整數(shù)的排序第6章 數(shù)組6.1 數(shù)組的基本概念本節(jié)介紹數(shù)組的定義和數(shù)組程序設(shè)計(jì)要解決的問(wèn)題。 6.1.2 數(shù)組的基本概念數(shù)組就是計(jì)算機(jī)內(nèi)存中的一塊連續(xù)的存儲(chǔ)區(qū)域,用來(lái)存儲(chǔ)數(shù)據(jù)類型相同的一組數(shù)據(jù)。數(shù)組通過(guò)數(shù)組名來(lái)表示。數(shù)組名的命名規(guī)則與變量名相同。數(shù)組名就代表整個(gè)數(shù)組的首地址,即第一個(gè)數(shù)組元素的地址。 數(shù)組中的成員稱為數(shù)組元素,數(shù)組是通過(guò)數(shù)組元素訪問(wèn)它的每個(gè)成員的。數(shù)組元素是一個(gè)具體的變
57、量,也稱為下標(biāo)變量。數(shù)組元素的表示形式為:數(shù)組名下標(biāo) 使用:數(shù)組遵循先定義后使用的原則,未定義的數(shù)組不能使用。數(shù)組元素如同其它基本變量一樣,可以被賦值,也可以在表達(dá)式中使用。分類:根據(jù)數(shù)組下標(biāo)的多少,數(shù)組可分為一維數(shù)組和多維數(shù)組。 第6章 數(shù)組6.2 一維數(shù)組本節(jié)主要介紹一維數(shù)組的定義和使用。 6.2.1 一維數(shù)組的定義1一維數(shù)組的定義形式一維數(shù)組是指帶一個(gè)下標(biāo)的數(shù)組,用來(lái)存儲(chǔ)一組類型相同的數(shù)據(jù)。定義形式 :類型說(shuō)明符 數(shù)組名常量表達(dá)式; 注意:類型說(shuō)明符是任一種基本數(shù)據(jù)類型或構(gòu)造數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標(biāo)識(shí)符。方括號(hào)中的常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),也稱為數(shù)組的長(zhǎng)度。 第6章 數(shù)組6
58、.2 一維數(shù)組6.2.1 一維數(shù)組的定義1一維數(shù)組的定義例如:int a10; float b20,s40; 說(shuō)明:數(shù)組名也是標(biāo)識(shí)符,其命名規(guī)則要符合標(biāo)識(shí)符的規(guī)定。常量表達(dá)式表示數(shù)組元素的個(gè)數(shù),其值必須大于等于1。常量表達(dá)式中可以包括常量和符號(hào)常量,但不能包含變量。定義數(shù)組時(shí),數(shù)組長(zhǎng)度可以用符號(hào)常量表示。 一個(gè)數(shù)組定義語(yǔ)句中可以定義多個(gè)相同類型的數(shù)組,也可以和其他相同類型的變量一起定義,用“,”隔開(kāi)。 第6章 數(shù)組6.2 一維數(shù)組6.2.1 一維數(shù)組的定義2一維數(shù)組元素的引用一維數(shù)組元素的引用形式:數(shù)組名下標(biāo)例如:int a5數(shù)組a有5個(gè)數(shù)組元素:a0、a1、a2、a3、a4。注意:不能使用數(shù)
59、組元素a5,其下標(biāo)已越界。說(shuō)明:下標(biāo)表示該元素在數(shù)組中的位置,它可以是整型常量、整型變量或整型表達(dá)式。如:a3、ai+j、ai+。 C語(yǔ)言規(guī)定,數(shù)組元素下標(biāo)從0開(kāi)始,最大下標(biāo)為數(shù)組長(zhǎng)度減1。數(shù)組元素可以像一個(gè)獨(dú)立的簡(jiǎn)單變量來(lái)使用。如:a0=a1+a2-a5-1; 第6章 數(shù)組6.2 一維數(shù)組6.2.1 一維數(shù)組的定義3一維數(shù)組的存儲(chǔ)形式數(shù)組是有序的同類數(shù)據(jù)的集合,它在計(jì)算機(jī)內(nèi)部的存儲(chǔ)也是有序的。在編譯時(shí),系統(tǒng)根據(jù)數(shù)組的定義為數(shù)組分配一個(gè)連續(xù)的存儲(chǔ)區(qū)域,數(shù)組元素按下標(biāo)由小到大的次序連續(xù)存放,下標(biāo)為0的元素排在前面,每個(gè)元素占據(jù)的存儲(chǔ)空間大小與同類型的簡(jiǎn)單變量相同。例如:int a5a數(shù)組中每個(gè)元
60、素在內(nèi)存占4個(gè)字節(jié)的存儲(chǔ)空間,各元素連續(xù)存放的示意圖如圖6-1所示。 第6章 數(shù)組6.2 一維數(shù)組6.2.2 一維數(shù)組的使用1一維數(shù)組的初始化數(shù)組初始化賦值是指指在定義數(shù)組的同時(shí)對(duì)數(shù)組元素賦初始值。將各數(shù)組元素的初值寫(xiě)在花括號(hào)“”中,用逗號(hào)隔開(kāi)。數(shù)組初始化是在編譯階段進(jìn)行的,這樣可以減少運(yùn)行時(shí)間,提高運(yùn)行效率。初始化格式:類型名 數(shù)組名元素個(gè)數(shù)=初始值列表;(1)對(duì)全部元素賦初值。例如:int a10= 0,1,2,3,4,5,6,7,8,9 ;各數(shù)組元素的初始值依次為:a0=0、a1=1、a2=2、a3=3、a4=4、a5=5、a6=6、a7=7、a8=8、a9=9。 也可以不指定數(shù)組的長(zhǎng)度
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)濟(jì)仲裁協(xié)議書(shū)格式
- 小區(qū)門(mén)頭購(gòu)買(mǎi)協(xié)議書(shū)
- 企業(yè)履約監(jiān)管協(xié)議書(shū)
- 土方完工結(jié)算協(xié)議書(shū)
- 租賃輪椅使用協(xié)議書(shū)
- 景觀小品轉(zhuǎn)讓協(xié)議書(shū)
- 集體農(nóng)田轉(zhuǎn)讓協(xié)議書(shū)
- 舞蹈老師合伙協(xié)議書(shū)
- 消防裝備評(píng)估協(xié)議書(shū)
- 臨時(shí)簡(jiǎn)易購(gòu)房協(xié)議書(shū)
- 湖南省炎德英才名校聯(lián)考聯(lián)合體2024-2025學(xué)年高二下學(xué)期3月月考-數(shù)學(xué)+答案
- 蔬菜水果食材配送服務(wù)投標(biāo)方案(技術(shù)方案)
- 《高效能NLP溝通技巧》課件
- 電力應(yīng)急物資儲(chǔ)備與管理
- 中國(guó)公民健康素養(yǎng)-基本知識(shí)與技能(2024年版)試題及答案
- 【語(yǔ)文】第三單元整本書(shū)閱讀《駱駝祥子》圈點(diǎn)、批注、做筆記課件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 新目錄監(jiān)理規(guī)劃2025
- 2024年天翼云認(rèn)證運(yùn)維工程師考試復(fù)習(xí)題庫(kù)(含答案)
- 儲(chǔ)能項(xiàng)目竣工報(bào)告
- 《偉大的友誼》(配套PPT)課件
- 松脂采割技術(shù)
評(píng)論
0/150
提交評(píng)論