C語言程序設計整本書課件完整版電子教案(最新)_第1頁
C語言程序設計整本書課件完整版電子教案(最新)_第2頁
C語言程序設計整本書課件完整版電子教案(最新)_第3頁
C語言程序設計整本書課件完整版電子教案(最新)_第4頁
C語言程序設計整本書課件完整版電子教案(最新)_第5頁
已閱讀5頁,還剩236頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、CC語言程序設計第一章 C語言概述解讀課程名程序:為了讓計算機完成某項任務而編寫的逐條執(zhí)行的指令序列,每一條指令對應計算機能執(zhí)行的最基本操作。計算機語言經歷機器語言、匯編語言、高級語言等階段。C語言是一種結構化的計算機高級語言,于1973年誕生,是最合適的計算機編程入門語言。語法和算法編寫程序必須具備兩個基本條件:一是掌握一門計算機高級語言的規(guī)則(語法),二是要分析出解決問題的方法和步驟(算法)。算法是靈魂,語法是工具,二者缺一不可。課程目標牢固掌握C語言的基本語法掌握基本的分析問題和利用計算機解決問題的方法(算法)具備初步的高級語言程序設計能力,會讀、會編、會調試程序期末通過省二級C語言考試

2、在各類軟件大賽中獲獎(精英之路) 學習要求課前認真預習上課認真聽講,保持頭腦清醒,思維活躍多抄寫、默寫課堂示例勤思考,多練習,認真、獨立地完成課后作業(yè)重視上機實踐編輯和執(zhí)行C程序編輯:選擇適當的編輯程序,將C語言源程序通過鍵盤輸入到計算機中,并以文件的形式存入到磁盤中(.c)編譯:即將源程序翻譯成機器語言程序的過程。編譯出來的程序稱為目標程序(.obj)連接:編譯后生成的目標文件經過連接后生成最終的可執(zhí)行程序(.exe)執(zhí)行:得到程序的運行結果。程序書寫規(guī)范一條語句占一行。語句的書寫要有層次,低層次的語句要比高層次的語句向右縮進若干字符。 寫在一行的末尾, 和該層次語句的第一個字母對齊,并單獨

3、占一行。技巧:為避免遺漏必須配對使用的符號,例如函數體的起止標識符、圓括號()、注釋符號/* */ 等等,在輸入時,可連續(xù)成對輸入這些起止標識符,然后再在其中進行插入來完成內容的編輯。C程序結構特點C程序是由函數構成的。 一個函數由兩部分組成: 函數頭部和函數體。 C程序中有且只能有一個main函數。main函數通常位于程序之首, 實際上它可以位于程序的開頭、 最后及任意函數之間, 但不管在什么位置,一個C程序總是從main函數開始執(zhí)行,從main函數結束。每條語句以分號結束,分號是語句的必要組成部分。C程序結構特點C程序書寫格式自由, 一行內可以寫幾個語句, 一個語句可以分寫在多行上(每一行

4、的結尾要輸入續(xù)行符 ),但為了增強程序可讀性,我們一般一行只寫一條語句。C語言本身不提供輸入輸出語句,輸入和輸出的操作由庫函數scanf和printf等函數來完成。如程序中使用到這些函數,在程序開頭必須包含#include??梢杂?* */(多行注釋)或 /(單行注釋) 對C程序中的任何部分作注釋, 它可增加程序的可讀性。 CC語言程序設計第二章 順序結構整型浮點型字符型不同進制的整型常量十進制形式 由09十個數碼組成,且第一個數字不能為0。如80、-69。八進制形式 以數字0作前綴,由07八個數碼組成。如0123、-057。 十六進制形式 以“0 x”或“0X”作為前綴,由09、af或AF十

5、六個數碼組成。如0X53、0 x12f、0 xFFE。 指數形式的浮點型常量形式如3.2e5、-7.6E3、0.125e-2、-345.6E-12,分別表示3.2105、-7.6103、0.12510-2、-345.610-12。字母e或E之前必須有數字,之后必須為整數。如e3、3.2E1.5都不是合法的指數形式。轉義字符以字符開頭的字符序列,稱之為轉義字符。使用轉義字符的原因有兩點:某一些特定的字符在C中具有特殊用途。如反斜杠(),它是轉義字符的前綴;再如雙引號(),被定義為字符串的定界符。如果想要在屏幕上輸出這些字符,只能用轉義字符的形式,直接輸出程序會出錯。用轉義字符來表示ASCll字符

6、集里的控制字符。如n,這是一種在屏幕上無法顯示的“控制字符”,在程序中也無法用一個普通的字符來表示,只能采用這種特殊形式。 符號常量可以在程序中用一個標識符代表常量,稱為符號常量。在使用符號常量后,如需要修改程序中多次用到的同一個常量,能做到“一改全改”。 符號常量不占內存,只是一個臨時符號,代表一個常量,所以不能對符號常量賦值。程序中若出現PI=3.14159;這樣的語句是錯誤的。若要改變符號常量所代表的常量,只能通過#define指令重新定義。為與變量相區(qū)分,習慣上用大寫字母表示符號常量。 變量的定義在編程時,會處理一些固定數據(常量),我們通常不會直接操作它們,而是先把這些數據保存到相應

7、數據類型的變量中,再通過變量名引用、處理它們。變量實際代表了內存中的一塊存儲區(qū)域,我們給這塊存儲區(qū)域起個名字,就是變量名,存放在這塊存儲區(qū)域中的數據,就是變量值。 10001002100410061008100A100C100E1010int a,b,sum; /聲明a和b兩個變量a=123; /給變量a賦值123b=456; /給變量b賦值456 /進行a+b運算,并把結果存放在sum中sum=a+b; /把a中原來的值加上1后再重新賦給變量aa=a+1; ab123456124sum579變量的聲明和初始化 變量的聲明 向內存申請一個指定類型的存儲空間,這樣才能存儲變量的值。變量只有先聲明

8、才能使用。變量的聲明必須放在函數的開頭,否則出錯。 int m; float a,b,sum; 變量的初始化 在聲明變量的同時給變量一個初值。 int m=5; float a=2.5,b=6.2,sum;變量的賦值和調用 變量的賦值 可以多次賦值,但變量的當前值只有1個,為最后一個賦值所得到的值。 m=98; m=m+3; 變量的調用 變量在聲明并賦值后,可以在程序中通過變量名來操作變量中保存的數據。 sum=a+b; printf(a+b=%dn,sum);變量的命名規(guī)則 變量名只能由下劃線、數字09與大小寫字母az,AZ構成。 變量的首個字符必須是字母或下劃線,而不能是數字或其它符號。

9、區(qū)分大小寫字母,如name和Name是兩個不同的變量。 不能使用系統(tǒng)關鍵字作為變量名。 盡量作到“見名知義”,例如max、score等,而不用象abc、x1、y2等標識符。變量的命名規(guī)則關鍵字是指系統(tǒng)預定義的保留標識符,又稱之為保留字。它們有特定的含義,不能再作其它用途使用。ANSI C定義的關鍵字共32個。C語言的關鍵字都是小寫的。 數據類型轉換C語言中有3種形式的數據類型轉換自動類型轉換賦值轉換強制類型轉換自動類型轉換同種數據類型的數據做算術運算時,結果類型不變;當一個運算符兩邊的數據類型不同時,則先遵循規(guī)則自動進行類型轉換,使二者具有同一種類型,然后進行計算。因此整型、實型、字符型數據間

10、可以進行混合運算。 賦值轉換賦值轉換是在作賦值運算時發(fā)生的。如果賦值運算符兩側的類型一致,則直接進行賦值;如果兩側的類型不一致(但都是整型,浮點型或字符型),在賦值時會進行類型轉換。強制類型轉換有時為了達到某種目的,需要將一個表達式的類型轉變成所需的類型,這時就要用到強制類型轉換運算符。其一般形式為: (數據類型名) (表達式) (int)a 將變量a強制轉換為int型 (double)(x+y) 將x+y的值強制轉換為double型強制轉換運算符的使用#include stdio.h void main() int a=2; float b=3.6; printf(“%dn”,a+b);pr

11、intf(“%dn”,a+(int)b);a+b的計算結果為float型數據,無法用%d顯示 printf函數的一般格式printf(“格式控制串”,輸出列表)例如:printf(”i=%d,c=%cn”,i,c);普通字符printf函數 printf函數的一般格式printf(“格式控制串”,輸出列表)例如:printf(”i=%d,c=%cn”,i,c);printf函數格式聲明 printf函數的一般格式printf(“格式控制串”,輸出列表)例如:printf(”i=%d,c=%cn”,i,c);printf函數可以是常量、變量或表達式 scanf函數的一般格式scanf(“格式控制

12、串”,地址列表)例如:scanf(”a=%d,b=%d”,&a,&b);scanf函數普通字符,需要原樣輸入 scanf函數的一般格式scanf(“格式控制串”,地址列表)例如:scanf(”a=%d,b=%d”,&a,&b);scanf函數格式字符 scanf函數的一般格式scanf(“格式控制串”,地址列表)例如:scanf(”a=%d,b=%d”,&a,&b);scanf函數&為“取地址符”,不可省略對于 scanf(“%c%c”,&a,&b);輸入 1 3 13 使用scanf函數 對于 scanf(“%d%d”,&a,&b); 輸入 1 3 13 還可以用Tab鍵和回車鍵分隔scan

13、f函數對于 scanf(“a=%d,b=%d”,&a,&b);輸入 1,3 a=1,b=3 使用scanf函數 對于 scanf(“%d,%d”,&a,&b); 輸入 1 3 1,3 scanf函數putchar()函數putchar函數可以輸出顯示一個字符putchar函數的一般格式 putchar( 單個字符); char ch=a; putchar(ch); putchar(a); putchar(97); putchar(141); putchar(x61); getchar()函數getchar函數可以從鍵盤接收一個字符,該函數對鍵盤上的任何鍵都是有效的。getchar函數的一般格式

14、 getchar(); /無參函數 char ch=getchar();運算符C語言中共有13類45個運算符 學習運算符要注意的問題運算符的功能運算符與操作對象的關系: 操作數的個數(一元、二元、三元); 操作數的類型(如求余運算符%要求操作數是整型);運算符的優(yōu)先級;運算符的結合性:左結合、右結合;運算結果的數據類型:不同類型數據運算將發(fā)生類型轉換 表達式變量、常量與符號的組合稱為表達式。表達式中的符號稱為運算符,運算符作用的變量、常量稱為操作數。 printf(“%dn”,num+3); a+b num3=num1 ch=ch-32 32 (a+b)/(a-b) 32&53+1算術運算符

15、基本算術運算符算術運算符+和-符號在C語言中有雙重含義,既可以表示正號和負號,也可以表示加號和減號。在表示正號和負號時,只能在運算符的一側出現一個操作數,我們稱之為一元運算符,又稱單目運算符。在表示加號和減號時,要求在運算符兩側各有一個操作數,我們稱之為二元(雙目)運算符。*、/、%也是二元運算符。兩個整數進行算術運算,結果仍為整數。取余運算符“%”要求兩邊的操作數必須為整型。 如:5%3.2 18.0%7.0 錯誤 其它運算符操作數的類型可以是任意的。 算術運算符自增、自減運算符 自增運算符“+”和自減運算符“-”也是一元運算符,作用是使操作數的值加1或減1。 如:i+ 相當于 i=i+1

16、-i 相當于 i=i-1+和-運算符的操作數只能是變量,不能是常量、函數或表達式。如2+、(a+b)+都是錯誤的表達式。 設已作聲明:int i=6,a;算術運算符自增、自減運算符算術運算符的優(yōu)先級和結合性優(yōu)先級:當一個運算對象兩側的運算符的優(yōu)先級別不同時,應遵循優(yōu)先級高的先處理的規(guī)則。 結合性:當一個運算對象兩側的運算符的優(yōu)先級別相同時,應遵循運算符的結合方向。賦值運算符C語言中賦值運算符為“=”,它的一般形式為: 變量=表達式賦值表達式的作用是將賦值號=右邊表達式的值賦給左邊的變量。其中,表達式可以是常量、變量或C語言中任意合法表達式。 如: sum=a+b a=8 注意:賦值運算符左邊只

17、能是變量,不能是常量或表達式,如2=a、a+b=c都是錯誤的。復合賦值運算符C語言允許在賦值運算符“=”之前加上算術運算符或位運算符以構成復合的賦值運算符。復合賦值運算符【問題】x*=y+5是等價于x=x*y+5還是x=x*(y+5)? 【分析】因為+的優(yōu)先級比*=高,所以先計算y+5,再進行復合賦值運算。因此表達式與x=x*(y+5)是等價的。 CC語言程序設計第三章 分支結構分支結構【問題】編程計算一個分段函數:順序、分支(條件、選擇)、循環(huán)是結構化程序中三種基本結構。分支結構是根據判定所給條件是否滿足,從而決定程序執(zhí)行哪些語句。單分支if語句單分支 if 語句的基本形式為: if (表達

18、式) 語句體 雙分支if語句雙分支 if 語句為 if-else 形式,語句的結構為: if (表達式) 語句體1 else 語句體2 if語句語法注意if語句的條件表達式一般是邏輯表達式或關系表達式,表達式的值非0,即為“真”;表達式值為0,即為“假”。語句體中可包含1條或多條語句,如只有1條語句,則花括號可以省略,但從語法規(guī)范考慮,最好不要省略。關系運算符 小于 大于 = 大于或等于 = 等于 != 不等于 優(yōu)先級:關系運算符的優(yōu)先級低于算術運算符,高于賦值運算符。其中、=、=優(yōu)先級高于= =和!= 的優(yōu)先級。結合性:左結合關系運算符關系運算符都是二元運算符,其結果為int類型的值。當關系

19、成立時,關系表達式的值為1,關系不成立時,值為0。a50 值為3+2 = 2*3 值為526 值為0101-3-2b?a:b求值規(guī)則:計算表達式1的值,若表達式1的值為真,則以表達式2的值作為整個條件表達式的值,否則以表達式3的值作為整個條件表達式的值。條件運算符max=ab?a:b if (ab) max=a; else max=b;等價邏輯運算符【問題】鍵盤輸入學生的原始成績,如果在80到100之間,則把成績打8折,然后輸出成績;否則給出錯誤信息。if(80=score=80 & scoreb | cd 等價于 (ab) | (cd) !a= =b& cd 等價于 (!a) = =b)&(

20、cd)結合性:邏輯運算符中,非運算符(?。┑慕Y合性為右結合; 與運算(&)和或運算(|)的結合性為左結合。邏輯運算符 a & b 當且僅當a,b都為真時,結果為1 a | b 當且僅當a,b都為假時,結果為0 ! a 當a為真時,結果為0; 當a為假時,結果為1多重if結構和嵌套if結構【問題】編程計算下列分段函數:110if(x1) y=x;else if(x10) y=2*x-1;else y=3*x-11;if(x1) y=x;else if(x10) y=2*x-1; else y=3*x-11;if(x=1) y=2*x-1; else y=x;else y=3*x-11; xy=x

21、y=2x-1y=3x-11多重 if 結構嵌套 if 結構多重if結構 多分支選擇結構的 if 語句一般形式為: if(表達式1) 語句體1 else if (表達式2) 語句體2 . else if (表達式n) 語句體n else 語句體n+1 語義:依次判斷表達式的值,當某個表達式的值為真時, 則執(zhí)行其對應的語句,然后跳到整個if語句之外繼續(xù)執(zhí)行程序;如果所有的表達式均為假,則執(zhí)行語句n+1,然后繼續(xù)執(zhí)行后續(xù)程序。多重if結構的控制流程多重if結構【例】分析下面程序段的運行結果int a,k;a=75;if (a60) k=1;else if(a70) k=2;else if(a80)

22、k=3;else if(a90) k=4;printf(k=%dn,k); k=1嵌套if結構 當 if 語句中的語句體又是 if 語句時,這種情況就叫嵌套的 if 結構。其一般形式為: if (表達式) if (表達式) 語句組1; else 語句組2; else if (表達式) 語句組3; else 語句組4; int x,y;x=1; y=0;if(x=2) if(x=2) if(x10) y=3*x-1;else y=x; y=1 y=0嵌套if結構switch結構 switch語句專門用于解決多分支選擇問題,其一般形式為: switch(表達式) case 常量表達式1: 語句組1

23、;break; case 常量表達式2: 語句組2; break; case 常量表達式n: 語句組n; break; default : 語句組n+1; break; 計算表達式的值,并逐個與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時, 即執(zhí)行其后的語句,然后跳出switch結構繼續(xù)執(zhí)行程序; 如表達式的值與所有的常量表達式均不相同時,則執(zhí)行default后的語句,然后跳出switch結構繼續(xù)執(zhí)行程序。 a=1,b=0Switch結構int x=1,a=0,b=0;switch(x) case 0 : b+; break; case 1 : a+; break; def

24、ault : a+; b+; break;printf(a=%d,b=%dn,a,b); 在case后,允許有多個語句,可以不用 括起來。 case和default子句出現的先后順序可以變動,不會影響程序執(zhí)行結果。default子句也可以省略不用。 a=1,b=0Switch結構語法注意int x=1,a=0,b=0;switch(x) case 0 : b+; break; default : a+; b+; break; case 1 : a+; break;printf(a=%d,b=%dn,a,b); switch后跟的“表達式”允許為任何類型的表達式,但計算結果必須為 int 型或

25、char 型。 error C2050:switch expression not integralSwitch結構語法注意float x=1,a=0,b=0;switch(x) case 0 : b+; break; case 1 : a+; break; default : a+; b+; break;printf(a=%f,b=%fn,a,b); case后必須為整型常量或由整型常量構成的表達式。這里的整型也包括字符型。 error C2052: const double : illegal type for case expressionSwitch結構語法注意int x=1,a=0,

26、b=0;switch(x) case a : b+; break; case 1.5 : a+; break; default : a+; b+; break;printf(a=%f,b=%fn,a,b); error C2051: case expression not constant 在每一個case后的各常量表達式的值不能相同,否則會出現錯誤。 error C2196: case value 0 already usedSwitch結構語法注意int x=1,a=0,b=0;switch(x) case 0 : b+; break; case 0 : a+; break; defaul

27、t : a+; b+; break;printf(a=%f,b=%fn,a,b); 多個case可以共用一組執(zhí)行語句。 a=1,b=0Switch結構語法注意int x=1,a=0,b=0;switch(x) case 0 : b+; break; case 1 : case 2 : a+; break; default : a+; b+; break;printf(a=%f,b=%fn,a,b);注意: case 和 default 后的 break;語句不能省略,否則在執(zhí)行完某個case或 default的語句體后,程序將不能跳出switch結構,而是不管后面的case表達式是否滿足條件,

28、都會執(zhí)行其語句體,直到遇到 break; 或 。int x=1,a=0,b=0;switch(x) case 0 : b+; case 1 : a+; case 2: b+; default : a+; b+; printf(a=%f,b=%fn,a,b);Switch結構語法注意 a=1,b=2比較多重 if 結構 和 switch 結構多重if結構和switch結構都可以用來實現多路分支。當需要判斷輸入的數據是否在某個范圍時,使用多重 if 結構比較方便。switch結構只能處理等值條件判斷的情況。CC語言程序設計第四章 循環(huán)結構循環(huán)結構【問題1】張浩C語言考試得了80分,沒達到自己的目標

29、。為了表明自己勤奮學習的決心,他決定寫一百遍“好好學習,天天向上”。#include main() printf(“第1遍寫:好好學習,天天向上n); printf(“第2遍寫:好好學習,天天向上n); printf(“第3遍寫:好好學習,天天向上n); printf(“第4遍寫:好好學習,天天向上n); /此處省略94句輸出語句 printf(“第99遍寫:好好學習,天天向上n); printf(“第100遍寫:好好學習,天天向上n);printf(“第%d遍寫:好好學習,天天 向上n,i);i=i+1;while(i=100)int i=1;循環(huán)結構【問題2】編寫一個程序,計算半徑為0.5

30、、1.5、2.5、3.5、4.5厘米的圓面積。#include #define PI 3.14159 /定義符號常量PImain() float r1,r2,r3,r4,r5; float s1,s2,s3,s4,s5; r1=0.5; s1=PI*r1*r1; printf(r1=%.1f,s1=%.2fn,r1,s1); r2=1.5; s2=PI*r2*r2; printf(r2=%.1f,s2=%.2fn,r2,s2); r3=2.5; s3=PI*r3*r3; printf(r 3=%.1f,s3=%.2fn,r3,s3); r4=3.5; s4=PI*r4*r4; printf(r

31、4=%.1f,s4=%.2fn,r4,s4); r5=4.5; s5=PI*r5*r5; printf(r5=%.1f,s5=%.2fn,r5,s5);s=PI*r*r; printf(r=%.1f,s=%.2fn,r,s);r=r+1;while(r=4.5)float r=0.5,s;什么是循環(huán)循環(huán)就是重復地做一件事。生活中循環(huán)的例子: 打印50份試卷 在400米跑道上進行3000米賽跑 鍥而不舍地學習 滾動的車輪什么是循環(huán)打印50份試卷: 循環(huán)條件:只要打印的試卷份數不足50份就繼續(xù)打印。 循環(huán)操作:打印1份試卷,打印總數加1。3000米賽跑: 循環(huán)條件:跑過的距離不足3000米就繼續(xù)跑

32、。 循環(huán)操作:跑一圈,跑過的距離增加400米。鍥而不舍地學習: 循環(huán)條件:沒有達到預定的目標就繼續(xù)努力。 循環(huán)操作:學習,離預定目標更近。滾動的車輪: 循環(huán)條件:沒有到達目的地就繼續(xù)。 循環(huán)操作:車輪滾一圈,離目的地更近。循環(huán)結構循環(huán)結構是結構化程序中最重要的一種結構。其特點是,在給定條件成立時,反復執(zhí)行某程序段,直到條件不成立為止。循環(huán)結構中控制循環(huán)的條件稱為循環(huán)條件,循環(huán)條件中出現的變量成為循環(huán)變量,反復執(zhí)行的程序段稱為循環(huán)體。循環(huán)結構的3種形式C語言提供了3種基本的循環(huán)結構: while do-while forwhile循環(huán)while循環(huán)又稱為“當型”循環(huán)。 while語句的一般格式為

33、: while (循環(huán)表達式) 循環(huán)體 while語句的執(zhí)行過程為: (1) 計算并判斷循環(huán)表達式的值。若值為非0,則執(zhí)行循環(huán)體;若值為0,則結束循環(huán),退出while結構。 (2) 轉步驟(1)。while循環(huán)語法注意與 if 語句中的表達式相同,while 語句中的表達式可以是任意合法的表達式。表達式也叫做循環(huán)條件。循環(huán)體包括一條或多條語句,多條語句必須用 括起來。合理的循環(huán)是有限次循環(huán)。如果循環(huán)不能退出,則稱為“死循環(huán)”,在程序設計中應該避免出現。 while循環(huán)【問題】判斷以下循環(huán)各執(zhí)行了多少次 int k=-10; while(k=0) k=k+1; /循環(huán) 次 int k=-10;

34、while(k=1) k=k+1; /循環(huán) 次 int k=-10; while(k) k=k+1; /循環(huán) 次010do-while循環(huán)do-while循環(huán),又稱為“直到 型”循環(huán),用do-while語句來實現,其一般格式為: do 循環(huán)體 while(循環(huán)表達式); do-while語句的執(zhí)行過程為: 先執(zhí)行循環(huán)體語句再判斷表達式的值。若值為0,則結束循環(huán),退出do-while語句;若值為非0,則繼續(xù)執(zhí)行循環(huán)體。do-while循環(huán)【問題1】以下兩個程序段的運行結果分別是多少?int i=10,s=0;while(i=10) s=s+i; i=i+1; printf(s=%dn,s); s

35、=10int i=10,s=0;do s=s+i; i=i+1; while(i=10); printf(s=%dn,s); s=10總結:當第一次判斷循環(huán)表達式,表達式的值為真時,while和do-while循環(huán)在功能上沒有任何區(qū)別。do-while循環(huán)【問題2】以下兩個程序段的運行結果分別是多少?int i=11s=0;while(i=10) s=s+i; i=i+1; printf(s=%dn,s); s=0int i=11,s=0;do s=s+i; i=i+1; while(i=10); printf(s=%dn,s); s=11總結:當第一次判斷循環(huán)表達式,如果表達式的值為假,則w

36、hile循環(huán)不會執(zhí)行循環(huán)體,而do-while循環(huán)會把循環(huán)體執(zhí)行一遍。for 循環(huán)for語句的一般格式為: for(表達式1;表達式2;表達式3) 循環(huán)體 int i,s=0;i=1;while(i=100) s=s+i; i=i+1;等價int i,s=0;for ( ; ; ) i=1i=100i+s=s+i;for 循環(huán)3個表達式的主要作用是: 表達式1:通常用于循環(huán)的初始化。包括循環(huán)變量的賦初值、其他變量的準備等; 表達式2:循環(huán)的條件判斷式,用于判斷循環(huán)是否繼續(xù)執(zhí)行,可以是任意合法的表達式; 表達式3:循環(huán)的調整部分,主要是循環(huán)變量的變化; 循環(huán)體:由一條或多條語句構成,多條語句需要

37、用 括起來。for語句的執(zhí)行流程for(i=1;i=100;i+) s=s+i;for循環(huán)語法注意13個表達式之間用分號“;”分隔,3個表達式都可以省略,但兩個分號不能省略。表達式1和表達式3可以是一個簡單的表達式,也可以是逗號表達式,即包含一個以上的簡單表達式,中間用逗號間隔。如: for(i=1,s=0; i=100;i+) s=s+i; for(i=0,j=10;i=j;i+,j-) k=i+j; 表達式1可以省略,如: i=1; for(;i=100;i+) s=s+i;for循環(huán)語法注意2表達式2可以省略,即不設置和檢查循環(huán)條件,此時相當于表達式2始終為“真”,循環(huán)無終止地進行,如:

38、 for(i=1; ;i+) s=s+i; for(i=1;1;i+) s=s+i;表達式3可以省略,如: for (i=1;i=100;) s=s+i; i+; 等價for循環(huán)語法注意3表達式1和表達式3均可以省略,如: i=1; i=1; for (;i=100;) while(i=100) s=s+i; s=s+i; i+; i+; 循環(huán)體可以省略,如: for (i=1;i=100;i+); ;表示空語句等價【問題1】編寫一個程序,計算半徑為0.5、1.5、2.5、3.5、4.5cm的圓面積,直到面積大于20cm2。#include #define PI 3.14159 /定義符號常量

39、PIvoid main() float r=0.5,s; while(r20) break; printf(r=%.1f,s=%.2fn,r,s); r+; 【問題2】輸出100到200之間可以被7整除的數。void main() int k; for(k=100;k=200;k+) if( ! (k%7) printf(“能被7整除的數有%dn”,k); void main() int k; for(k=100;k=200;k+) if(k%7) continue; printf(“能被7整除的數有%dn”,k); 參考程序2:參考程序1:break和continue語句switch結構中可

40、以用break語句跳出switch語句。break語句也可以用在循環(huán)結構中,用以結束本層 循環(huán)。continue語句用以結束本次 循環(huán),不再執(zhí)行continue語句后的循環(huán)體,直接回到循環(huán)表達式處判斷。break和continue通常和if語句配合使用。break可以用于switch結構和循環(huán)結構,continue只能用于循環(huán)結構。循環(huán)嵌套(1) while ( ) while ( ) (2) for (;) for (;) (3) do do while ( ); while ( );(4) while ( ) for (;) (5) for (;) while ( ) (6) do for

41、 (;) while ( );CC語言程序設計第五章 函數函數【問題】編寫一個程序,計算半徑為0.5、2、2.5、3.2、5厘米的圓面積。#include #define PI 3.14159 /定義符號常量PImain() float r1,r2,r3,r4,r5; float s1,s2,s3,s4,s5; r1=0.5; s1=PI*r1*r1; printf(r1=%.1f,s1=%.2fn,r1,s1); r2=2; s2=PI*r2*r2; printf(r2=%.1f,s2=%.2fn,r2,s2); r3=2.5; s3=PI*r3*r3; printf(r 3=%.1f,s3

42、=%.2fn,r3,s3); r4=3.2; s4=PI*r4*r4; printf(r4=%.1f,s4=%.2fn,r4,s4); r5=5; s5=PI*r5*r5; printf(r5=%.1f,s5=%.2fn,r5,s5);void area(float r) float s=PI*r*r; printf(r=%.1f,s=%.2fn,r,s); void main() area(0.5); area(2); area(2.5); area(3.2); area(5);模塊化程序設計方法人們在求解一個問題時,通常采用的是逐步分解、分而治之的方法,即把一個大問題分解成若干個比較易解的

43、小問題,然后分別求解。我們也通常把一個較大的程序分為若干個子程序模塊,每個子程序模塊實現一個特定的功能。這樣的程序便于編寫、閱讀、修改和維護,提高了程序的可靠性,保證了程序的質量。在C語言中,這些子程序模塊是由函數來完成的。一個C程序可由一個主函數和若干個函數組成。函數分類從函數定義的角度內置函數 即庫函數。由系統(tǒng)提供,用戶無須定義和說明,只需在程序前包含有該函數原型的頭文件,就可在程序中直接使用。如scanf、printf、getchar、puts、strcpy等都是標準函數。自定義函數 用戶根據需要,自己定義的用以完成某種功能的函數。函數分類從函數參數的角度無參函數 函數定義、函數說明、函

44、數調用均不帶參數。主調函數和被調函數之間不進行參數傳遞,此類函數通常用來完成一組指定的功能,一般沒有返回值。 有參函數 函數定義、函數說明時都有參數,稱為形式參數(簡稱形參)。函數調用時必須給出參數,稱為實際參數(簡稱實參)。進行調用時,主調函數把實參的值傳遞給形參,供被調函數使用,被調函數也可以將值帶回來供主調函數使用。 函數的定義無參函數定義的一般形式 類型說明符 函數名() 語句序列 函數的定義有參函數定義的一般形式 類型說明符 函數名(形式參數類型說明 形式參數) 語句序列 函數定義語法說明一個函數由頭部和函數體組成。其中類型說明符和函數名稱為頭部,花括號中的內容稱為函數體。類型說明符

45、是指該函數值的類型,即函數返回值的類型。 void表示空類型,表示函數返回時不帶回任何值。函數名是用戶自己定義的標識符函數名后面必須有一對圓括號( ),不管里面有沒有參數。不能在一個函數體內再定義另一個函數,即函數不能嵌套定義。 函數的調用函數調用的一般形式 函數名(實際參數表)在調用函數時,多個實參彼此間用逗號分隔。實參與形參的個數應相等,類型應一致。如果調用無參函數,則實參表為空,但函數名后的一對圓括號“( )”不能省略。函數的調用main()int a;fun1(a);fun1(int x) 調 用返 回函數調用的方式函數語句把函數調用作為一個語句,一般用于沒有返回值的函數的調用。函數表

46、達式函數出現在表達式中,以函數的返回值參與表達式的運算。函數參數函數作為另一個函數調用的實參。這種情況是把該函數的返回值作為實參進行傳遞,因此要求該函數必須帶值返回。函數的返回值函數的返回值是通過被調函數中的return語句實現的。return語句的一般形式為: return(表達式);功能為:計算表達式的值,并返回給主調函數。一條return語句只能返回一個值。函數的返回值的語法說明函數返回值的類型和函數定義的類型應保持一致。如果兩者不一致,以函數定義的類型為準,函數類型決定函數返回值的類型。如果函數的返回值是整型,則在函數定義時可省略類型說明。在一個函數中允許有多個return語句,但每次

47、調用只執(zhí)行一個return語句,因此只能返回一個函數值。當遇到return語句時,函數返回到主調函數中調用該函數的位置。函數原型聲明函數定義是指對函數功能的確立,包括指定函數名、函數值的類型、形參及其類型、函數體等。它是一個完整的、獨立的函數單位。函數聲明是指對已定義的函數的返回值進行類型說明,它只包括函數名、函數類型等,不包括函數體。其作用是告訴編譯系統(tǒng),在本函數中將要調用的函數是何種類型,以便在主調函數中按此類型對函數值作相應的處理。函數原型聲明可以省略的情況如果被調函數的定義出現在主調函數之前,則可以省略聲明。如果函數類型為整型,則在主調函數中可以不要聲明。函數的參數傳遞在函數的調用過程

48、中,大部分都存在著數據上的聯(lián)系,主要表現在兩個方面:一是外部數據如何傳遞到函數內部;二是函數內部加工過的數據如何傳遞給外部程序。因此 C程序中,函數間的參數傳遞有兩個方面: 1. 函數調用時傳遞給函數的值 2. 函數調用結束時返回給主調函數的值 值傳遞值傳遞是將實參的值傳遞給形參。按這種方式傳遞時,形參的類型是變量,而實參可以是常量、變量或表達式,但必須有確定的值。 值傳遞的特點:形參和實參各自占用不同的存儲空間,在函數內部對形參的任何操作,其結果只能影響形參的值,而不會影響到實參的值。10001002100410061008100A100C100E1010num135val13564num2

49、64val23665#include void increment(int,int);void main()int num1,num2;printf(n 請輸入兩個數: );scanf(%d %d,&num1,&num2);printf(n 主函數中遞增前的值是%d 和 %dn, num1, num2);increment(num1,num2);printf(n 主函數中遞增后的值是%d 和 %dn, num1, num2);void increment(int val1,int val2)val1+;val2+;printf(n 子函數中值 %d 和 %dn, val1, val2);值傳遞

50、應用演示【問題1】變量一旦聲明,是否在程序中任何地方都能使用? 【問題2】任何事物有產生,也必然會有消亡,那么變量的生命周期是多久? 變量的作用域變量的作用域是指變量的有效范圍,在該范圍里,變量是可用的。C語言中,變量的說明方式不同,其作用域也不同,通常分為局部變量和全局變量兩類。 局部變量在一個函數內部定義的變量稱為局部變量其作用域僅限于函數體內,離開該函數再使用這些變量是非法的。在不同的函數內可以定義同名的局部變量,這些同名變量之間不會發(fā)生沖突。全局變量在所有函數(包括main函數)之外定義的變量稱為全局變量。它不屬于任何函數,而屬于一個源程序文件,其作用域是從定義的位置開始到本源程序文件

51、結束。默認初值為0。在一個源程序中,全局變量和局部變量可以同名,在局部變量有效的范圍內,全局變量不起作用。變量的存儲方式變量的存儲方式是指變量使用內存空間的方式,通常可分為“動態(tài)存儲”和“靜態(tài)存儲”兩種。動態(tài)存儲是指在程序執(zhí)行過程中,使用到變量時才分配存儲單元,使用完畢立即釋放。靜態(tài)存儲是指在變量定義時就分配存儲單元并一直保持,直至整個程序結束。變量的4種存儲類型自動類型auto寄存器類型register靜態(tài)類型static外部類型externauto類型 和 register類型 屬于動態(tài)存儲static類型 和 extern類型 屬于靜態(tài)存儲自動類型auto在變量定義的類型前面加上auto

52、,就將變量說明為自動類型。 auto int sum;C語言規(guī)定:函數內凡未加存儲類型說明的變量、所有函數的形參變量均視為自動變量。自動變量屬于動態(tài)存儲方式,即僅當定義自動變量的函數被調用時,系統(tǒng)才分配內存單元,若沒有賦初值,則其初值是隨機的;離開該函數,空間釋放,自動變量的值消失。10001002100410061008100A100C100E1010sum0num24523num168sum#include void addNumbers(); /函數原型聲明void main()int sum=0;addNumbers();printf(n 主函數中 sum 的值是 %d n ,sum)

53、;/* 函數定義 */void addNumbers()int num1,num2,sum;printf(n 請輸入兩個數:);scanf(%d,%d,&num1,&num2);sum=num1+num2;printf( 子函數中 sum 的值是 %d n,sum);自動類型auto應用演示寄存器類型register在變量定義的類型前面加上register,就將變量說明為寄存器類型。 register int m;寄存器變量屬于動態(tài)存儲方式,其生存期和作用域與自動類型變量相同,只不過系統(tǒng)把這類變量直接分配在CPU的通用寄存器中。當需要使用這些變量時,無須訪問內存,直接從寄存器中讀寫,提高了效率

54、。一般寄存器變量只能是int、char或指針型,全局變量不能定義為寄存器變量。 外部類型extern在變量定義的類型前面加上extern,就將變量說明為外部類型。 extern int m;如果全局變量的定義與使用在同一個文件中,則該文件的函數在使用外部變量時不需進行其他說明,直接可以使用如果全局變量的定義與使用在兩個不同的文件中,則在使用全局變量之前需用“extern”存儲類型加以說明。 外部類型extern在變量定義的類型前面加上extern,就將變量說明為外部類型。 extern int m;如果全局變量的定義與使用在同一個文件中,則該文件的函數在使用外部變量時不需進行其他說明,直接可以

55、使用如果全局變量的定義與使用在兩個不同的文件中,則在使用全局變量之前需用“extern”存儲類型加以說明。 靜態(tài)類型static在變量定義的類型前面加上static,就將變量說明為靜態(tài)類型。 static int m;作用域是在所定義的函數內有效。生存期從定義開始直到程序結束,退出函數,值不丟失,但不能引用。若沒有給內部靜態(tài)變量賦初值,則系統(tǒng)自動賦初值0。 10001002100410061008100Ai1s11m210001002100410061008100Ai111m2s2362#includevoid format();void main() int i; for(i=1;i=5;i

56、+) printf(i=%d ,i); format(); /*定義函數format()*/void format() static int m =1,s=1; s=s*m; m+; printf(i!=%dn,s); 靜態(tài)類型static應用演示234sm11CC語言程序設計第七章 數組【問題】輸入某班級6個學生某門課的成績,求平均成績并輸出小于平均分的學生分數?!痉治觥客ㄟ^循環(huán)結構,用一個變量依次存儲6個成績,可以非常方便地求成績的累加和,進而求出平均分。但要找出比平均分小的數就無法實現。當然,可以用6個變量來實現存儲,但這樣會讓程序無法用循環(huán)結構實現,變得繁瑣?!窘鉀Q】可以使用數組來解決

57、,先將6個數保存到數組中去,等求過平均數后再從數組里取出6個數進行比較。 數組的定義和分類在程序設計中,按序排列的同類型數據元素的集合稱為數組。數組屬于構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。根據數組的維數,數組可分為一維數組和多維數組。根據數組元素的類型不同,數組又可分為數值數組、字符數組、指針數組、結構數組等各種類別的數組。一維數組一維數組的聲明 數據類型 數組名長度; int a5; 定義了一個一維整型數組,數組名為a,有5個成員(數組元素),分別是: a0、a1、a2、a3、a4一維數組數組這一數據類型幫助我們實現了這樣多個數據的批量處

58、理問題。數組可以一次性聲明多個變量,只不過這些變量比較特別,具有相同的名字(即數組名),用下標進行區(qū)分。數組名用合法的標識符命名,與變量的命名方法相同,且不能和程序中其它變量名相同。方括號中的數字表示數組的長度,即數組元素的個數。數組長度可以用常量、符號常量或常量表達式表示,不能是變量。數組元素的下標從0開始,即下標范圍從0到n-1。一維數組的賦值數組定義時給數組元素賦以初值逐個對數組元素賦值數組定義時給數組元素賦以初值對數組的全部元素賦初值 int num5=1,2,3,4,5; 將數組元素的初值依次放在一對花括號內,經過上述定義及初始化之后,num0中為1, num1中為2, num2中為

59、3, num3中為4, num4中為5。 當初值的個數大于數組長度時,作語法錯誤處理。 int num5=1,2,3,4,5,6; 是不合法的,因為num數組只能有5個元素。數組定義時給數組元素賦以初值對數組的部分元素賦初值 int num5=1,2,3; 只給前3個元素賦初值,其余2個元素的值為0。對全部數組元素賦初值時,可以不指定數組的長度。 int num =1,2,3,4,5; 等價于 int num 5=1,2,3,4,5;逐個對數組元素賦值int a5;a0=1;a1=2;a2=3;a3=4;a4=5;int a5,i; for(i=0;i5;i+) ai=i+1;等價逐個對數組元

60、素賦值int a5; scanf(“%d”,&a0);scanf(“%d”,&a1);scanf(“%d”,&a2); scanf(“%d”,&a3);scanf(“%d”,&a4);int a5,i; for(i=0;i5;i+) scanf(“%d”,&ai);等價冒泡法排序895420859420854920854290854209大數沉淀,小數起泡a0a1a2a3a4a5for(j=0;jaj+1) t=aj;aj=aj+1;aj+1=t; 985420854209584209548209542809542089a0a1a2a3a4a5for(i=0;jaj+1) t=aj;aj=aj

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論