《C語言程序設計》PPT-教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案合集最新_第1頁
《C語言程序設計》PPT-教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案合集最新_第2頁
《C語言程序設計》PPT-教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案合集最新_第3頁
《C語言程序設計》PPT-教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案合集最新_第4頁
《C語言程序設計》PPT-教材課件匯總完整版ppt全套課件最全教學教程整本書電子教案全書教案合集最新_第5頁
已閱讀5頁,還剩425頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第1章 C語言概述本章主要內容:1.1 C語言簡介1.2 C語言程序結構1.3 C語言程序的執(zhí)行(重點)1.4 VC+運行C程序說明(重點)本章教學要求:了解C語言的基本特點 熟悉C程序的基本結構掌握使用VC+運行C語言程序的方法步1.1 C語言簡介1.1.1 C語言的發(fā)展史C語言之所以命名為C,是因為 C語言源自Ken Thompson發(fā)明的B語言1983年由美國國家標準局(American National Standards Institute,簡稱ANSI)開始制定C語言標準,于1989年12月完成,并在1990年春天發(fā)布,稱之為ANSI C,有時也被稱為 C89 或 C90。第1章

2、C語言概述1.1 C語言簡介1.1.1 C語言的特點1簡潔緊湊、靈活方便2運算符豐富 3數(shù)據(jù)類型豐富4表達方式靈活實用 5允許直接訪問物理地址,對硬件進行操作 6生成目標代碼質量高,程序執(zhí)行效率高 7可移植性好 第1章 C語言概述1.2 C語言程序結構我們通過一個簡單的例子說明C語言程序的結構。【例1-1】#include int main( )/*主函數(shù):求兩數(shù)之和*/ int a,b,sum;/*定義三個變量a,b,sum*/ a=2;b=4;/*給a、b賦值*/ sum=a+b;/求和的結果賦給sum printf(%d +%d =%d,a,b,sum);/輸出sum的值 return

3、0;第1章 C語言概述1.2 C語言程序結構C語言程序的結構:(1)C程序是由函數(shù)構成的,每一個函數(shù)完成相對獨立的功能。一個程序可以由多個函數(shù)組成,但至少包含一個函數(shù),即main函數(shù),它稱為主函數(shù),程序總是從main函數(shù)開始執(zhí)行,并在main函數(shù)中結束的。(2)C語言程序通常使用英文小寫字母書寫,只有符號常量或其他特殊用途的符號才使用大寫。應該注意的是,C語言對大小寫是區(qū)分的,它們代表著不同的字符。(3)C語言程序是由一條條語句組成的,每個語句都具有規(guī)定的語法格式和特定的功能。上面程序中,printf()是輸出變量數(shù)值的函數(shù)調用語句;a=2是賦值語句。(4)C語句以分號(;)結束,分號是語句不

4、可缺少的組成部分。第1章 C語言概述1.2 C語言程序結構C語言程序的結構:(5)C語言程序中,一個語句可以占用多行,一行也可以有多個語句。(6)C語言程序中使用大括號“”和“”來表示程序的結構層次范圍。一個完整的程序模塊要用一對大括號括起來,以表示該程序模塊的范圍。應該注意的是,左大括號“”和右大括號“”應該成對使用。(7)為了增加程序的可讀性,可以使用適量的空格和空行。但是,變量名、函數(shù)名和C語言保留字中間不能加入空格。除此之外的空格和空行可以任意設置,C語言編譯系統(tǒng)是不會理會這些空格和空行的。(8)可以用*或 / 對C程序中的任何部分作注釋。一個好的、有使用價值的源程序都應當加上必要的注

5、釋,以增加程序的可讀性。第1章 C語言概述1.3 C語言程序的執(zhí)行1.3.1 C程序調試步驟1編輯編輯是建立或修改C源程序文件的過程,并以文件的形式存儲在磁盤上,C源程序文件的擴展名為“.c”。 2編譯與連接編譯是通過編譯器將源程序轉換為機器代碼,生成目標程序的過程。在C語言源程序的編譯過程中,可以檢查出程序中的語法錯誤。連接是把一個C語言應用程序與所用到的庫函數(shù)以及其他目標程序連接為一個整體,生成可執(zhí)行文件(*.exe)的過程。3運行生成的可執(zhí)行文件,既可在編譯系統(tǒng)環(huán)境下運行,也可以脫離編譯系統(tǒng)直接執(zhí)行。4其他操作修改系統(tǒng)路徑;調試程序;打開源程序等。 第1章 C語言概述1.3 C語言程序的

6、執(zhí)行1.3.1使用Visual C+調試C語言程序1. 啟動Visual C+6.0開發(fā)環(huán)境第1章 C語言概述1.3 C語言程序的執(zhí)行1.3.1使用Visual C+調試C語言程序2. 建立C語言源程序文件第1章 C語言概述1.3 C語言程序的執(zhí)行1.3.1使用Visual C+調試C語言程序3.編輯C語言程序的內容第1章 C語言概述1.3 C語言程序的執(zhí)行1.3.1使用Visual C+調試C語言程序4.建立并運行可執(zhí)行程序(1)在“組建”菜單中單擊“編譯”,建立目標文件。(2)在“組建”菜單中單擊“組建”,建立可執(zhí)行程序。第1章 C語言概述1.3 C語言程序的執(zhí)行1.3.1使用Visual

7、 C+調試C語言程序4.建立并運行可執(zhí)行程序根據(jù)錯誤信息提示對源程序文件進行修改之后,再重新對源文件進行編譯、構建,即可建立可執(zhí)行文件。(3)在“組建”菜單中單擊“執(zhí)行”,運行程序,就會彈出一個窗口,顯示程序的運行結果第1章 C語言概述1.3 C語言程序的執(zhí)行1.3.1使用Visual C+調試C語言程序5. 關閉程序如果想在不關閉軟件的情況下,編輯運行另外一個程序,需要關閉上一次運行的工作空間,方法是選擇“文件”菜單中的“關閉工作空間”命令,這樣才能再編輯、編譯一個新的程序,否則即使新建了一個新的C語言源程序文件,新編輯了一個程序,但仍然會編譯上一次的那個程序,所以一定要關閉工作空間。另外,

8、創(chuàng)建C程序文件時,可以更改程序的存放位置。寫好程序以后,也可以依次按Ctrl+F7、F7、Ctrl+F5三對組合鍵編譯并運行程序。第1章 C語言概述1.4 VC+運行C程序說明1.4.1編輯程序在編輯過程中,當輸入一個C語言的關鍵字時,Visual C+系統(tǒng)自動將其設定為藍色字體以示區(qū)別。如果輸入了一個塊結構語句(如for(i=0;i10;i+)、while(n (大于) = (大于等于) b, x=2, ab字符的比較是按ASCII碼值的大小進行比較。因此,ab的結果為0。第2章 數(shù)據(jù)類型、運算符和表達式2.6 數(shù)據(jù)的基本運算2.6.4 邏輯運算符和邏輯表達式1邏輯運算符C語言提供了三種邏輯

9、運算符:&(邏輯與)| (邏輯或)! (邏輯非)第2章 數(shù)據(jù)類型、運算符和表達式2.6 數(shù)據(jù)的基本運算2.6.4 邏輯運算符和邏輯表達式2優(yōu)先級和結合性邏輯運算符的優(yōu)先級由高到低依次為: ! & |與其它運算符相比,&和|運算符低于關系運算符,!高于算術運算符。即:! 算術運算符 關系運算符 & | 賦值運算符邏輯運算符的結合性為“左結合”。第2章 數(shù)據(jù)類型、運算符和表達式2.6 數(shù)據(jù)的基本運算2.6.4 邏輯運算符和邏輯表達式3邏輯表達式用邏輯運算符將關系表達式或邏輯量連接起來的式子稱為邏輯表達式。例如:a&b, a|b, (x0)&(y0)說明:(1)若x=1,y=2,則(x0)&(y0)

10、的值為1。(2)a,b,c三數(shù)中a為最大的條件是:(ab)&(ac)。(3)若a=4,則!a的值為0。在邏輯運算中,將非零值認作為1,因此它的邏輯非值就是0。第2章 數(shù)據(jù)類型、運算符和表達式2.6 數(shù)據(jù)的基本運算2.6.5 逗號運算符C語言提供一種特殊的運算符逗號運算符,它將兩個表達式連接起來。如:3+5,6+9稱為逗號表達式。逗號表達式的一般形式為:表達式1,表達式2,表達式n逗號表達式的求解過程是:先求解表達式1的值,再求表達式2的值。整個逗號表達式的值是最后那個表達式的值。第2章 數(shù)據(jù)類型、運算符和表達式2.7 混合運算2.7.1 系統(tǒng)自動轉換整型、單精度型、雙精度型數(shù)據(jù)可以混合運算。前

11、已述及,字符型數(shù)據(jù)可以與整型通用,因此,整型、實型(包括單、雙精度)、字符型數(shù)據(jù)間可以混合運算。例如: 10+ a+1.5-8765.1234+ b是合法的。在進行運算時,不同類型的數(shù)據(jù)要先轉換成同一類型,然后進行運算。第2章 數(shù)據(jù)類型、運算符和表達式2.7 混合運算2.7.2 強制類型轉換可以使用強制類型轉換運算符將一個表達式轉換成所需類型。例如:(double)a(將a轉換成double類型)(int)(x+y)(將x+y的值轉換成整型)(float)(5%3)(將5%3的值轉換成float類型)其一般形式為:(類型名)(表達式)第2章 數(shù)據(jù)類型、運算符和表達式2.7 混合運算2.7.2

12、強制類型轉換第2章 數(shù)據(jù)類型、運算符和表達式本章結束!第3章 順序結構程序設計本章主要內容:3.1 格式化輸出printf()(重點)3.2 格式化輸入scanf()(重點)3.3 字符的輸入輸出3.4 順序結構程序設計舉例本章教學要求:熟悉順序結構程序設計的特點 掌握格式化輸入輸出函數(shù)的使用方法3.1 格式化輸出printf()3.1.1 printf的一般格式格式:printf(格式控制,輸出表列);1格式控制 格式控制是用雙引號括起來的字符串,它包括格式說明和普通字符兩部分。(1)格式說明 格式說明由“%”和格式字符組成,它的作用是說明計算機中的數(shù)值將以何種形式顯示在屏幕上。第3章 順序

13、結構程序設計3.1 格式化輸出printf()(2)普通字符 普通字符是需要原樣輸出的字符。如:x=、y= 。普通字符的使用使輸出結果更加清晰、易懂。比如,輸出結果x=5就比只輸出5更容易使人理解。例如: float x; printf(x=%fn,x);第3章 順序結構程序設計3.1 格式化輸出printf()2 輸出表列 輸出表列是需要輸出的數(shù)據(jù),它可以是常量、變量或表達式,各輸出項之間以逗號作為間隔。執(zhí)行printf函數(shù)時輸出項將按格式符指定的格式輸出?!纠?-1】分析下列程序的執(zhí)行結果。第3章 順序結構程序設計3.1 格式化輸出printf()3.1.2 格式字符C語言中的格式字符主要

14、有以下幾種,如表3-1所示。第3章 順序結構程序設計3.1 格式化輸出printf() 1輸出整型數(shù)據(jù)的格式字符d:按整型數(shù)據(jù)的實際長度輸出。md:m為指定的輸出寬度。若數(shù)據(jù)位數(shù)小于m,當m為正數(shù)時,則左端補空格;當m為負數(shù)時,則右端補空格。若數(shù)據(jù)位數(shù)大于m,按實際位數(shù)輸出。ld:用于輸出長整型數(shù)據(jù)。o:以八進制數(shù)形式輸出。x:以十六進制數(shù)形式輸出。u:以無符號型整數(shù)形式輸出。第3章 順序結構程序設計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章 順序結構程序設計3.1 格式化輸出printf()【例3-3】#include int main() long x; x=123456; printf(%ldn,x); return 0;程序運行結果:123456第3章 順序結構程序設計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; 程序運行結果:10,10,1010,8,16第3章 順序結構程序設計3.1 格式化輸出printf()【例3-5】#include int main() unsigned int a; a=4294967295; printf(%u,%dn,a,a); return 0;程序運行結果:4294967295,-1第3章 順序結構程序設計3.1 格式化輸出printf()2輸出實型數(shù)據(jù)的格式字符f:以小數(shù)形式輸出實數(shù),保留6位小數(shù)。m.nf:輸出數(shù)據(jù)共占m位,其中有n位小數(shù),小數(shù)點占1位。如果數(shù)據(jù)長度小于m,則左端補空格,即數(shù)據(jù)右對齊;-m.nf: 當數(shù)據(jù)長度小于m時,

17、右端補空格,即數(shù)據(jù)左對齊?!纠?-6】第3章 順序結構程序設計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章 順序結構程序設計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章 順序結構程序設計3.

18、1 格式化輸出printf() 3輸出字符型數(shù)據(jù)的格式符c:輸出單個字符。mc:按指定寬度m輸出字符。若m為正值,則輸出字符右對齊;若m為負值,則輸出字符左對齊?!纠?-9】第3章 順序結構程序設計3.1 格式化輸出printf() 4輸出字符串的格式符s:按實際長度輸出字符串。ms:按指定寬度m輸出字符串。當m為正數(shù)時,字符串右對齊輸出;m為負數(shù)時,字符串左對齊輸出;如果m小于字符串長度,則按實際長度輸出。m.ns:只輸出字符串的前n個字符,共占m列。當m為正數(shù)時,字符串右對齊輸出;m為負數(shù)時,字符串左對齊輸出?!纠?-10】第3章 順序結構程序設計3.2 格式化輸入scanf()3.2.1

19、 scanf的一般格式格式:scanf(格式字符,地址表列); 例如:scanf(%d,&a);說明:(1)“地址表列”是變量的內存地址,它是通過對變量的“求地址”運算得到的,“”就是求地址運算符。(2)scanf函數(shù)也使用格式符,格式符的作用是表示用戶想要將輸入的文本轉換為何種形式存儲在內存中。第3章 順序結構的程序設計第3章 順序結構程序設計3.2 格式化輸入scanf()3.2.2 scanf的用法1整型、實型數(shù)據(jù)的輸入scanf(“%d,%d,%d”,&a,&b,&c);scanf(%d%d%d,&a,&b,&c); 如果格式符之間以逗號間隔,則輸入的數(shù)據(jù)間也要以逗號間隔。 比如,要給

20、變量a、b、c分別賦值1、2、3,則在執(zhí)行時輸入數(shù)據(jù)如下: 1,2,3第3章 順序結構程序設計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章 順序結構程序設計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;程序運行結果:2.5凵 2.6a=2.5 b=2.6第3章 順序結構程序設計3.2 格式化輸入scanf()(3)scanf(a=%d,b=%d,&a,&b); 若要給a、b分別賦值為1、2,則運行時輸入: 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章 順序結構程序設計3.2 格式化輸入scanf()【例3-14】#include int main()int

22、a;printf(輸入年齡:);scanf(%d,&a);printf(年齡:%dn,a); return 0;程序運行結果:輸入年齡:10年齡:10第3章 順序結構程序設計3.2 格式化輸入scanf()2字符型數(shù)據(jù)的輸入scanf(%c,%c,%c,&a,&b,&c); 在字符輸入時,如果scanf中的格式符間以逗號間隔,輸入數(shù)據(jù)時,字符間也以逗號間隔。scanf(“%c%c%c”,&a,&b,&c); 在字符輸入時,如果scanf中的格式符間沒有間隔,輸入數(shù)據(jù)時,字符要連續(xù)輸入。第3章 順序結構程序設計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章 順序結構程序設計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;程序運行結果:youyou第3章 順序結構程序設計3.2 格式化輸入scanf()【例3-17】編寫程序,求圓面積。分析:圓面積的計算公式為:s=r2,因為鍵盤上不能輸入,所以用3.14代替。第3章 順序結構程序設計3.3 字

24、符的輸入輸出getchar()和putchar()3.3.1 getchar函數(shù)格式:變量=getchar();【例3-18】第3章 順序結構程序設計3.3 字符的輸入輸出getchar()和putchar()3.3.2 putchar函數(shù)格式:putchar(c);【例3-19】第3章 順序結構程序設計3.4 順序結構程序設計舉例【例3-20】求一元二次方程ax2+bx+c=0的根。 分析: 要用計算機解方程,必須給出求解方程的算法,對于一元二次方程ax2+bx+c=0來說,就是要給出求根公式。給公式中的變量賦值,計算機就可以求出方程的根了。 因為求根公式中用到了平方根函數(shù)sqrt(x),所

25、以程序必須將數(shù)學頭文件:math.h包含到程序中。第3章 順序結構程序設計3.4 順序結構程序設計舉例 【例3-21】輸入任意三個整數(shù),求和及平均值。分析: 編寫該程序時,有兩個地方需要注意: 定義變量時,平均值變量aver要定義為實型,不能定義為整型,否則誤差太大。求平均值時,sum除以實數(shù)3.0,而不是除以整數(shù)3,如果除數(shù)和被除數(shù)都是整數(shù),那么商也將是一個整數(shù),這樣也會造成誤差大的錯誤。第3章 順序結構程序設計3.4 順序結構程序設計舉例 【例3-22】從鍵盤輸入一個小寫字母,將其轉換為大寫字母輸出。分析: 大寫字母的ASCII碼值等于小寫字母的ASCII碼值減32。 第3章 順序結構程序

26、設計3.4 順序結構程序設計舉例 【例3-23】輸入三角形的三條邊,求三角形面積。三角形面積的計算公式為:分析: 為簡單起見,設輸入的三條邊a、b、c能構成三角形,所以讀者運行程序時,給變量的賦值必須保證三邊長的值可以構成三角形,否則運行結果將是錯誤的。 第3章 順序結構程序設計3.4 順序結構程序設計舉例 【例3-24】在屏幕上用“*”畫出一個三角形。程序如下:#include int main() printf( *n); printf( *n); printf( *n); printf( *n); printf( *n); return 0; 第3章 順序結構程序設計本章結束!第4章 選

27、擇結構程序設計本章主要內容:4.1 if 語句(重點)4.2 switch語句4.3 選擇結構程序設計舉例(重點)本章教學要求:了解選擇結構的特點 熟悉選擇結構程序設計的一般方法 掌握 if 語句和 switch 語句的使用方法 4.1 if語句 if 語句也稱為條件語句,它根據(jù)一個條件的真和假有選擇地執(zhí)行或不執(zhí)行某個語句。C語言提供了三種形式的if語句,可以實現(xiàn)單分支選擇結構、雙分支選擇結構和多分支選擇結構。4.1.1 復合語句復合語句是用一對大括號“ ”括起來的一組語句。 復合語句的一般形式為: 說明部分; 語句部分; 第4章 選擇結構程序設計4.1 if語句注意: 復合語句中的右大括號“

28、”后面沒有分號; 一個復合語句在語法上等價于單個語句,凡一個語句能夠出現(xiàn)的地方都能出現(xiàn)復合語句,換句話說,復合語句在邏輯上是一個語句; 復合語句中說明部分的變量,其作用域只限于該復合語句內部,在復合語句外無意義; 后面將要介紹的if子句和else子句以及while、for的循環(huán)體,在語法上均看作為單個語句,若需要多個語句,必須寫成復合語句的形式。另外,函數(shù)體語法上也是一個復合語句,但復合語句可以嵌套,而函數(shù)體中不可以嵌套函數(shù)。第4章 選擇結構程序設計4.1 if語句4.1.2 單分支 if 語句格式: if(表達式) 語句;功能:先計算表達式的值,如果表達式的值為真(非0值),則執(zhí)行其后的語句

29、,否則,跳過該語句,執(zhí)行if語句的后續(xù)語句。其流程圖如圖4-1所示。第4章 選擇結構的程序設計4.1 if語句說明:(1)表達式通常是關系表達式或邏輯表達式,也可以是任意類型的表達式(如整型、實型、字符型等)。在if語句的判斷中只要表達式的值為非0,就執(zhí)行表達式后面的語句。(2)表達式兩側的圓括號不能省略。(3)格式中的語句可以是單個語句,也可以是復合語句。如: if(ac,則交換其值,使得bc。這樣就得到了由小到大的順序。 由于篇幅所限,這里程序只運行了一次,理論上,要測試程序正確,需要驗證程序的每一個分支。對于本例,需要把a、b、c排序的三種情況都測試一次,才能證明程序是正確的。 第4章

30、選擇結構程序設計4.1 if語句4.1.3 雙分支 if 語句格式: if(表達式) 語句1; else 語句2;功能:先計算表達式的值,當表達式的值為真(非0值),則執(zhí)行語句1;否則執(zhí)行語句2。其流程圖如圖4-2所示。第4章 選擇結構程序設計4.1 if語句說明:(1)if 和else 是C語言的關鍵字,且else 不是獨立的語句,它是if語句的一部分。使用時else必須與if成對使用,共同組成一條if-else 語句。(2)“語句1”稱為if子句 ,“語句2”稱為else子句,它們可以是單個語句或是復合語句。(3)在此形式的if語句中,無論if子句或else子句形式上多么復雜,它們都是if

31、或else的子語句,分別代表雙分支選擇結構的分支之一,不要把子語句理解為獨立的語句。第4章 選擇結構程序設計4.1 if語句【例4-4】輸入三個整數(shù),輸出最大值。分析:假設三個數(shù)為a、b、c,先求出a和b中的大者,再將其和c比較,就可得出三數(shù)中的最大值。思考:如果程序中if(mc),該分支的語句將如何變化?請讀者自行修改練習,并比較兩種用法。第4章 選擇結構程序設計4.1 if語句4.1.4 多分支 if 語句格式:if(表達式1) 語句1;else if(表達式2) 語句2;else if(表達式3) 語句3;else if(表達式n) 語句n;else 語句n+1;功能:依次判斷表達式的值

32、,如果其中一個表達式的值非0,則執(zhí)行相應的語句,然后跳出整個if語句繼續(xù)執(zhí)行后續(xù)語句。如果所有的表達式都為0,則執(zhí)行語句n+1,然后執(zhí)行后續(xù)語句。其流程圖如圖4-3所示。第4章 選擇結構程序設計4.1 if語句說明:(1)無論有多少分支的if-else if語句,它們都是一個if語句,在分析程序時尤其要注意這點,不要把一個多分支if語句理解為多個語句。(2)最后一個else常作為缺省條件,即當前面的條件表達式測試都失敗時,則執(zhí)行語句n+1?!纠?-6】輸入一個百分制成績,要求輸出其對應的五級制的等級,即90分以上為A,8089為B,7079為C,6069為D,60分以下為E。思考:如果程序中i

33、f(mc),該分支的語句將如何變化?請讀者自行修改練習,并比較兩種用法。第4章 選擇結構程序設計4.1 if語句4.1.5 條件運算符 ?: C語言提供一種簡單方式來表示if-else 語句的一種形式。這被稱為條件表達式,使用條件運算符“?:”實現(xiàn),格式:表達式1 ?表達式2 :表達式3功能:如果表達式1為真(非0),整個條件表達式的值等于表達式2的值,否則,整個條件表達式的值等于表達式3的值。第4章 選擇結構程序設計4.2 switch語句switch語句的功能與if-else if類似,都是用來解決多分支選擇問題的。但是,在某些情況下,switch語句使用更加方便。 4.2.1 switc

34、h語句格式: switch(表達式) case 常量表達式1: 語句序列1; case 常量表達式2: 語句序列2; case 常量表達式n: 語句序列n; default:語句序列; 第4章 選擇結構程序設計4.2 switch語句switch語句的執(zhí)行過程: 先計算switch表達式的值,然后將該值與各case后面的常量表達式的值進行比較。當其值與某一常量表達式的值相同時,就從該case后面的語句開始執(zhí)行,直到switch語句結束時為止;若其值與所有的常量表達式的值都不相同,就執(zhí)行default后面的語句,若不存在default,則程序繼續(xù)執(zhí)行switch語句之后的語句。第4章 選擇結構程

35、序設計4.2 switch語句說明:(1)switch表達式是選擇條件,可以為任何類型。(2)case后面的常量表達式是值為常數(shù)的表達式,通常為常量或符號常量。類型必須和switch表達式的類型相同;(3)switch語句中的所有case常量表達式的值必須各不相同;(4)每個case(稱為一種情況)下可以有零或多個語句,有多個語句時可以不加。(5)當switch找到與表達式相匹配的case時,將從該case開始,執(zhí)行其后的所有分支,直到switch語句結束。如果希望程序只執(zhí)行與表達式相匹配的case,其它不執(zhí)行,則需要使用break語句。break語句的作用是,使程序的執(zhí)行跳出switch語句

36、,執(zhí)行switch語句后面的語句。第4章 選擇結構程序設計4.2 switch語句【例4-7】運行下列程序,熟悉switch的用法。第4章 選擇結構程序設計4.2 switch語句【例4-8】運行下列程序,寫出運行結果。第4章 選擇結構程序設計4.2 switch語句【例4-9】從鍵盤輸入兩個實數(shù)和一個四則運算符(、)執(zhí)行相應的運算并輸出運算結果。第4章 選擇結構程序設計4.2 switch語句4.2.2 switch 和if-else 在解決多分支選擇問題時,用switch或者用if-else通常是沒有一定之規(guī)的。如果選擇是基于求實型變量或表達式的值,就不能使用switch。如果變量必須落入

37、某個范圍,也不能很方便地使用switch。這樣寫是很簡單的: if(變量1&變量0:兩個不等實根; b2-4ac=0:兩個相等實根; b2-4ac0:兩個共軛復根。第4章 選擇結構程序設計4.3 選擇結構程序設計舉例【例4-11】輸入三角形的三條邊,求三角形面積。三角形面積的計算公式為:分析: 第3章曾經(jīng)做過這道題,當時要求運行程序時輸入的三邊長必須能夠構成一個三角形,否則程序將出現(xiàn)錯誤。構成三角形的條件是任意兩邊之和大于第三邊,現(xiàn)在使用條件語句可以很方便地解決這個問題。第4章 選擇結構程序設計4.3 選擇結構程序設計實例【例4-12】編寫程序,將百分制成績轉換為五級制成績。轉換方法: 成績9

38、0分:優(yōu) 80成績90分:良 70成績80分:中 60成績70分:及格 成績60分:不及格第4章 選擇結構程序設計4.3 選擇結構程序設計舉例【例4-13】輸入年月日,判斷其為該年度的第幾天。分析: 以2015年8月29日為例,要判斷這一天是2015年的第幾天,需要將前7個月的天數(shù)求和,再加29。所以,switch(m-1)結構從case 7分支進入,一直向下執(zhí)行,直到case 0為止,求出了1-7月份天數(shù)的累加和,再加上8月份的天數(shù),正好是241天。2月份是個特殊的月份,要判斷是否為閏年。第4章 選擇結構程序設計本章結束!第5章 循環(huán)結構程序設計本章主要內容:5.1 for 語句(重點)5.

39、2 while 語句(重點)5.3 do-while 語句5.4 break 和 continue 語句5.5 多重循環(huán)(重點)5.6 循環(huán)結構程序設計舉例本章教學要求:了解循環(huán)結構的概念 熟悉循環(huán)結構程序設計的方法 掌握while、do-while、for循環(huán)控制語句的使用方法。 5.1 for 語句本節(jié)主要介紹循環(huán)結構的概念以及循環(huán)結構程序能解決的問題。 循環(huán)結構的概念定義:循環(huán)是指在所設計的程序中,有條件地反復執(zhí)行某一段程序的現(xiàn)象。循環(huán)結構是結構化程序設計中一種很重要的結構,又稱為重復結構。循環(huán)的特點:在給定條件成立時,反復執(zhí)行某個程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復

40、執(zhí)行的程序段稱為循環(huán)體。循環(huán)結構的分類:當型循環(huán)結構和直到型循環(huán)結構。 循環(huán)條件和循環(huán)體設置不好,很可能得不到預期的結果,甚至出現(xiàn)死循環(huán)。 第5章 循環(huán)結構程序設計5.1 for 語句5.1.1 for語句的格式for語句的一般格式為:for(表達式;表達式;表達式) 語句;其中:表達式1: 為循環(huán)變量賦初值表達式2: 為循環(huán)繼續(xù)的條件表達式3: 為循環(huán)變量的增值語句: 又被稱為循環(huán)體,它是當表達式2為真(非0)時要重復執(zhí)行的語句,它可以由一條語句或復合語句組成。 第5章 循環(huán)結構程序設計5.1 for 語句5.1.2 for語句的執(zhí)行過程(1)計算表達式1的值,給循環(huán)變量賦初值,表達式僅在進

41、入for語句時執(zhí)行一次。(2)判斷表達式2的值,若其為“真”(非0),則執(zhí)行循環(huán)體語句,然后轉到第(3)步;若其為“假”(0),則結束循環(huán),執(zhí)行for語句的下一條語句。(3)計算表達式3的值。表達式3改變循環(huán)變量的值,它在每次執(zhí)行完循環(huán)體語句之后,都要被執(zhí)行一次。然后返回第(2)步繼續(xù)執(zhí)行。 for語句的執(zhí)行過程流程圖如圖5-1所示。第5章 循環(huán)結構程序設計5.1 for 語句第5章 循環(huán)結構程序設計5.1 for 語句說明:(1)for語句的使用非常靈活,它的三個表達式可以省略1個或2個,也可以3個都省略,但間隔符“;”必須保留。例如:下列程序段把i=1提到for語句之前,省略了表達式1。

42、int i=1;s=0; for( ;i=100 ;i+) s=s+I;例如:下列兩個程序段均為死循環(huán),因為表達式2的值永遠為真。(2)在for語句中,表達式1和表達式3都可以是一項或是多項,多于一項時,各項之間用“,”分隔,形成逗號表達式。 第5章 循環(huán)結構程序設計5.1 for 語句5.1.3 for語句的用法【例5-1】編程計算s=1+2+3+.+100,用for語句實現(xiàn)。 依照此程序,請讀者自行完成下列編程題: 計算:s=1+3+5+.+99 計算:s=1+2+3+.+n第5章 循環(huán)結構程序設計5.1 for 語句【例5-2】編程求n!。分析:n!=1*2*3*n。求階乘時需要賦初值為

43、1,不能是0,因為0乘任何數(shù)都是0如果n值較大,n!可能溢出,應將結果變量說明為float或double類型。第5章 循環(huán)結構程序設計5.1 for 語句【例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)結構程序設計5.2 while語句5.2.1 while語句的格式while語句的一般格式為: while(表達式) 語句;其中:(1)“表達式”是循環(huán)條件,可以為任何類型

44、表達式,表達式必須用( )括起來;(2)“語句”又被稱為循環(huán)體,為C語言中的任何一種語句(包括復合語句、if語句、case 語句)。第5章 循環(huán)結構程序設計5.2 while語句5.2.2 while語句的執(zhí)行過程while語句的執(zhí)行過程如下:(1)計算表達式的值,并判斷其為“真”(非0)或“假”(0)。(2)若表達式的值為“真”,則執(zhí)行循環(huán)體語句,然后返回到while語句重復第(1)步;若表達式的值為“假”,則結束循環(huán),執(zhí)行while語句的下一語句。while語句的執(zhí)行過程如圖5-2所示。第5章 循環(huán)結構程序設計5.2 while語句說明:(1)while語句的特點是:先判斷表達式,后執(zhí)行循

45、環(huán)體語句。如果第一次判斷表達式的值為“假”,則循環(huán)體語句一次也不執(zhí)行。(2)循環(huán)體語句可以是一條語句,也可以是復合語句。(3)循環(huán)結構由循環(huán)條件和循環(huán)體語句構成,在循環(huán)體中應該包含使循環(huán)趨向于結束的語句,否則會形成死循環(huán)。程序中應避免出現(xiàn)死循環(huán)。第5章 循環(huán)結構程序設計5.2 while語句5.2.3 while語句的用法【例5-5】輸出一行數(shù)字0 1 2 3 4,要求每個數(shù)字中間空3格。#include int main()int i;i=0;while(i5) printf(%4d,i+);printf(n);return 0; 第5章 循環(huán)結構程序設計5.2 while語句【例5-6】將

46、輸入的正文復制到輸出,每次一個字符。分析:以 E0F 為結束標志的字符流稱為一個正文,可以包含空白字符,例如空格 和換行字符n。鍵入 Ctrl+z則 getchar 函數(shù)返回文件結束字符 EOF。程序中:c=getchar(); while(c!=EOF) putchar(c); c=getchar(); 可簡化為:while(c=getchar()!=EOF) putchar(c);第5章 循環(huán)結構程序設計5.2 while語句【例5-7】輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字的個數(shù)。第5章 循環(huán)結構程序設計5.3 do-while語句5.3.1 do-while語句的格式do-w

47、hile語句的一般格式為:do 語句;while(表達式);其中:(1)語句部分可以是簡單語句或復合語句;(2)表達式是循環(huán)條件,可以是任何類型表達式,表達式必須用()括起來。第5章 循環(huán)結構程序設計5.3 do-while語句5.3.2 do-while語句的執(zhí)行過程do-while語句的執(zhí)行過程如下:(1)執(zhí)行循環(huán)體語句;(2)計算表達式的值,判斷其為“真”(非0)或“假”(0)。若為“真”,則返回第1步,繼續(xù)執(zhí)行循環(huán)體;若為“假”,則結束循環(huán),執(zhí)行do-while語句的下一語句。do-while語句的執(zhí)行過程如圖5-3所示。第5章 循環(huán)結構程序設計5.3 do-while語句說明:(1)

48、do-while語句和while都能實現(xiàn)循環(huán)控制,while結構的程序通常都可以轉換成do-while結構;(2)do-while語句與while語句的區(qū)別是:while語句先判斷循環(huán)條件是否滿足,如果滿足再執(zhí)行循環(huán)體,因此有可能一次也不執(zhí)行循環(huán)體;而do-while語句是先執(zhí)行一次循環(huán)體,然后再判斷循環(huán)條件是否滿足,因此,循環(huán)體至少要執(zhí)行一次。因此,do-while語句通常用于那些至少要執(zhí)行一次循環(huán)的情況。(3)do-while循環(huán)體中一定要有能使條件表達式值趨于0的操作,否則會出現(xiàn)死循環(huán)。第5章 循環(huán)結構程序設計5.3 do-while語句5.3.3 do-while語句的用法【例5-9】

49、計算: 直到最后一項的絕對值小于10-6為止。分析:這是一個求級數(shù)和問題,方法是依次計算每一項,并將該項與前面各項之和累加,如果某項絕對值小于10-6(反映精度),則求和結束,否則,重復上述過程。從式子的第二項起,每一項都是前一項乘以一個因子: (-x2)/(n*(n-1) (n=3,5,7,9,)如果用t表示每一項的值,則: t=t*(-x2)/(n*(n-1) (n=3,5,7,9,)第5章 循環(huán)結構程序設計5.3 do-while語句5.3.4 三種循環(huán)語句比較 當程序中需要用到循環(huán)語句時,選擇哪個語句和個人使用習慣有關,但一般來說有以下一些流行的風格。(1)for語句適合循環(huán)次數(shù)已知的

50、情況。(2)while語句適合循環(huán)次數(shù)不確定,但已知循環(huán)條件。(3)do-while語句與while語句可以互通使用,但do-while更適合于至少循環(huán)一次的情況。第5章 循環(huán)結構程序設計5.4 break和continue語句5.4.1 break語句格式:break;功能:結束循環(huán),執(zhí)行循環(huán)語句的下一語句。break語句只能用于下面兩種情況:(1)出現(xiàn)在循環(huán)語句的循環(huán)體中,當循環(huán)條件還未變?yōu)榧贂r提前結束循環(huán)語句的執(zhí)行(強行退出循環(huán))。(2)出現(xiàn)在switch語句中,使程序中途退出switch語句,即跳過break語句之后直到switch語句體結束的所有語句。除上述兩處外,其他位置均不能出現(xiàn)

51、break語句。第5章 循環(huán)結構程序設計5.4 break和continue語句【例5-10】編寫程序,用循環(huán)計算圓面積,如果輸入非數(shù)字半徑則結束循環(huán)。第5章 循環(huán)結構程序設計5.4 break和continue語句5.4.2 continue語句格式:continue;功能:終止循環(huán)體的本次執(zhí)行,控制轉移到循環(huán)體的末尾,循環(huán)是否繼續(xù)取決于循環(huán)條件是否滿足。continue語句只能出現(xiàn)在循環(huán)語句的循環(huán)體中。例如:for(i=0;i10;i+) ch=getchar(); if(ch=n) continue; putchar(); 第5章 循環(huán)結構程序設計5.5 多重循環(huán)5.5.1 多重循環(huán)的格

52、式多重循環(huán)的格式如下:while(表達式) for( 表達式1;表達式2;表達式3 ) 以上循環(huán)就構成了雙重循環(huán)。三種循環(huán)語句(for、while、do-while)均可以互相嵌套形成多重循環(huán)結構。需要注意,內外層循環(huán)是完整的,相互之間不允許交叉。第5章 循環(huán)結構程序設計5.5 多重循環(huán)5.5.2 多重循環(huán)的執(zhí)行過程下面以一個雙重循環(huán)的程序為例,說明多重循環(huán)的執(zhí)行過程。【例5-11】寫出下列程序的運行結果。 本例中:i 循環(huán)稱為外層循環(huán),控制輸出幾行j 循環(huán)稱為內層循環(huán),控制一行輸出幾列第5章 循環(huán)結構程序設計5.5 多重循環(huán)5.5.3 多重循環(huán)的使用【例5-12】編程計算:s=1!+3!+5

53、!第5章 循環(huán)結構程序設計5.5 多重循環(huán)【例5-13】求Fibonacci數(shù)列:1,1,2,3,5,8, 的前40項。分析:Fibonacci的規(guī)律是:數(shù)列從第3項開始,每項都是其前兩項之和。即: a=1;b=1; a=a+b;b=a+b; a=a+b;b=a+b; 第5章 循環(huán)結構程序設計5.5 多重循環(huán)【例5-14】打印下列圖形: ABCDEF BCDEF CDEF DEF EF F第5章 循環(huán)結構程序設計5.6 循環(huán)結構程序設計舉例【例5-15】任意10個數(shù),求正數(shù)的個數(shù)及正數(shù)和。第5章 循環(huán)結構程序設計5.6 循環(huán)結構程序設計舉例【例5-16】輸出三位數(shù)中的“水仙花數(shù)”。 水仙花數(shù)是

54、指一個3位數(shù) ,其各位數(shù)字的 3次冪之和等于該數(shù)本身。例如,153是一個“水仙花數(shù)”,153=13+53+33分析:本題的關鍵是要分離出3位數(shù)的百位、十位和個位數(shù)字。第5章 循環(huán)結構程序設計5.6 循環(huán)結構程序設計舉例【例5-17】將一張100元的人民幣換成10元、5元和1元的零鈔,一共有幾種兌換方法。分析:因為50元最多只能有2張,20元最多有5張,10元最多有10張,也可以一張也沒有,所以三個循環(huán)的范圍分別是:02、05、010第5章 循環(huán)結構程序設計5.6 循環(huán)結構程序設計舉例【例5-18】百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問有大、中、小馬

55、各多少。分析:符合本題輸出的條件: 馬的總數(shù)等于100; 貨的總數(shù)等于100; 小馬數(shù)必須是偶數(shù)。第5章 循環(huán)結構程序設計5.6 循環(huán)結構程序設計舉例【例5-19】打印下列圖形: * * * *分析:本題需要用到雙重循環(huán),外層循環(huán)(i循環(huán))控制打印4行,內層循環(huán)(j循環(huán))控制打印列,每列2*i-1個。k循環(huán)用于打印每行的前導空格。第5章 循環(huán)結構程序設計本章結束!第6章 數(shù)組本章主要內容:6.1 數(shù)組的概念6.2 一維數(shù)組(重點)6.3 二維數(shù)組(重點)6.4 字符數(shù)組 本章教學要求:了解數(shù)組中數(shù)據(jù)的存儲方法 熟悉數(shù)組的概念、數(shù)組元素的表示方法掌握數(shù)組的編程方法6.1 數(shù)組的基本概念本節(jié)介紹數(shù)

56、組的定義和數(shù)組程序設計要解決的問題。 6.1.1 數(shù)組解決的問題類型相同的一組數(shù)的存儲類型相同一組數(shù)的處理通過對下標的控制實現(xiàn)對數(shù)組的處理: 循環(huán)變量控制下標 處理的數(shù)組映射到下標如:40個學生成績的存儲 100個整數(shù)的排序第6章 數(shù)組6.1 數(shù)組的基本概念本節(jié)介紹數(shù)組的定義和數(shù)組程序設計要解決的問題。 6.1.2 數(shù)組的基本概念數(shù)組就是計算機內存中的一塊連續(xù)的存儲區(qū)域,用來存儲數(shù)據(jù)類型相同的一組數(shù)據(jù)。數(shù)組通過數(shù)組名來表示。數(shù)組名的命名規(guī)則與變量名相同。數(shù)組名就代表整個數(shù)組的首地址,即第一個數(shù)組元素的地址。 數(shù)組中的成員稱為數(shù)組元素,數(shù)組是通過數(shù)組元素訪問它的每個成員的。數(shù)組元素是一個具體的變

57、量,也稱為下標變量。數(shù)組元素的表示形式為:數(shù)組名下標 使用:數(shù)組遵循先定義后使用的原則,未定義的數(shù)組不能使用。數(shù)組元素如同其它基本變量一樣,可以被賦值,也可以在表達式中使用。分類:根據(jù)數(shù)組下標的多少,數(shù)組可分為一維數(shù)組和多維數(shù)組。 第6章 數(shù)組6.2 一維數(shù)組本節(jié)主要介紹一維數(shù)組的定義和使用。 6.2.1 一維數(shù)組的定義1一維數(shù)組的定義形式一維數(shù)組是指帶一個下標的數(shù)組,用來存儲一組類型相同的數(shù)據(jù)。定義形式 :類型說明符 數(shù)組名常量表達式; 注意:類型說明符是任一種基本數(shù)據(jù)類型或構造數(shù)據(jù)類型。數(shù)組名是用戶定義的數(shù)組標識符。方括號中的常量表達式表示數(shù)組元素的個數(shù),也稱為數(shù)組的長度。 第6章 數(shù)組6

58、.2 一維數(shù)組6.2.1 一維數(shù)組的定義1一維數(shù)組的定義例如:int a10; float b20,s40; 說明:數(shù)組名也是標識符,其命名規(guī)則要符合標識符的規(guī)定。常量表達式表示數(shù)組元素的個數(shù),其值必須大于等于1。常量表達式中可以包括常量和符號常量,但不能包含變量。定義數(shù)組時,數(shù)組長度可以用符號常量表示。 一個數(shù)組定義語句中可以定義多個相同類型的數(shù)組,也可以和其他相同類型的變量一起定義,用“,”隔開。 第6章 數(shù)組6.2 一維數(shù)組6.2.1 一維數(shù)組的定義2一維數(shù)組元素的引用一維數(shù)組元素的引用形式:數(shù)組名下標例如:int a5數(shù)組a有5個數(shù)組元素:a0、a1、a2、a3、a4。注意:不能使用數(shù)

59、組元素a5,其下標已越界。說明:下標表示該元素在數(shù)組中的位置,它可以是整型常量、整型變量或整型表達式。如:a3、ai+j、ai+。 C語言規(guī)定,數(shù)組元素下標從0開始,最大下標為數(shù)組長度減1。數(shù)組元素可以像一個獨立的簡單變量來使用。如:a0=a1+a2-a5-1; 第6章 數(shù)組6.2 一維數(shù)組6.2.1 一維數(shù)組的定義3一維數(shù)組的存儲形式數(shù)組是有序的同類數(shù)據(jù)的集合,它在計算機內部的存儲也是有序的。在編譯時,系統(tǒng)根據(jù)數(shù)組的定義為數(shù)組分配一個連續(xù)的存儲區(qū)域,數(shù)組元素按下標由小到大的次序連續(xù)存放,下標為0的元素排在前面,每個元素占據(jù)的存儲空間大小與同類型的簡單變量相同。例如:int a5a數(shù)組中每個元

60、素在內存占4個字節(jié)的存儲空間,各元素連續(xù)存放的示意圖如圖6-1所示。 第6章 數(shù)組6.2 一維數(shù)組6.2.2 一維數(shù)組的使用1一維數(shù)組的初始化數(shù)組初始化賦值是指指在定義數(shù)組的同時對數(shù)組元素賦初始值。將各數(shù)組元素的初值寫在花括號“”中,用逗號隔開。數(shù)組初始化是在編譯階段進行的,這樣可以減少運行時間,提高運行效率。初始化格式:類型名 數(shù)組名元素個數(shù)=初始值列表;(1)對全部元素賦初值。例如: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ù)組的長度

溫馨提示

  • 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

提交評論