高級(jí)語言程序設(shè)計(jì)華北電力大學(xué)ALLC語言程序設(shè)計(jì).ppt_第1頁
高級(jí)語言程序設(shè)計(jì)華北電力大學(xué)ALLC語言程序設(shè)計(jì).ppt_第2頁
高級(jí)語言程序設(shè)計(jì)華北電力大學(xué)ALLC語言程序設(shè)計(jì).ppt_第3頁
高級(jí)語言程序設(shè)計(jì)華北電力大學(xué)ALLC語言程序設(shè)計(jì).ppt_第4頁
高級(jí)語言程序設(shè)計(jì)華北電力大學(xué)ALLC語言程序設(shè)計(jì).ppt_第5頁
已閱讀5頁,還剩240頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

歡迎學(xué)習(xí) 高級(jí)語言程序設(shè)計(jì),華北電力大學(xué)信息網(wǎng)絡(luò)管理中心計(jì)算機(jī)基礎(chǔ)教研室,辦公室電話:2474,引 言,計(jì)算機(jī)語言的作用,C語言的語法規(guī)則,程序設(shè)計(jì)的方法,主要內(nèi)容,是人與計(jì)算機(jī)進(jìn)行交流的橋梁 計(jì)算機(jī)語言分為機(jī)器語言、匯編語言和高級(jí)語言。C是高級(jí)語言,學(xué)習(xí)方法,多讀程序,熟悉語法 掌握程序設(shè)計(jì)技巧,多寫程序,多上機(jī),學(xué)習(xí)要求,課前預(yù)習(xí),課后復(fù)習(xí),上機(jī)前要寫好程序,上機(jī)后要總結(jié),做好聽課筆記,程序規(guī)則,運(yùn)算規(guī)則,語句規(guī)則等,目錄,第一章 C語言概述,第二章 順序結(jié)構(gòu)程序設(shè)計(jì),第三章 選擇結(jié)構(gòu)程序設(shè)計(jì),第四章 循環(huán)控制,第五章 數(shù)組,第六章 函數(shù),第七章 預(yù)處理命令,第八章 指針,第九章 文件,第一章 C語言基礎(chǔ),1.1 計(jì)算機(jī)語言,1.3 C程序的開發(fā)及上機(jī)步驟,1.2 C語言概述,1.4 基本數(shù)據(jù)類型,1.5 運(yùn)算符和表達(dá)式,機(jī)器語言,匯編語言,高級(jí)語言,用0、1組成,執(zhí)行速度快,難記、不通用,用助記符便于記憶、不通用,類似自然語言和數(shù)學(xué)語言,通用性強(qiáng),例如:A=10,B=4 求A+B的值,只能識(shí)別機(jī)器語言程序,1.1 計(jì)算機(jī)語言,語言處理程序,匯編語言源程序,高級(jí)語言源程序,匯編程序,?,解釋編譯,目的程序,源程序,目的程序,可執(zhí)行程序,鏈接程序,編譯程序,源程序,結(jié)果,解釋程序,不同的語言需不同的編譯程序,1.1 程序設(shè)計(jì)語言發(fā)展歷史,CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成 如:10000000 加 10010000 減,用助記符號(hào)描述的指令系統(tǒng) 如 ADD A, B,面向機(jī)器的語言,程序設(shè)計(jì)是數(shù)據(jù)被加工的過程,客觀世界可以分類,對(duì)象是類的實(shí)例 對(duì)象是數(shù)據(jù)和方法的封裝 對(duì)象間通過發(fā)送和接受消息發(fā)生聯(lián)系,程序設(shè)計(jì)關(guān)鍵是定義類,并由類派生對(duì)象,BASIC VB FORTRAN VF PASCAL Delphi,C,Turbo C+ Visual C+ Borland C+ C+ Builder,常用高級(jí)程序設(shè)計(jì)語言,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)生過程 時(shí)間:19721973 地點(diǎn):美國貝爾實(shí)驗(yàn)室 目的:UNIX操作系統(tǒng) 設(shè)計(jì)人: Ken.Thompson和Dennis.M.Ritchie C標(biāo)準(zhǔn) 標(biāo)準(zhǔn)C: K&R合著The C Programming Language ANSI C: 1983年 87 ANSI C: 1987年 1990年國際標(biāo)準(zhǔn)的ANSI C,C語言發(fā)展過程,語言簡潔、緊湊、靈活 運(yùn)算符和數(shù)據(jù)類型豐富 程序設(shè)計(jì)結(jié)構(gòu)化、模塊化 生成目標(biāo)代碼質(zhì)量高 可移植性好,1.2 C語言特點(diǎn),32個(gè)關(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語言特點(diǎn),9種控制語句: if( )else for( ) while( ) dowhile( ) continue break switch goto return,1.2 C語言特點(diǎn),34種運(yùn)算符: 算術(shù)運(yùn)算符: + - * / % + - 關(guān)系運(yùn)算符: = != 邏輯運(yùn)算符: ! & | 位運(yùn)算符 : | & 賦值運(yùn)算符: = 及其擴(kuò)展 條件運(yùn)算符: ?: 逗號(hào)運(yùn)算符: , 指針運(yùn)算符: * & 求字節(jié)數(shù) : sizeof 強(qiáng)制類型轉(zhuǎn)換:(類型) 分量運(yùn)算符: . - 下標(biāo)運(yùn)算符: 其它 : ( ) -,1.2 C語言特點(diǎn),例1.1 第一個(gè)程序 Hello,World!,/* example1.1 The first C Program*/ #include main() printf(“Hello,World!”); ,輸出: Hello,World!,1.3 C程序格式和結(jié)構(gòu)特點(diǎn),例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); ,運(yùn)行結(jié)果: sum=34,格式特點(diǎn) 習(xí)慣用小寫字母,大小寫敏感 不使用行號(hào),無程序行概念 可使用空行和空格 常用鋸齒形書寫格式,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縮進(jìn) 對(duì)齊 有足夠的注釋 有合適的空行,1.3 C程序格式和結(jié)構(gòu)特點(diǎn),結(jié)構(gòu)特點(diǎn) 函數(shù)與主函數(shù) 程序由一個(gè)或多個(gè)函數(shù)組成 必須有且只能有一個(gè)主函數(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)特點(diǎn),C程序開發(fā)步驟,file.exe,程序代碼的錄入, 生成源程序*.c,語法分析查錯(cuò),翻譯 生成目標(biāo)程序*.obj,與其它目標(biāo)程序或庫 鏈接裝配,生成可執(zhí)行 程序*.exe,1. 進(jìn)入Turbo C集成環(huán)境 運(yùn)行Turbo C的執(zhí)行程序TC.EXE,就進(jìn)入了Turbo C集成環(huán)境, TC主屏由四部分組成:主菜單、編輯窗口、信息窗口和功能鍵提示行。 在進(jìn)行編輯程序之前應(yīng)設(shè)置好包含文件、庫文件、輸出文件和Turbo C系統(tǒng)所在的目錄。 2. 編輯 在編輯窗口中將編寫好的程序輸入計(jì)算機(jī)或?qū)σ呀?jīng)存在的源程序文件進(jìn)行修改的過程,就是源程序的編輯過程。 FileLoad命令: 輸入一個(gè)要編輯的源程序名字,則編輯窗口中的NONAME.C被新輸入的名字取代。 若被編輯的是一個(gè)新文件,則可以輸入編寫好的程序到編輯窗口; 若被編輯的是一個(gè)舊文件,則可以對(duì)其進(jìn)行修改。 FileSave命令: 保存文件。 FileNew命令: 在清屏后的編輯窗口,輸入程序 FileWrite to命令 輸入源程序名字保存文件,C程序的開發(fā)及上機(jī)步驟,3.編譯 選擇CompileCompile to OBJ命令,對(duì)編輯窗口中的文件進(jìn)行編譯,如果編譯成功,按F2鍵,將文件保存一下后就可進(jìn)入下一個(gè)過程; 否則,若編譯失敗,則在信息窗口中將發(fā)現(xiàn)的錯(cuò)誤和警告信息一一列出。 4.連接 編譯后生成的目標(biāo)文件和庫文件連接在一起才能生成可執(zhí)行文件。當(dāng)編譯成功后,選擇CompileLink EXE file命令,進(jìn)入連接,如果出現(xiàn)錯(cuò)誤,則一般要檢查庫文件和頭文件的路徑設(shè)置是否正確,修改后重新連接。,C程序的開發(fā)及上機(jī)步驟,5.運(yùn)行 選擇RunRun或Ctrl+F9(兩個(gè)鍵同時(shí)按下)命令,就可以執(zhí)行程序。 若要察看運(yùn)行結(jié)果,則按ALT+F5。 如果程序在運(yùn)行過程中需要輸入數(shù)據(jù),則選擇了RunRun命令后,屏幕處于用戶屏狀態(tài),等待用戶輸入所需的數(shù)據(jù),數(shù)據(jù)輸入結(jié)束,運(yùn)行后重新回到集成環(huán)境的主屏。 Turbo C中,編譯和連接這兩個(gè)步驟也可以通過功能鍵ctrl+F9(建立.EXE可執(zhí)行文件)附帶一并一次完成。 簡言之,編輯后,可通過ctrl+F9 一起完成若有錯(cuò),則要反復(fù)多次。 6. 退出Turbo環(huán)境 選擇FileOS shell命令,可以暫時(shí)退出Turbo C,轉(zhuǎn)到DOS提示符下,此時(shí),若再鍵入EXIT,則又可以返回Turbo C集成環(huán)境的主屏。 選擇FileQuit命令,徹底退出Turbo C,返回到DOS提示符下。,1.3 C程序的開發(fā)及上機(jī)步驟,1.4 基本數(shù)據(jù)類型,整型,字符型,實(shí)型,有,無,說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機(jī)器硬件不同而不同,上表以IBM PC機(jī)為例:,1.4 基本數(shù)據(jù)類型,常量與變量 標(biāo)識(shí)符 定義:用來標(biāo)識(shí)變量、常量、函數(shù)等的字符序列 組成: 只能由字母、數(shù)字、下劃線組成,且第一個(gè)字母必須是字母或下劃線 大小寫敏感 不能使用關(guān)鍵字 長度:最長32個(gè)字符 命名原則: 見名知意 不宜混淆 如l與I, o與0,例:判斷下列標(biāo)識(shí)符號(hào)合法性 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語句 直接常量: 整型常量 實(shí)型常量 字符常量 字符串常量,如 #define PRICE 30,常量 定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù)) 分類: 符號(hào)常量:用標(biāo)識(shí)符代表常量 定義格式: #define 符號(hào)常量 常量,例 符號(hào)常量舉例(ch2_1.c) #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); ,運(yùn)行結(jié)果:total=300,1.4 基本數(shù)據(jù)類型,整型常量(整常數(shù)) 三種形式: 十進(jìn)制整數(shù):由數(shù)字09和正負(fù)號(hào)表示.如 123,-456,0 八進(jìn)制整數(shù):由數(shù)字0開頭,后跟數(shù)字07表示.如0123,011 十六進(jìn)制整數(shù):由0x開頭,后跟09,af,AF表示. 如0x123,0Xff,例 12 與 12L,例 30000 為int型 65536 為long int 型,整型常量的類型 根據(jù)其值所在范圍確定其數(shù)據(jù)類型 在整常量后加字母l或L,認(rèn)為它是long int 型常量,問題: 0123 = ( )10 0x123 = ( )10 0Xff = ( )10,1.4 基本數(shù)據(jù)類型,實(shí)型常量(實(shí)數(shù)或浮點(diǎn)數(shù)) 表示形式: 十進(jìn)制數(shù)形式:(必須有小數(shù)點(diǎn)) 如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,實(shí)型常量的類型 默認(rèn)double型 在實(shí)型常量后加字母f或F,認(rèn)為它是float 型,1.4 基本數(shù)據(jù)類型,字符常量 定義:用單引號(hào)括起來的單個(gè)普通字符或轉(zhuǎn)義字符.,字符常量的值:該字符的ASCII碼值,如 A65, a97, 048 , n10,如 a A ? n 101,轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示,例 轉(zhuǎn)義字符舉例 main() printf(“101 x42 Cn“); printf(“I say:“How are you?“n“); printf(“C Programn“); printf(“Turbo C“); ,運(yùn)行結(jié)果:(屏幕顯示) A B C Isay:”How are you?” C Program Turbo C,例 main() printf(“Yb=n”); ,運(yùn)行結(jié)果: 屏幕顯示:= 打印機(jī)輸出:,1.4 基本數(shù)據(jù)類型,字符常量與字符串常量不同,字符串常量 定義:用雙引號(hào)(“”)括起來的字符序列 存儲(chǔ):每個(gè)字符串尾自動(dòng)加一個(gè) 0 作為字符串結(jié)束標(biāo)志,例: char ch; ch=“A”;,1.4 基本數(shù)據(jù)類型,變量 概念:其值可以改變的量 變量名與變量值 變量定義的一般格式: 數(shù)據(jù)類型 變量1,變量n;,變量初始化:定義時(shí)賦初值,例: int a,b,c; float data;,決定分配字節(jié)數(shù) 和數(shù)的表示范圍,合法標(biāo)識(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ù)隨機(jī)器不同而不同,一般占一個(gè)機(jī)器字 shortintlong 可用sizeof(類型標(biāo)識(shí)符)測量,實(shí)型變量 float:占4字節(jié),提供7位有效數(shù)字 double:占8字節(jié),提供1516位有效數(shù)字,字符型變量 字符變量存放字符ASCII碼 char與int數(shù)據(jù)間可進(jìn)行算術(shù)運(yùn)算,例 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); ,運(yùn)行結(jié)果: total=37.500000, ch1=d,1.4 基本數(shù)據(jù)類型,不同類型數(shù)據(jù)間的轉(zhuǎn)換 隱式轉(zhuǎn)換 什么情況下發(fā)生 運(yùn)算轉(zhuǎn)換-不同類型數(shù)據(jù)混合運(yùn)算時(shí) 賦值轉(zhuǎn)換-把一個(gè)值賦給與其類型不同的變量時(shí) 輸出轉(zhuǎn)換-輸出時(shí)轉(zhuǎn)換成指定的輸出格式 函數(shù)調(diào)用轉(zhuǎn)換-實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換 運(yùn)算轉(zhuǎn)換規(guī)則:不同類型數(shù)據(jù)運(yùn)算時(shí)先自動(dòng)轉(zhuǎn)換成同一類型,顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換) 一般形式:(類型名)(表達(dá)式) 例 (int)(x+y) (int)x+y (double)(3/2) (int)3.6 說明:強(qiáng)制轉(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 運(yùn)算符和表達(dá)式,算術(shù)運(yùn)算符和表達(dá)式 基本算術(shù)運(yùn)算符: + - * / % 結(jié)合方向:從左向右 優(yōu)先級(jí): - -* / % - + - (2) (3) (4) 說明: “-”可為單目運(yùn)算符時(shí),右結(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 運(yùn)算符和表達(dá)式,自增、自減運(yùn)算符+ - 作用:使變量值加1或減1 種類: 前置 +i, -i (先執(zhí)行i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再執(zhí)行i+1或i-1),說明: + - 不能用于常量和表達(dá)式,如5+,(a+b)+ + -結(jié)合方向: 自右向左 優(yōu)先級(jí):- + - -* / % -+ - (2) (3) (4),例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3,例 -i+ i=3; printf(“%d”,-i+);,1.5 運(yùn)算符和表達(dá)式,賦值運(yùn)算符和表達(dá)式 簡單賦值運(yùn)算符 符號(hào): = 格式: 變量標(biāo)識(shí)符=表達(dá)式 作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量,復(fù)合賦值運(yùn)算符 種類:+= -= *= /= %= = = &= = |= 含義: exp1 op= exp2 exp1 = exp1 op exp2,例 a=3; d=func(); c=d+2;,1.5 運(yùn)算符和表達(dá)式,說明: 結(jié)合方向:自右向左 優(yōu)先級(jí): 14 左側(cè)必須是變量,不能是常量或表達(dá)式,賦值表達(dá)式的值與變量值相等,且可嵌套,賦值轉(zhuǎn)換規(guī)則:使賦值號(hào)右邊表達(dá)式值自動(dòng)轉(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),/表達(dá)式值為5,a,b,c值為5,/ b=5;a=5,/表達(dá)式值11,c=6,a=11,/表達(dá)式值10,a=10,b=4,c=6,/表達(dá)式值5,a=5,b=10,c=2,1.5 運(yùn)算符和表達(dá)式,逗號(hào)運(yùn)算符和表達(dá)式 形式:表達(dá)式1,表達(dá)式2,表達(dá)式n 結(jié)合性:從左向右 優(yōu)先級(jí): 15 逗號(hào)表達(dá)式的值:等于表達(dá)式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,表達(dá)式值60,/a=15,表達(dá)式值20,/賦值表達(dá)式,表達(dá)式值18,x=18,/逗號(hào)表達(dá)式,表達(dá)式值18,x=3,/1,2,3,/3,2,3,、=、 = =(等于)、 !=(不等于) 關(guān)系運(yùn)算符優(yōu)先級(jí)從高到低為 、 = = = 、 != 結(jié)合方向從左到右。 a= =b的結(jié)果為, aB的結(jié)果為,關(guān)系運(yùn)算,1.5 運(yùn)算符和表達(dá)式,C語言提供三個(gè)邏輯運(yùn)算符: &(邏輯與)、|(邏輯或)、!(邏輯非),邏輯運(yùn)算,1.5 運(yùn)算符和表達(dá)式,! (非) 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 & 和 | | 賦值運(yùn)算符,(高),(低),例如:,( a b ) & ( x y ),( (! a )+b) | | ( a b ),a b & x y,! a+b | | a b,1.5 運(yùn)算符和表達(dá)式,邏輯運(yùn)算的結(jié)果只可能為1或0;,邏輯運(yùn)算的對(duì)象可以是任何類型的數(shù)據(jù), “非0”為“真”, “0”為“假”。,a&b&c (與短路運(yùn)算) (m=ab) &(n=cd),a|b|c (或短路),main() int m,n=10; m=2 ,條件運(yùn)算,形式為: e1?e2:e3 其中e1,e2,e3都是表達(dá)式。 一般而言,e1為條件表達(dá)式,當(dāng)e1的值為真時(shí)(即非0),e2的值作為整個(gè)表達(dá)式的值,不再計(jì)算e3的值,若e1的值為假(即為)時(shí),取e3的值作為整個(gè)表達(dá)式的結(jié)果,而不計(jì)算e2的值。 如:max(xy?x:y); 將和中較大的一個(gè)數(shù)賦值給變量max 條件運(yùn)算符的結(jié)合性是由右向左。,1.5 運(yùn)算符和表達(dá)式,第二章 順序結(jié)構(gòu)程序設(shè)計(jì),數(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圖,賦值語句,賦值表達(dá)式;,格式,數(shù) 據(jù) 輸 出,printf(“格式控制”,輸出項(xiàng)),printf函數(shù)的格式,如: printf(“%d,%d,%d”,a,b,a+b),如: printf(“ t= %f, sint= %f n ”,t,sin(t),格式說明,%d,按十進(jìn)制輸出整數(shù),%f,按小數(shù)形式輸出實(shí)數(shù),n,換行,其它字符,原樣輸出,例:當(dāng)a=10,b=-5.3時(shí),寫出下面語句的輸出結(jié)果,格式輸出語句,printf(“ 格式控制”,輸出項(xiàng));,printf(“%d , %f”,a,b);,10,-5.300000,printf(“a=%d nb=%f”,a,b);,a=,10,b=,-5.300000,輸出項(xiàng):變量、表達(dá)式、函數(shù),格式控制:,為輸出項(xiàng)提供格式說明,提供需要原樣輸出的文字或字符,;,;,格式說明的個(gè)數(shù)=輸出項(xiàng)個(gè)數(shù),格式說明的類型=輸出項(xiàng)類型,數(shù) 據(jù) 輸 出,控制輸出數(shù)據(jù)的寬度,格式說明,意 義,數(shù)據(jù)寬度,%d,按十進(jìn)制輸出整數(shù),%f,按小數(shù)形式輸出實(shí)數(shù),系統(tǒng)決定,%md,注:m、n為整型常數(shù),按十進(jìn)制輸出整數(shù),占m位,例1 a=23,b=34,c=-55,寫出下面語句的運(yùn)行結(jié)果,printf(“a=%d,b=%5d,c=%2d”,a,b,c),a=,23,b=, 34,c=-55,%m.nf,按小數(shù)形式輸出實(shí)數(shù),(小數(shù)占6位),.,(實(shí)際位數(shù)),系統(tǒng)決定,.,.,n位,m位,例2 t=2.346寫出下面語句的運(yùn)行結(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)移動(dòng)小數(shù)點(diǎn),13.456*100,2)加0.5,1345.6+0.5,3)取整,4)小數(shù)點(diǎn)還原,1346/100,area*100,.0,=1345.6,=1346.1,1346,=13.46,(int)( ),+0.5,/100,用同一個(gè)程序計(jì)算邊長為任意值的三角形面積,設(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,按十進(jìn)制輸入整數(shù),%f,按小數(shù)形式輸入實(shí)數(shù),其它字符,原樣輸入,&:地址運(yùn)算符,格式控制:,指定數(shù)據(jù)輸入的格式,例如:設(shè)a=2,b=2.5,寫出執(zhí)行下面的語句時(shí),數(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,意義,程序運(yùn)行時(shí),例2 將兩個(gè)變量中的值互換。,分析,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í)際問題,數(shù)學(xué)模型,計(jì)算方法,編 程,編輯程序,編譯查錯(cuò),連接,錯(cuò)?,修改程序,修改算法,修改模型,錯(cuò)?,運(yùn)行程序,錯(cuò)?,小結(jié),第三章 選擇結(jié)構(gòu)程序設(shè)計(jì),選擇結(jié)構(gòu),選擇結(jié)構(gòu)實(shí)現(xiàn)一 if語句,選擇結(jié)構(gòu)實(shí)現(xiàn)二 else if語句,選擇結(jié)構(gòu)實(shí)現(xiàn)三 if語句的嵌套,關(guān)系表達(dá)式和邏輯表達(dá)式,多分支選擇結(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)系表達(dá)式,關(guān)系運(yùn)算符及其優(yōu)先級(jí),=,(小于),(小于等于),=,(大于),= =,(大于等于),!=,(等于),(不等于),同 級(jí),同 級(jí),高,低,關(guān)系表達(dá)式,ab,-1!=c+3,各種運(yùn)算符的優(yōu)先級(jí),關(guān)系表達(dá)式的結(jié)果,t=5=3,算術(shù),關(guān)系,賦值,得整數(shù)值:0或1,0:,假,1:,真,例 若a=5,b=7,計(jì)算表達(dá)式的值,b (a=4)+1,4,5,1,c=ab,(c實(shí)型),1,1.0,c,1.0,邏 輯 表 達(dá) 式,邏輯運(yùn)算符,| |,&,(邏輯與),!,(邏輯或),(邏輯非),邏輯表達(dá)式,各種運(yùn)算符的優(yōu)先級(jí),邏輯表達(dá)式的值,得整數(shù)值:0或1,0:,假,1:,真,運(yùn)算對(duì)象,非0:,真,0:,假,例 若a=3,b=4,c=5,計(jì)算表達(dá)式的值,!a | b + c & b c,9,-1,1,1,a+bc&b=c,!(x=a)&(y=b),低,高,非,關(guān)系,與,算術(shù),賦值,或,0,if語句,if語句的格式,if(表達(dá)式),if子句,else,else子句,執(zhí)行過程,表達(dá)式為真?,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子句包含多個(gè)語句,就要用、括起來,表達(dá)式為真?,真,If子句,假,else子句,例1 判斷一個(gè)數(shù)能否被3整除,若能被3整除,計(jì)算該數(shù)的立方,并打印yes,否則,計(jì)算該數(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,真,計(jì)算x3,假,計(jì)算x2,輸出,輸出,舉 例,if語句,省略else的選擇結(jié)構(gòu),if(表達(dá)式),if子句,執(zhí)行過程,表達(dá)式為真?,if子句,真,假,退出,例2 寫出程序的運(yùn)行結(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,表達(dá)式為 真?,真,If子句,假,例3比較a、b、c三個(gè)數(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(表達(dá)式0),if子句,else if(表達(dá)式1),else if子句1,else if(表達(dá)式2),else if子句2,else,else 子句,執(zhí)行過程,式0為真?,A,真,假,退 出,式1為真?,式2為真?,真,真,B,假,C,假,D,式0為真?,真,A,假,式1為真?,真,B,假,式2真?,真,C,假,D,例4 讀程序?qū)戇\(yùn)行結(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 編寫程序計(jì)算表達(dá)式的值:,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(表達(dá)式1),else,else子句,else子句,內(nèi)嵌if,執(zhí)行過程,式1為真?,式2為真?,真,真,if子句,假,else子句,假,內(nèi)嵌 if,退 出,退 出,分清if的層次,if子句,else 子句,if(表達(dá)式2),else,if子句,if(表達(dá)式3),if子句,else,內(nèi)嵌if,else總是與上面最近的if配對(duì),例6 下面的程序要計(jì)算函數(shù)的值,判斷哪個(gè)程序正確.,if(x=0),if(x0) y=1;,else y=0;,else y=-1;,x,1,0,0,-9,-1,在if子句中嵌套具有else子句的if 語句,不會(huì)發(fā)生語法錯(cuò)誤,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 編寫程序計(jì)算表達(dá)式的值:,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(表達(dá)式),case 常量表達(dá)式1:語句1,case 常量表達(dá)式2:語句2,case 常量表達(dá)式n:語句n,default :語句n+1,語句體,整型,類型相同,零個(gè)或一個(gè)以上的語句,執(zhí)行過程,計(jì)算表達(dá)式的值,執(zhí)行該常量表達(dá)式后各語句,是,執(zhí)行default后各語句,不是,退出,例8 寫出下面程序的運(yùn)行結(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)實(shí)現(xiàn)一 用if和goto構(gòu)成循環(huán),循環(huán)結(jié)構(gòu)實(shí)現(xiàn)三 do-while循環(huán),循環(huán)結(jié)構(gòu)實(shí)現(xiàn)四 for循環(huán),循環(huán)結(jié)構(gòu)的概念,循環(huán)結(jié)構(gòu)實(shí)現(xiàn)二 while循環(huán),循環(huán)的嵌套,break和continue語句,程序舉例,循環(huán)結(jié)構(gòu)的概念,goto語句的格式,goto 語句標(biāo)號(hào),應(yīng)用示例,語句標(biāo)號(hào)的命名規(guī)則與變量名相同,goto key;,key: s+=x;,帶標(biāo)號(hào)的語句的格式,語句標(biāo)號(hào):語句,執(zhí)行過程,s+=x,循環(huán)結(jié)構(gòu)的概念,某段程序被有限次地執(zhí)行,被反復(fù)執(zhí)行,沒有出口,If語句和goto語句構(gòu)成循環(huán),形式,標(biāo)號(hào):if(表達(dá)式 ),goto 標(biāo)號(hào),循環(huán)體,執(zhí)行過程,真,假,退出,當(dāng)表達(dá)式為真,循環(huán)體,舉 例,例1 編寫程序計(jì)算表達(dá)式的值:,x0,真,y=x,假,x10,真,y=x-1,假,y=x+1,當(dāng)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(表達(dá)式),循環(huán)體,while(i5), printf(“%d,”,i);,i + ; ,while循環(huán)執(zhí)行過程,執(zhí)行循環(huán)體,真,退 出,假,當(dāng)表達(dá)式為真時(shí),循環(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 編程序,計(jì)算 s=1+2+3+100,(1) 如何得到加數(shù)?,i:,while(i5), printf(“%d,”,i);,i + ;,i=1;,i=14,i=100,(2) 如何實(shí)現(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,當(dāng) i=100時(shí),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(表達(dá)式) ;,while(i5);, printf(“%d,”,i);,i + ; ,do-while循環(huán)執(zhí)行過程,執(zhí)行循環(huán)體,真,退 出,假,當(dāng)表達(dá)式為真,循環(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個(gè)數(shù),計(jì)算其中奇數(shù)和及偶數(shù)和,并統(tǒng)計(jì)奇數(shù)個(gè)數(shù)。,while(i5);, printf(“%d,”,i);,i + ; ,i=1;,do,i=n,在循環(huán)之前確定n,(2) 如何統(tǒng)計(jì)個(gè)數(shù)?,i=1,jh=0,oh=0,tj=0,輸入n,x%2=0,輸入x,真,oh+=x,假,jh+=x,tj+,i+,當(dāng)i=n時(shí),輸出,舉 例,scanf(“%d”,執(zhí)行一次scanf,就為變量輸入一個(gè)新值,(1) 如何得到n個(gè)數(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(表達(dá)式1;表達(dá)式2;表達(dá)式3),循環(huán)體,printf(“*”);,for循環(huán)執(zhí)行過程,計(jì)算表達(dá)式1,真,退 出,假,例1 main( ), int k;, ,for(k=0;k10;k+),執(zhí)行循環(huán)體,計(jì)算表達(dá)式3,k的取值:,執(zhí)行循環(huán)體:,09,退出循環(huán)體:,10,例2 計(jì)算n的階乘。,n!=12 3 (n-1)n,遞歸定義:,n!=(n-1)! n,(n-1)!=(n-2)! (n-1),結(jié)論:,已知0!,求n!,p:存放階乘,i:計(jì)數(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;,表達(dá)式1:i=1 表達(dá)式2:i=n 表達(dá)式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(表達(dá)式),循環(huán)體,內(nèi)循環(huán),執(zhí)行過程,表達(dá)式為真?,假,for(e1;e2;e3), ,執(zhí)行內(nèi)循環(huán),退出,真,例1 寫出程序的運(yùn)行結(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 寫出程序的運(yùn)行結(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論