




已閱讀5頁,還剩240頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
歡迎學(xué)習(xí) 高級語言程序設(shè)計,華北電力大學(xué)信息網(wǎng)絡(luò)管理中心計算機基礎(chǔ)教研室,辦公室電話:2474,引 言,計算機語言的作用,C語言的語法規(guī)則,程序設(shè)計的方法,主要內(nèi)容,是人與計算機進行交流的橋梁 計算機語言分為機器語言、匯編語言和高級語言。C是高級語言,學(xué)習(xí)方法,多讀程序,熟悉語法 掌握程序設(shè)計技巧,多寫程序,多上機,學(xué)習(xí)要求,課前預(yù)習(xí),課后復(fù)習(xí),上機前要寫好程序,上機后要總結(jié),做好聽課筆記,程序規(guī)則,運算規(guī)則,語句規(guī)則等,目錄,第一章 C語言概述,第二章 順序結(jié)構(gòu)程序設(shè)計,第三章 選擇結(jié)構(gòu)程序設(shè)計,第四章 循環(huán)控制,第五章 數(shù)組,第六章 函數(shù),第七章 預(yù)處理命令,第八章 指針,第九章 文件,第一章 C語言基礎(chǔ),1.1 計算機語言,1.3 C程序的開發(fā)及上機步驟,1.2 C語言概述,1.4 基本數(shù)據(jù)類型,1.5 運算符和表達式,機器語言,匯編語言,高級語言,用0、1組成,執(zhí)行速度快,難記、不通用,用助記符便于記憶、不通用,類似自然語言和數(shù)學(xué)語言,通用性強,例如:A=10,B=4 求A+B的值,只能識別機器語言程序,1.1 計算機語言,語言處理程序,匯編語言源程序,高級語言源程序,匯編程序,?,解釋編譯,目的程序,源程序,目的程序,可執(zhí)行程序,鏈接程序,編譯程序,源程序,結(jié)果,解釋程序,不同的語言需不同的編譯程序,1.1 程序設(shè)計語言發(fā)展歷史,CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成 如:10000000 加 10010000 減,用助記符號描述的指令系統(tǒng) 如 ADD A, B,面向機器的語言,程序設(shè)計是數(shù)據(jù)被加工的過程,客觀世界可以分類,對象是類的實例 對象是數(shù)據(jù)和方法的封裝 對象間通過發(fā)送和接受消息發(fā)生聯(lián)系,程序設(shè)計關(guān)鍵是定義類,并由類派生對象,BASIC VB FORTRAN VF PASCAL Delphi,C,Turbo C+ Visual C+ Borland C+ C+ Builder,常用高級程序設(shè)計語言,Ada,ALGOL60,ALGOL68,Pascal,Modula-2,CPL,BCPL,B,C,C+,Java,LISP,PROLOG,COBOL,FORTRAN77,FORTRAN,PL/1,Simula 67,Smalltalk 80,BASIC,ANSI-BASIC,QBASIC,VB,FORTRAN90,產(chǎn)生背景 產(chǎn)生過程 時間:19721973 地點:美國貝爾實驗室 目的:UNIX操作系統(tǒng) 設(shè)計人: Ken.Thompson和Dennis.M.Ritchie C標準 標準C: K&R合著The C Programming Language ANSI C: 1983年 87 ANSI C: 1987年 1990年國際標準的ANSI C,C語言發(fā)展過程,語言簡潔、緊湊、靈活 運算符和數(shù)據(jù)類型豐富 程序設(shè)計結(jié)構(gòu)化、模塊化 生成目標代碼質(zhì)量高 可移植性好,1.2 C語言特點,32個關(guān)鍵字:(由系統(tǒng)定義,不能重作其它定義) auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while,1.2 C語言特點,9種控制語句: if( )else for( ) while( ) dowhile( ) continue break switch goto return,1.2 C語言特點,34種運算符: 算術(shù)運算符: + - * / % + - 關(guān)系運算符: = != 邏輯運算符: ! & | 位運算符 : | & 賦值運算符: = 及其擴展 條件運算符: ?: 逗號運算符: , 指針運算符: * & 求字節(jié)數(shù) : sizeof 強制類型轉(zhuǎn)換:(類型) 分量運算符: . - 下標運算符: 其它 : ( ) -,1.2 C語言特點,例1.1 第一個程序 Hello,World!,/* example1.1 The first C Program*/ #include main() printf(“Hello,World!”); ,輸出: Hello,World!,1.3 C程序格式和結(jié)構(gòu)特點,例1.2,/* example1.1 calculate the sum of a and b*/ #include /* This is the main program */ main() int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %dn“,sum); /* This function calculates the sum of x and y */ int add(int x,int y) int z; z=x+y; return(z); ,運行結(jié)果: sum=34,格式特點 習(xí)慣用小寫字母,大小寫敏感 不使用行號,無程序行概念 可使用空行和空格 常用鋸齒形書寫格式,main( ) . . . . ,main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum); ,優(yōu)秀程序員的素質(zhì)之一: 使用TAB縮進 對齊 有足夠的注釋 有合適的空行,1.3 C程序格式和結(jié)構(gòu)特點,結(jié)構(gòu)特點 函數(shù)與主函數(shù) 程序由一個或多個函數(shù)組成 必須有且只能有一個主函數(shù)main() 程序執(zhí)行從main開始,在main中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。 程序語句 C程序由語句組成 用“;”作為語句終止符 注釋 /* */為注釋,不能嵌套 不產(chǎn)生編譯代碼,例: /*This is the main /* of example1.1*/ */,編譯預(yù)處理命令,1.3 C程序格式和結(jié)構(gòu)特點,C程序開發(fā)步驟,file.exe,程序代碼的錄入, 生成源程序*.c,語法分析查錯,翻譯 生成目標程序*.obj,與其它目標程序或庫 鏈接裝配,生成可執(zhí)行 程序*.exe,1. 進入Turbo C集成環(huán)境 運行Turbo C的執(zhí)行程序TC.EXE,就進入了Turbo C集成環(huán)境, TC主屏由四部分組成:主菜單、編輯窗口、信息窗口和功能鍵提示行。 在進行編輯程序之前應(yīng)設(shè)置好包含文件、庫文件、輸出文件和Turbo C系統(tǒng)所在的目錄。 2. 編輯 在編輯窗口中將編寫好的程序輸入計算機或?qū)σ呀?jīng)存在的源程序文件進行修改的過程,就是源程序的編輯過程。 FileLoad命令: 輸入一個要編輯的源程序名字,則編輯窗口中的NONAME.C被新輸入的名字取代。 若被編輯的是一個新文件,則可以輸入編寫好的程序到編輯窗口; 若被編輯的是一個舊文件,則可以對其進行修改。 FileSave命令: 保存文件。 FileNew命令: 在清屏后的編輯窗口,輸入程序 FileWrite to命令 輸入源程序名字保存文件,C程序的開發(fā)及上機步驟,3.編譯 選擇CompileCompile to OBJ命令,對編輯窗口中的文件進行編譯,如果編譯成功,按F2鍵,將文件保存一下后就可進入下一個過程; 否則,若編譯失敗,則在信息窗口中將發(fā)現(xiàn)的錯誤和警告信息一一列出。 4.連接 編譯后生成的目標文件和庫文件連接在一起才能生成可執(zhí)行文件。當編譯成功后,選擇CompileLink EXE file命令,進入連接,如果出現(xiàn)錯誤,則一般要檢查庫文件和頭文件的路徑設(shè)置是否正確,修改后重新連接。,C程序的開發(fā)及上機步驟,5.運行 選擇RunRun或Ctrl+F9(兩個鍵同時按下)命令,就可以執(zhí)行程序。 若要察看運行結(jié)果,則按ALT+F5。 如果程序在運行過程中需要輸入數(shù)據(jù),則選擇了RunRun命令后,屏幕處于用戶屏狀態(tài),等待用戶輸入所需的數(shù)據(jù),數(shù)據(jù)輸入結(jié)束,運行后重新回到集成環(huán)境的主屏。 Turbo C中,編譯和連接這兩個步驟也可以通過功能鍵ctrl+F9(建立.EXE可執(zhí)行文件)附帶一并一次完成。 簡言之,編輯后,可通過ctrl+F9 一起完成若有錯,則要反復(fù)多次。 6. 退出Turbo環(huán)境 選擇FileOS shell命令,可以暫時退出Turbo C,轉(zhuǎn)到DOS提示符下,此時,若再鍵入EXIT,則又可以返回Turbo C集成環(huán)境的主屏。 選擇FileQuit命令,徹底退出Turbo C,返回到DOS提示符下。,1.3 C程序的開發(fā)及上機步驟,1.4 基本數(shù)據(jù)類型,整型,字符型,實型,有,無,說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以IBM PC機為例:,1.4 基本數(shù)據(jù)類型,常量與變量 標識符 定義:用來標識變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個字母必須是字母或下劃線 大小寫敏感 不能使用關(guān)鍵字 長度:最長32個字符 命名原則: 見名知意 不宜混淆 如l與I, o與0,例:判斷下列標識符號合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,M.D.John,3days,#33,char,$123,ab,1.4 基本數(shù)據(jù)類型,一般用大寫字母 是宏定義預(yù)處理命令,不是C語句 直接常量: 整型常量 實型常量 字符常量 字符串常量,如 #define PRICE 30,常量 定義:程序運行時其值不能改變的量(即常數(shù)) 分類: 符號常量:用標識符代表常量 定義格式: #define 符號常量 常量,例 符號常量舉例(ch2_1.c) #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,運行結(jié)果:total=300,1.4 基本數(shù)據(jù)類型,整型常量(整常數(shù)) 三種形式: 十進制整數(shù):由數(shù)字09和正負號表示.如 123,-456,0 八進制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011 十六進制整數(shù):由0x開頭,后跟09,af,AF表示. 如0x123,0Xff,例 12 與 12L,例 30000 為int型 65536 為long int 型,整型常量的類型 根據(jù)其值所在范圍確定其數(shù)據(jù)類型 在整常量后加字母l或L,認為它是long int 型常量,問題: 0123 = ( )10 0x123 = ( )10 0Xff = ( )10,1.4 基本數(shù)據(jù)類型,實型常量(實數(shù)或浮點數(shù)) 表示形式: 十進制數(shù)形式:(必須有小數(shù)點) 如0.123, .123, 123.0, 0.0, 123. 指數(shù)形式:(e或E之前必須有數(shù)字;指數(shù)必須為整數(shù))如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5,實型常量的類型 默認double型 在實型常量后加字母f或F,認為它是float 型,1.4 基本數(shù)據(jù)類型,字符常量 定義:用單引號括起來的單個普通字符或轉(zhuǎn)義字符.,字符常量的值:該字符的ASCII碼值,如 A65, a97, 048 , n10,如 a A ? n 101,轉(zhuǎn)義字符:反斜線后面跟一個字符或一個代碼值表示,例 轉(zhuǎn)義字符舉例 main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,運行結(jié)果:(屏幕顯示) A B C Isay:”How are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,運行結(jié)果: 屏幕顯示:= 打印機輸出:,1.4 基本數(shù)據(jù)類型,字符常量與字符串常量不同,字符串常量 定義:用雙引號(“”)括起來的字符序列 存儲:每個字符串尾自動加一個 0 作為字符串結(jié)束標志,例: char ch; ch=“A”;,1.4 基本數(shù)據(jù)類型,變量 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量n;,變量初始化:定義時賦初值,例: int a,b,c; float data;,決定分配字節(jié)數(shù) 和數(shù)的表示范圍,合法標識符,例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;,變量的使用:先定義,后使用,例1 int student; stadent=19; /Undefined symbol statent in function main,例2 float a,b,c; c=a%b; /Illegal use of floating point in function main,變量定義位置:一般放在函數(shù)開頭,1.4 基本數(shù)據(jù)類型,整型變量 占字節(jié)數(shù)隨機器不同而不同,一般占一個機器字 shortintlong 可用sizeof(類型標識符)測量,實型變量 float:占4字節(jié),提供7位有效數(shù)字 double:占8字節(jié),提供1516位有效數(shù)字,字符型變量 字符變量存放字符ASCII碼 char與int數(shù)據(jù)間可進行算術(shù)運算,例 float a; a=111111.111; /* a=111111.1*/ double b; b=111111.111; /* b=111111.111*/,例 a=D; /* a=68; */ x=A+5; /* x=65+5; */ s=!+G /* s=33+71; */,沒有字符串變量,用字符數(shù)組存放,1.4 基本數(shù)據(jù)類型,例 /*ch2_003.c*/ #define PRICE 12.5 main() int num=3; float total; char ch1,ch2=D; total=num*PRICE; ch1=ch2-A+a; printf(“total=%f,ch1=%cn”,total,ch1); ,運行結(jié)果: total=37.500000, ch1=d,1.4 基本數(shù)據(jù)類型,不同類型數(shù)據(jù)間的轉(zhuǎn)換 隱式轉(zhuǎn)換 什么情況下發(fā)生 運算轉(zhuǎn)換-不同類型數(shù)據(jù)混合運算時 賦值轉(zhuǎn)換-把一個值賦給與其類型不同的變量時 輸出轉(zhuǎn)換-輸出時轉(zhuǎn)換成指定的輸出格式 函數(shù)調(diào)用轉(zhuǎn)換-實參與形參類型不一致時轉(zhuǎn)換 運算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運算時先自動轉(zhuǎn)換成同一類型,顯式轉(zhuǎn)換(強制轉(zhuǎn)換) 一般形式:(類型名)(表達式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 說明:強制轉(zhuǎn)換得到所需類型的中間變量,原變量類型不變,例 main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 結(jié)果:x=3.600000,i=3,精度損失問題,1.4 基本數(shù)據(jù)類型,1.5 運算符和表達式,算術(shù)運算符和表達式 基本算術(shù)運算符: + - * / % 結(jié)合方向:從左向右 優(yōu)先級: - -* / % - + - (2) (3) (4) 說明: “-”可為單目運算符時,右結(jié)合性 兩整數(shù)相除,結(jié)果為整數(shù) %要求兩側(cè)均為整型數(shù)據(jù),例 5/2 = -5/2.0 =,例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2,例 5/2 = 2 -5/2.0 = -2.5,例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 (),1.5 運算符和表達式,自增、自減運算符+ - 作用:使變量值加1或減1 種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1),說明: + - 不能用于常量和表達式,如5+,(a+b)+ + -結(jié)合方向: 自右向左 優(yōu)先級:- + - -* / % -+ - (2) (3) (4),例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例 -i+ i=3; printf(“%d”,-i+);,1.5 運算符和表達式,賦值運算符和表達式 簡單賦值運算符 符號: = 格式: 變量標識符=表達式 作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量,復(fù)合賦值運算符 種類:+= -= *= /= %= = = &= = |= 含義: exp1 op= exp2 exp1 = exp1 op exp2,例 a=3; d=func(); c=d+2;,1.5 運算符和表達式,說明: 結(jié)合方向:自右向左 優(yōu)先級: 14 左側(cè)必須是變量,不能是常量或表達式,賦值表達式的值與變量值相等,且可嵌套,賦值轉(zhuǎn)換規(guī)則:使賦值號右邊表達式值自動轉(zhuǎn)換成其左邊變量的類型,例 3=x-2*y; a+b=3;,例 float f; int i; i=10; f=i; 則 f=10.0,例 int i; i=2.56; /結(jié)果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表達式值為5,a,b,c值為5,/ b=5;a=5,/表達式值11,c=6,a=11,/表達式值10,a=10,b=4,c=6,/表達式值5,a=5,b=10,c=2,1.5 運算符和表達式,逗號運算符和表達式 形式:表達式1,表達式2,表達式n 結(jié)合性:從左向右 優(yōu)先級: 15 逗號表達式的值:等于表達式n的值 用途:常用于循環(huán)for語句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表達式值60,/a=15,表達式值20,/賦值表達式,表達式值18,x=18,/逗號表達式,表達式值18,x=3,/1,2,3,/3,2,3,、=、 = =(等于)、 !=(不等于) 關(guān)系運算符優(yōu)先級從高到低為 、 = = = 、 != 結(jié)合方向從左到右。 a= =b的結(jié)果為, aB的結(jié)果為,關(guān)系運算,1.5 運算符和表達式,C語言提供三個邏輯運算符: &(邏輯與)、|(邏輯或)、!(邏輯非),邏輯運算,1.5 運算符和表達式,! (非) 算術(shù)運算符 關(guān)系運算符 & 和 | | 賦值運算符,(高),(低),例如:,( a b ) & ( x y ),( (! a )+b) | | ( a b ),a b & x y,! a+b | | a b,1.5 運算符和表達式,邏輯運算的結(jié)果只可能為1或0;,邏輯運算的對象可以是任何類型的數(shù)據(jù), “非0”為“真”, “0”為“假”。,a&b&c (與短路運算) (m=ab) &(n=cd),a|b|c (或短路),main() int m,n=10; m=2 ,條件運算,形式為: e1?e2:e3 其中e1,e2,e3都是表達式。 一般而言,e1為條件表達式,當e1的值為真時(即非0),e2的值作為整個表達式的值,不再計算e3的值,若e1的值為假(即為)時,取e3的值作為整個表達式的結(jié)果,而不計算e2的值。 如:max(xy?x:y); 將和中較大的一個數(shù)賦值給變量max 條件運算符的結(jié)合性是由右向左。,1.5 運算符和表達式,第二章 順序結(jié)構(gòu)程序設(shè)計,數(shù)據(jù)輸出,數(shù)據(jù)輸入,順序結(jié)構(gòu),順 序 結(jié) 構(gòu),三種基本結(jié)構(gòu),順序結(jié)構(gòu),、選擇結(jié)構(gòu),、循環(huán)結(jié)構(gòu),順序結(jié)構(gòu),開 始,賦 值,處 理,輸 出,結(jié)束,流程圖,賦 值,處 理,輸 出,N-S圖,賦值語句,賦值表達式;,格式,數(shù) 據(jù) 輸 出,printf(“格式控制”,輸出項),printf函數(shù)的格式,如: printf(“%d,%d,%d”,a,b,a+b),如: printf(“ t= %f, sint= %f n ”,t,sin(t),格式說明,%d,按十進制輸出整數(shù),%f,按小數(shù)形式輸出實數(shù),n,換行,其它字符,原樣輸出,例:當a=10,b=-5.3時,寫出下面語句的輸出結(jié)果,格式輸出語句,printf(“ 格式控制”,輸出項);,printf(“%d , %f”,a,b);,10,-5.300000,printf(“a=%d nb=%f”,a,b);,a=,10,b=,-5.300000,輸出項:變量、表達式、函數(shù),格式控制:,為輸出項提供格式說明,提供需要原樣輸出的文字或字符,;,;,格式說明的個數(shù)=輸出項個數(shù),格式說明的類型=輸出項類型,數(shù) 據(jù) 輸 出,控制輸出數(shù)據(jù)的寬度,格式說明,意 義,數(shù)據(jù)寬度,%d,按十進制輸出整數(shù),%f,按小數(shù)形式輸出實數(shù),系統(tǒng)決定,%md,注:m、n為整型常數(shù),按十進制輸出整數(shù),占m位,例1 a=23,b=34,c=-55,寫出下面語句的運行結(jié)果,printf(“a=%d,b=%5d,c=%2d”,a,b,c),a=,23,b=, 34,c=-55,%m.nf,按小數(shù)形式輸出實數(shù),(小數(shù)占6位),.,(實際位數(shù)),系統(tǒng)決定,.,.,n位,m位,例2 t=2.346寫出下面語句的運行結(jié)果,printf(“t=%f,%5.2f,%3.2f”,t,t,t),t=,2.346000,2.35,2.35,舉 例,例1 已知三邊長,求三角形面積(四舍五入保留兩位小數(shù))。,輸 入,處 理,輸 出,如何保留小數(shù)?,13.456,13.46,1)移動小數(shù)點,13.456*100,2)加0.5,1345.6+0.5,3)取整,4)小數(shù)點還原,1346/100,area*100,.0,=1345.6,=1346.1,1346,=13.46,(int)( ),+0.5,/100,用同一個程序計算邊長為任意值的三角形面積,設(shè)邊長為a、b、c,則:,問題,s=(a+b+c)/2;,float a,b,c,s,area;,a=3.0;b=4.0;c=6.0;,area=sqrt(s*(s-a)*(s-b)*(s-c);,printf(“area=%fn”,area);,area=(int)(area*100+0.5)/100.0;,#include “math.h”,main( ),%f,%6.2f,printf(“a,b,c=%f,%f,%fn”,a,b,c);,a,b,c=,area=,3.000000,4.000000,6.000000,5.330000,a,b,c=,area=,數(shù)據(jù)輸入,scanf函數(shù)的格式,scanf(“格式控制”,地址表),如:scanf(“%d,%f”,&a,&b),地址表列:,&a:變量a的地址,&b:變量b的地址,scanf(“格式控制”,地址表);,數(shù)據(jù)輸入語句,;,%d,按十進制輸入整數(shù),%f,按小數(shù)形式輸入實數(shù),其它字符,原樣輸入,&:地址運算符,格式控制:,指定數(shù)據(jù)輸入的格式,例如:設(shè)a=2,b=2.5,寫出執(zhí)行下面的語句時,數(shù)據(jù)輸入的形式。,scanf(“%d%f”,scanf(“%d,%f”,scanf(“a=%d,b=%f”,2,2.5, :數(shù)據(jù)間的分隔符,2,,,2.5,2,,,2.5,a=,b=,輸 入緩沖區(qū),a,b,內(nèi)存單元,P79P82,意義,程序運行時,例2 將兩個變量中的值互換。,分析,a,b,2,1,1,a,2,b,方法一:,a,b,2,1,a=b,b=a,1,1,方法二:,醬油,醋,2,a=b,b=c,c,醋,醬油,醬油,=a,c,a,b,c,1,2,輸 入,交 換,輸 出,main( ),int a,b,c;,scanf(“%d,%d”,c=a;,a=b;,b=c;,printf(“a=%d,b=%dn”,a,b);,printf(“a=%d,b=%dn”,a,b);,printf(“Please input a,b:”);,中間變量的類型要與原始變量一致,Please input a,b:,2 , 1 ,a=2,b=1,a=1,b=2,實際問題,數(shù)學(xué)模型,計算方法,編 程,編輯程序,編譯查錯,連接,錯?,修改程序,修改算法,修改模型,錯?,運行程序,錯?,小結(jié),第三章 選擇結(jié)構(gòu)程序設(shè)計,選擇結(jié)構(gòu),選擇結(jié)構(gòu)實現(xiàn)一 if語句,選擇結(jié)構(gòu)實現(xiàn)二 else if語句,選擇結(jié)構(gòu)實現(xiàn)三 if語句的嵌套,關(guān)系表達式和邏輯表達式,多分支選擇結(jié)構(gòu),x0?,YES,NO,真,假,選 擇 結(jié) 構(gòu),main() int x; scanf(“%d”, ,選擇結(jié)構(gòu),算法圖示,流程圖,N-S圖,x0,真,YES,假,NO,P22P26,條件,根據(jù)條件是否為真而選擇執(zhí)行不同的程序塊,關(guān)系表達式,關(guān)系運算符及其優(yōu)先級,=,(小于),(小于等于),=,(大于),= =,(大于等于),!=,(等于),(不等于),同 級,同 級,高,低,關(guān)系表達式,ab,-1!=c+3,各種運算符的優(yōu)先級,關(guān)系表達式的結(jié)果,t=5=3,算術(shù),關(guān)系,賦值,得整數(shù)值:0或1,0:,假,1:,真,例 若a=5,b=7,計算表達式的值,b (a=4)+1,4,5,1,c=ab,(c實型),1,1.0,c,1.0,邏 輯 表 達 式,邏輯運算符,| |,&,(邏輯與),!,(邏輯或),(邏輯非),邏輯表達式,各種運算符的優(yōu)先級,邏輯表達式的值,得整數(shù)值:0或1,0:,假,1:,真,運算對象,非0:,真,0:,假,例 若a=3,b=4,c=5,計算表達式的值,!a | b + c & b c,9,-1,1,1,a+bc&b=c,!(x=a)&(y=b),低,高,非,關(guān)系,與,算術(shù),賦值,或,0,if語句,if語句的格式,if(表達式),if子句,else,else子句,執(zhí)行過程,表達式為真?,if子句,真,假,else子句,if(x0),printf(“nx=%d,YES”,x);,else,printf(“nx=%d,NO ”,x);,if(x0),printf(“nx=%d”,x);,else,printf(“nx=%d”,x);,printf(“YES”);,printf(“NO”);,非0:真 0:假,退出,if子句或else子句包含多個語句,就要用、括起來,表達式為真?,真,If子句,假,else子句,例1 判斷一個數(shù)能否被3整除,若能被3整除,計算該數(shù)的立方,并打印yes,否則,計算該數(shù)的平方,并打印no。,main( ),int x,pf,lf;,printf(“nPlease input x:”);,scanf(“%d”,if(x%3=0),lf=x*x*x;,printf(“x=%d,yesnlf=%d”,x,lf);,else,pf=x*x;,printf(“x=%d,nonpf=%d”,x,pf);,x%3=0,真,計算x3,假,計算x2,輸出,輸出,舉 例,if語句,省略else的選擇結(jié)構(gòu),if(表達式),if子句,執(zhí)行過程,表達式為真?,if子句,真,假,退出,例2 寫出程序的運行結(jié)果,main( ), int a,b,s;,if(ab) s=b;,s*=s;,printf(“%dn”,s);,s=a;,3,4,3,4,16,scanf(“%d,%d”,3,4,16,4,3 ,16,3,4,4,16,表達式為 真?,真,If子句,假,例3比較a、b、c三個數(shù)的大小,將最大的數(shù)放在a中。,main( ), int a,b,c,d;,if(ab),printf(“The result is :”);,printf(“a,b,c=%d,%d,%dn”, a,b,c);,scanf(“%d,%d,%d”,printf(“nPlease input a,b,c:”);,d=a;a=b;b=d;,ab?,真,a、b交換,假,ac?,真,a、c交換,假,舉 例,if(ac),d=a;a=c;c=d;,else if語句,else if語句,if(表達式0),if子句,else if(表達式1),else if子句1,else if(表達式2),else if子句2,else,else 子句,執(zhí)行過程,式0為真?,A,真,假,退 出,式1為真?,式2為真?,真,真,B,假,C,假,D,式0為真?,真,A,假,式1為真?,真,B,假,式2真?,真,C,假,D,例4 讀程序?qū)戇\行結(jié)果,main ( ), float a;,int m;,scanf(“%f”,if(a30)m=1;,else if(a40)m=2;,else if(a50)m=3;,else m=4;,printf(“a=%4.1f,m=%dn”,a,m);,36.3,a=36.3,m=2,90,a=90.0,m=4,40,a=40.0,m=3,16.7,a=16.7,m=1,舉 例,例5 編寫程序計算表達式的值:,main( ), float x,y;,printf(“nInput x:”);,scanf(“%f”,if(x0),else if(x10),else,printf(“x=%5.2f,y=%5.2f”,x,y);,x0,真,y=x,假,x10,真,y=x-1,假,y=x+1,y=x;,y=x-1;,y=x+1;,舉 例,If語句的嵌套,if語句嵌套的格式,if(表達式1),else,else子句,else子句,內(nèi)嵌if,執(zhí)行過程,式1為真?,式2為真?,真,真,if子句,假,else子句,假,內(nèi)嵌 if,退 出,退 出,分清if的層次,if子句,else 子句,if(表達式2),else,if子句,if(表達式3),if子句,else,內(nèi)嵌if,else總是與上面最近的if配對,例6 下面的程序要計算函數(shù)的值,判斷哪個程序正確.,if(x=0),if(x0) y=1;,else y=0;,else y=-1;,x,1,0,0,-9,-1,在if子句中嵌套具有else子句的if 語句,不會發(fā)生語法錯誤,y=-1;,if(x!=0),if(x0) y=1;,else y=0;,x,1,0,-1,-9,0,y=-1;,if(x!=0),if(x0) y=1;,else y=0;,x,1,0,0,-9,-1,在if子句中嵌套沒有else子句的if 語句,內(nèi)嵌的 if語句要用、括起來.,y,40,y,40,y,40,舉 例,舉 例,例7 編寫程序計算表達式的值:,x0,真,y=x,假,x-5&x20,真,輸出x和y,假,main( ), float x,y;,scanf(“%f”,If(x-5&x20), if(x0),y=x;,else,If(x10),y=x-1;,else,y=x+1;,printf(“x=%5.2f,y=%5.2f”,x,y); ,x10,真,y=x-1,y=x+1,假,多分支選擇結(jié)構(gòu),switch語句,switch(表達式),case 常量表達式1:語句1,case 常量表達式2:語句2,case 常量表達式n:語句n,default :語句n+1,語句體,整型,類型相同,零個或一個以上的語句,執(zhí)行過程,計算表達式的值,執(zhí)行該常量表達式后各語句,是,執(zhí)行default后各語句,不是,退出,例8 寫出下面程序的運行結(jié)果。,main( ),int g;,scanf(“%d”,switch(g/10), case 10:,case 9: printf(“An”);,case 8: printf(“Bn”);,case 7: printf(“Cn”);,case 6: printf(“Dn”);,default: printf(“En”); ,main( ),int g;,scanf(“%d”,printf(“g=%d”,g);,switch(g/10), case 10:,case 9: printf(“An”);break;,case 8: printf(“Bn”);break;,case 7: printf(“Cn”);break;,default: printf(“En”); ,100,g=100,B,C,D,E,45,100,g=45,g=100,78,g=78,45,g=45,A,E,A,跳出switch語句體,C,E,舉 例,printf(“g=%d”,g);,case 6: printf(“Dn”);break;,第四章 循環(huán)控制,循環(huán)結(jié)構(gòu)實現(xiàn)一 用if和goto構(gòu)成循環(huán),循環(huán)結(jié)構(gòu)實現(xiàn)三 do-while循環(huán),循環(huán)結(jié)構(gòu)實現(xiàn)四 for循環(huán),循環(huán)結(jié)構(gòu)的概念,循環(huán)結(jié)構(gòu)實現(xiàn)二 while循環(huán),循環(huán)的嵌套,break和continue語句,程序舉例,循環(huán)結(jié)構(gòu)的概念,goto語句的格式,goto 語句標號,應(yīng)用示例,語句標號的命名規(guī)則與變量名相同,goto key;,key: s+=x;,帶標號的語句的格式,語句標號:語句,執(zhí)行過程,s+=x,循環(huán)結(jié)構(gòu)的概念,某段程序被有限次地執(zhí)行,被反復(fù)執(zhí)行,沒有出口,If語句和goto語句構(gòu)成循環(huán),形式,標號:if(表達式 ),goto 標號,循環(huán)體,執(zhí)行過程,真,假,退出,當表達式為真,循環(huán)體,舉 例,例1 編寫程序計算表達式的值:,x0,真,y=x,假,x10,真,y=x-1,假,y=x+1,當x=20,輸入x,main( ), float x,y;,printf(“nInput x:”);,scanf(“%f”,ks: if(x=20), printf(“Error, again:”);,goto ks; ,if(x0)y=x;,else if(x10)y=x-1;,else y=x+1;,printf(“x=%5.2f,y=%5.2f”,x,y);,scanf(“%f”,while循環(huán),while循環(huán)的一般形式,while(表達式),循環(huán)體,while(i5), printf(“%d,”,i);,i + ; ,while循環(huán)執(zhí)行過程,執(zhí)行循環(huán)體,真,退 出,假,當表達式為真時,循環(huán)體,例1 main( ), int i;,i=1;,i=i+1;,循環(huán)前:,i=1,i,第一次,循環(huán)次數(shù),i5,1,1,第二次,2,2,第三次,3,3,第四次,4,4,退出循環(huán):,i=5,關(guān)注循環(huán)前、循環(huán)中、循環(huán)后控制變量的值,例2 編程序,計算 s=1+2+3+100,(1) 如何得到加數(shù)?,i:,while(i5), printf(“%d,”,i);,i + ;,i=1;,i=14,i=100,(2) 如何實現(xiàn)累加?,s為被加數(shù),初始:s=0,i=1:,s+i,s,s=s+i;,i=2:,i=100:,s+=i;,1、2、100,s=0;,i=1,s=0,當 i=100時,s+=i,i+,輸 出,s+=i;,s+i,s,s+i,s,main ( ), int i,s;,i=1;,s=0;,while(i=100), s+=i;,i+; ,printf(“s=%d”,s);,1,1+2,1+2+.+100,i=3:,s,s+i,1+2+3,舉 例,do-while循環(huán),do-while循環(huán)的一般形式,do,循環(huán)體,while(表達式) ;,while(i5);, printf(“%d,”,i);,i + ; ,do-while循環(huán)執(zhí)行過程,執(zhí)行循環(huán)體,真,退 出,假,當表達式為真,循環(huán)體,例1 main( ), int i;,i=1;,循環(huán)前:,i=1,i,第一次,循環(huán)次數(shù),1,1,第二次,2,2,第三次,3,3,第四次,4,4,退出循環(huán):,i=5,do,例2 輸入任意n個數(shù),計算其中奇數(shù)和及偶數(shù)和,并統(tǒng)計奇數(shù)個數(shù)。,while(i5);, printf(“%d,”,i);,i + ; ,i=1;,do,i=n,在循環(huán)之前確定n,(2) 如何統(tǒng)計個數(shù)?,i=1,jh=0,oh=0,tj=0,輸入n,x%2=0,輸入x,真,oh+=x,假,jh+=x,tj+,i+,當i=n時,輸出,舉 例,scanf(“%d”,執(zhí)行一次scanf,就為變量輸入一個新值,(1) 如何得到n個數(shù)?,main( ), int i=1,jh=0,oh=0,tj=0,n,x;,printf(“Please input n:”);,scanf(“%d”,do, scanf(“%d”,if(x%2=0),oh+=x;,else,jh+=x,tj+;,i+;,while(i=n);,printf(“The result:”);,printf(“oh=%d”,oh);,printf(“jh=%d,tj=%d”,jh,tj);,for循環(huán),for循環(huán)的一般形式,for(表達式1;表達式2;表達式3),循環(huán)體,printf(“*”);,for循環(huán)執(zhí)行過程,計算表達式1,真,退 出,假,例1 main( ), int k;, ,for(k=0;k10;k+),執(zhí)行循環(huán)體,計算表達式3,k的取值:,執(zhí)行循環(huán)體:,09,退出循環(huán)體:,10,例2 計算n的階乘。,n!=12 3 (n-1)n,遞歸定義:,n!=(n-1)! n,(n-1)!=(n-2)! (n-1),結(jié)論:,已知0!,求n!,p:存放階乘,i:計數(shù),過程:,p=0!=1,1!,p*1,2!,p*2,(n-1)!,p*(n-1),n!,p*n,確定n,p=1,for i=1to n,p*=i,輸出,main( ),scanf(“%d”,p=1;,for(i=1;i=n;i+),p*=i;,p,p,p,p,p*=i;,表達式1:i=1 表達式2:i=n 表達式3:i+,舉 例,int n,i; long p;, int p,n,i;,Printf(“%d!=%ld”,n,p);,printf(“%d!=%d”,n,p);,循 環(huán) 的 嵌 套,循環(huán)嵌套形式,while(表達式),循環(huán)體,內(nèi)循環(huán),執(zhí)行過程,表達式為真?,假,for(e1;e2;e3), ,執(zhí)行內(nèi)循環(huán),退出,真,例1 寫出程序的運行結(jié)果,main( ),m=0;,for(j=k ; j=5 ; j+=2),m+=k*j;,printf(“m=%4d”,m); ,for( k= 5 ; k=1 ; k - -), int k,j,m;,k,j,m,5,0,5,25,7,4,25,4,41,6,3,41,3,50,5,65,7,2,65,2,69,4,77,6,1,77,1,78,3,81,5,86,7,0,m=86,問題:語句m=0;放在內(nèi)外層循環(huán)之間,結(jié)果?,m= 9,k,j,m,舉 例,m=0;,例2 寫出程序的運行結(jié)果,main( ),for(j=9-i;j=1;j- -),printf(“”);,for( i= 1 ; i=5 ; i+), int i,j,k;,for(k=1;k=2*i-1;k+),printf(“*”); , printf(“n”);,i,j,k,1,1,81,2,71,13, ,3,61,15, ,4,51,17, ,5,41,19, ,外層循環(huán):圖形的行數(shù),內(nèi)循環(huán)一:每行前導(dǎo)空格數(shù),內(nèi)層循環(huán)二:每行的*數(shù),開始新行之前要換行,找出j、k隨i變化的規(guī)律,舉 例,break語句,break語句和continue語句,格式,break;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC TR 15413:2001 EN Information technology - Font services - Abstract service definition
- 2025至2030中國電子郵件簽名軟件行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國電動鎖具行業(yè)市場深度分析及競爭格局與投資前景報告
- 2025至2030中國瑜伽短褲行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國特級面粉行業(yè)市場深度研究與戰(zhàn)略咨詢分析報告
- 學(xué)習(xí)動機的強化策略教育心理學(xué)的視角
- 智能教育未來展望組委會的角色與影響
- 2025秋季教務(wù)處工作計劃:打造8大體系 培育時代新人
- 數(shù)字化教育資源的建設(shè)與共享
- 抖音商戶短視頻拍攝流程標準化規(guī)定
- 2025年河南省中考數(shù)學(xué)試題卷(含官方答案)
- 診后疾病管理行業(yè)體系構(gòu)建
- 2025年中國鹽酸環(huán)丙沙星行業(yè)市場調(diào)查、投資前景及策略咨詢報告
- 帶狀皰疹課件(課件演示)
- T/CAS 413-2020排水管道檢測和非開挖修復(fù)工程監(jiān)理規(guī)程
- 2025-2030中國搜索引擎行業(yè)現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 藍莓鮮果采購合同協(xié)議
- 方劑歌訣(廣中醫(yī)版)
- 青年教師培養(yǎng)與發(fā)展指南
- 四新安全教育培訓(xùn)
- 農(nóng)村基礎(chǔ)設(shè)施建設(shè)小微權(quán)力清單流程
評論
0/150
提交評論