《C語言程序的設計》教(學)案(清華譚浩強)_第1頁
《C語言程序的設計》教(學)案(清華譚浩強)_第2頁
《C語言程序的設計》教(學)案(清華譚浩強)_第3頁
《C語言程序的設計》教(學)案(清華譚浩強)_第4頁
《C語言程序的設計》教(學)案(清華譚浩強)_第5頁
已閱讀5頁,還剩138頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE./第一章C語言及程序設計概述本章要求:了解C語言的特點、C語言與其它高級語言相比有什么異同;了解C程序在PC機上的建立、編譯和運行過程;了解C語言程序設計思想的基本篇;重點:=1\*GB3①C語言的主要特點;=2\*GB3②C語言在PC機上的運行過程及上機操作過程;=3\*GB3③常用算法的應用難點:無一、C語言概述C語言是目前國際上在各種計算機運行較為廣泛流行的一種高級語言.主要表現(xiàn)為:C語言:適合于作為系統(tǒng)描述語言——可用來寫系統(tǒng)軟件.具有高級語言的特點,又有低級語言〔匯編語言的特點.C語言:是AT&T貝爾實驗室的DennisRitchie在1972年發(fā)明的.C語言:是在B語言的基礎上發(fā)展起來的.〔ALGOL60C語言:最早開始是用于UNIX操作系統(tǒng).〔C語言和UNIX是相輔相成的DBASE、MicrosoftExel、MicrosoftWord、PC-DOS等,則是用C語言加上若干匯編子程序編寫的.1983年:——制定的新標準,稱為〔美國國家標準化協(xié)會ANSIC1987年:——TurboC1.0<Borland>1988年:TC1.5<圖形和文本窗口>1989年:——TurboC2.0〔DOS操作系統(tǒng)、查錯、Tiny模式生成com文件1991年:——TurboC++<3.0>支持windows3.X說明:TurboC語言可以在程序的任何地方嵌入?yún)R編代碼,提高速度,可以直接使用存儲器和寄存器.二.C語言的特點1.語言簡潔、緊湊、使用方便、靈活C語言:——共有32個關鍵字,9種控制語句;程序書寫自由,主要用小寫字母表示;2.運算符豐富C語言的運算符包含的范圍很廣泛,共有34種運算符;即:把括號、賦值、強制類型轉換都作為運算符處理3.有豐富的數(shù)據(jù)類型整型、實型、字符型、數(shù)據(jù)類型、指針類型、結構體類型、共用體〔聯(lián)合類型等.實現(xiàn)復雜的數(shù)據(jù)結構〔鏈表、樹、棧、圖的運算.4.具有結構化的功能,用函數(shù)作為程序模塊,實現(xiàn)程序的模塊化5.語法限制不太嚴格,程序設計自由度大.〔放寬了語法檢查例:1對數(shù)組下標越界不作檢查,由程序編寫者自己保證程序的正確;2整型數(shù)據(jù)、字符型數(shù)據(jù)、邏輯型數(shù)據(jù)可以通用.6.能直接訪問物理地址,能進行位〔bit操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作.7.生成目標代碼質量高,程序執(zhí)行效率高.8.用C語言編寫的程序,移植性較好.說明:C語言比其它高級語言難掌握,對編程人員要求較高程序員使用C語言編寫程序會感到限制少、靈活性大,功能強,可以編寫出任何類型的程序.三.C程序的構成例:main<>/*主函數(shù)*/{inta,b,sum;/*定義變量*/a=123;b=456;sum=a+b;printf<"sumis%d\n",sum>;/*輸出變量*/}說明:1程序一般用小寫字母書寫;2每個程序必須要有一個main<>〔只能一個,稱主函數(shù);注:C程序是由函數(shù)構成的,函數(shù)是C程序的基本單位.函數(shù):系統(tǒng)提供的庫函數(shù);用戶設計的函數(shù).3程序體必須在{}之間;4每個語句的結尾,必須要有";"作為終止符.5用/*………..*/作注釋四、C程序的上機過程1.演示書:P5程序2.上機步驟書:P7注:C語言是一種編譯語言,編譯語言的特點:連接連接編譯編譯目標程序*目標程序*.OBJ執(zhí)行程序*.EXE執(zhí)行程序*.EXE源程序*.CC編譯程序Link程序3.DOS下C語言的運行目前DOS下運行C語言軟件為:TurboC2.0〔1TurboC2.0的特點:是一個把①編輯②編譯③連接④運行等全部操作集中在一個界面上.〔2TurboC2.0的操作及運行書:P8五、算法的概念1.算法的概念書:P13算法:程序的操作步驟.程序中的數(shù)據(jù)在程序設計中:操作步驟有:程序=數(shù)據(jù)結構+算法沃思NikiklausWirth程序=算法+數(shù)據(jù)結構+程序設計方法+語言工具和環(huán)境2.計算機算法分為兩大類:①數(shù)值運算算法②非數(shù)值運算算法〔1數(shù)值運算算法:求數(shù)值解;通過運算得出一個具體值,如求方程的根等注:數(shù)值運算一般有現(xiàn)成的模型,算法較成熟.〔2非數(shù)值運算算法:用于事務管理,如圖書檢索、人事管理等.3、常用簡單算法〔1累乘即:1×2×3×4×5……×1001×2→S〔結果S×3→S〔結果S×4→S〔結果┇S×100→S〔結果〔2累加即:1+2+3+4+5……+1001+2→S〔結果S+3→S〔結果S+4→S〔結果┇S+100→S〔結果〔3找最大值5,2,4,12,95→max<max放最大值,后面的數(shù)都和它比較>2>max不成立4>max不成立12>max成立:12→max9>max不成立注:該算法可擴展為在一批數(shù)據(jù)中,找某一個數(shù)〔4其它算法P15例2.2例2.3例2.4例2.5課余自學<必須>4、算法的表示常用的有:①自然語言②傳統(tǒng)流程圖③結構化流程圖④偽代碼⑤PAD圖〔1傳統(tǒng)流程圖起止框輸入輸出框判斷框處理框流程線連接點表示方法:P19例注:傳統(tǒng)流程圖對流程線的使用沒有嚴格限制,難以實現(xiàn)結構化程序設計為了限制流程線的濫用,提出三種基本結構:①順序結構②選擇結構③循環(huán)結構順序結構選擇結構ft.f語句表達式表達式t語句語句語句1語句2循環(huán)結構表達式語句語句表達式a>"當型"結構b>"直到型"結構〔2N-S流程圖特點:去掉了帶箭頭的流程線,全部算法寫在一個矩形框內.稱N-S結構化流程圖PA成立不成立當P1成立ABABA直到P1成立順序結構選擇結構循環(huán)結構作業(yè):p372.4上機:熟悉TurboC2.0的操作及運行第三章數(shù)據(jù)類型、運算符與表達式本章要求:本章是C語言的基本概念開篇,所介紹的概念是學習C語言的基礎;要求熟練掌握數(shù)據(jù)類型、運算符與表達式.重點:=1\*GB3①C語言數(shù)據(jù)類型定義的方法和分類.=2\*GB3②C語言運算符、表達式的使用以及它們的主要特點.難點:自增、自減運算符、賦值運算符、逗號運算符及它們的混合使用一.數(shù)據(jù)類型概念:算法處理的對象——是數(shù)據(jù),而數(shù)據(jù)是以某種特定的形式出現(xiàn).在C語言中,數(shù)據(jù)有:常量、變量;一般它們都有一定的數(shù)據(jù)類型.〔C語言的數(shù)據(jù)結構是以數(shù)據(jù)類型形式出現(xiàn)的1.數(shù)據(jù)類型分類:整型int基本類型字符型單精度型float實型〔浮點型枚舉類型雙精度型double數(shù)據(jù)類型數(shù)組類型構造類型結構體類型struct共用體〔聯(lián)合類型union指針類型*空類型void說明:在程序中對用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型.2.C語言中的常量和變量常量:——在程序運行過程中,其值不能被改變的量.變量:——在程序運行過程中,其值可以改變的量.說明:1常量和變量,都要有一個名字表示它;習慣上,符號常量<別名>名用大寫,變量用小寫.符號常量的定義為:#defineP30其它常量:直接用數(shù)據(jù)表示例:2345.5‘e’3e+22在C語言中,對變量要先定義,后使用.3如果一個變量被指定為一確定類型后,在C語言編譯時,就能為其分配相應的存儲單元.a變量名存儲地址20003變量值存儲單元地址的概念3.常用的基本數(shù)據(jù)類型〔1整型1整型常量:十進制整數(shù)123,-11,0非0開頭八進制整型0123,-0110開頭十六進制整型0x110x200x0D0XFF0x4e0x/0X開頭說明:在一個整常量后面加一個字母:l或L,是長整型常量.22L0733L0xae2整型變量:定義存儲字節(jié)數(shù)的范圍基本型intx〔2字節(jié)-32768~32767短整型shortintx〔2字節(jié)-32768~32767長整型longintx〔4字節(jié)-2,147,483,648~2,147,483,647無符號型unsignedintx〔2字節(jié)0~65535unsignedshortx〔2字節(jié)0~65535unsignedlongx〔4字節(jié)0~4,294,967,295注:數(shù)據(jù)在內存中是以:二進制形式存放如:9為00001001例:x=13;x=015;x=0xD存儲結構見P44圖3.5注:數(shù)據(jù)超過數(shù)據(jù)范圍,會發(fā)生數(shù)據(jù)溢出例3.2、3.3〔2實型〔浮點數(shù)1實型常量:十進制整數(shù)1.23.0123指數(shù)形式1.23e3,1.00e-32實型變量:數(shù)的表示范圍P46表3.2單精度floatx〔4字節(jié)3.4x10-38~3.4x1038TC默認雙精度doublex〔8字節(jié)1.7x10-308~1.7x10308說明:實型常量不分float和double,只有十進制表達方式有的C編譯系統(tǒng)64位存儲方式,如尾加f或F可表示32位:324.567f例:x=1.23;x=123e3P47例3.4<存儲精度>〔3字符型1字符常量:a>用單引號括起來的一個字符‘a(chǎn)’‘A’b>轉義字符〔由"\專用字母"書P48表3.3例3.5\0字符串結束符\n換行\(zhòng)t水平制表\ddd八進制數(shù)\xdd十六進制數(shù)2字符變量:charc〔1字節(jié)說明:一個字符變量,只能放一個字符常量.實際是把該常量的ASCII值,送入字符變量中.即:‘B’〔66c〔字符變量書P374ASCII表p50例3.6-7c=‘B’c的內容為66故:字符數(shù)據(jù)可以進行算術運算;即:c=‘B’+2為68字符數(shù)據(jù)在內存中的存儲方式書P50unsignedchar0-255char-128-127有符號數(shù)在TC中是用補碼表示的127<0x7f>01111111128<0x80>10000000復習:補碼的規(guī)定:正數(shù):其原碼、反碼、補碼相同負數(shù):最高位為1,其余各位為原碼的反碼<原碼的相應位取反>,然后對整個數(shù)加1.140<0x8c>10001100→11110011+1<取反加1>→11110100→-0x74-0x7410001011+1<取反加1>→10001100→0x8c<0x80為負數(shù)-74高位為1>3字符串常量用雙引號括起來的字符"a","ABFD""a"="a\0”<>‘A’說明:C規(guī)定,在每一個字符串的結尾應加一個"字符串結束標志"〔\0,以便系統(tǒng)判斷字符串是否結束.4.各類數(shù)值間的混合運算1整型、字符型、單精度型、雙精度型數(shù)據(jù)——可以混合運算2字符型、整型——可以通用規(guī)則:高doublefloatlongunsigned低intchar,short例如10+’a’+1.5-8765.1234*’b’-858873.593200<TC默認6位小數(shù)>10+97+1.5-8765.1234*98二.運算符和表達式C表達式:由變量、常量、函數(shù)等運算對象和運算符組成的式子C運算符作用:1能把一些基本運算模塊用單一的運算符處理2使用豐富的運算符,構成多種表達式C運算符有優(yōu)先級,優(yōu)先級高的先執(zhí)行,同級的由結合規(guī)則決定其處理規(guī)則C運算符有兩種結合規(guī)則:1從左到右的結合運算順序;即:a=5+x-10;運算對象與左邊運算符結合2從右到左的結合運算順序;即:x=y=7;運算對象與右邊運算符結合C運算符分類書P551.基本運算符<算術運算符>C語言有7個基本運算符1單目運算符:〔表示符號正號"+"負號"-"2雙目運算符:+、-、*、/、%〔模運算,求余運算,兩側為整數(shù)說明:a運算順序的結合方向從左到右b求余〔取模運算符是對兩個整數(shù)相除的余數(shù),計算結果的符號與第一個數(shù)的符號相同.即:-5%3值為-2、-5%-3值為-2、5%-3值為22.自增、自減運算符<優(yōu)先級高于算術,右結合>作用:——使變量的值增1或減1++i〔--i——在使用i之前,先使i的值加1〔減1,然后再使用i.i++〔i--——先使用i的值,然后再使i加1〔減1.例:i=4;j=++i;i值為5,值為5;j=i++;i值為5,j值為4說明:1自增、自減運算符++<-->,只能用于變量,不能用于常量或表達式即:5++、〔a+b++——不合法2運算順序的結合方向從右到左例例:main<>{inti=3z,x,y;z=<i++>+<i++>+<i++>x=y=3;//結果:z值為9i值為6z=x+++y;//變量x右結合運算符++〔不是3+4+5=12printf<"z=%d,x=%d,y=%d",z,x,y>;}輸出結果:z=6x=4y=3如果:z=-x+++y;輸出結果:z=0x=4y=3x先為-4,然后+y,最后x++3.賦值運算符和賦值表達式<優(yōu)先級低于算術,右結合>〔1"="——賦值運算符作用:將一個數(shù)據(jù)賦給一個變量即:x=21注意:如果賦值運算符兩側的類型不一致,在賦值時,要進行類型轉換.P61例3.9即:floatf;f=23f值為23.0000符號位擴展〔2復合的賦值運算符"+=、-=、*=、/=、%="——在賦值符"="之前加上其它運算符稱復合運算符〔也稱為自反運算符例:a+=3等價于a=a+3x*=y+8等價于x=x*<y+8>y/=4等價于y=y/4m%=3等價于m=m%3說明:C語言采用這種復合運算符:為了簡化程序,使程序精練;提高編譯效率.〔3賦值表達式格式:變量=表達式表達式:可以是1常量、變量、算術表達式;2賦值表達式即:a=<b=5>或a=b=5<運算順序的結合方向從右到左>例:a=b=c=6;a=5+<c=6><結果a=11c=6>如果:a=3;求:a+=a-=a*a;[有:1]a*a;92>a=a-<a*a>;-63>a+=-6]-6+-6a為:-12結果值為:-124.逗號運算符和逗號表達式<優(yōu)先級最低,左結合>用","將兩個表達式連接起來.格式:表達式1,表達式2即:3+5,6*9;例:3+5,6*9;值為54〔先求解表達式1,再求解表達式2,最后逗號表達式的值為表達式2的值a=2*5,a*3;a值為10結果值為:30〔先求:a=2*5,后求:a*3x=<a=2*5,a*3>,a+4a值為10x值為30結果值為:14說明:使用逗號表達式的目的,只是為了得到各個表達式的值〔常用于循環(huán)語句解表達式1的結果可能影響解表達式2的值5.強制類型轉換運算符<優(yōu)先級高于算術,右結合>在要轉換的數(shù)據(jù)前,用小括號括上要轉換的數(shù)據(jù)類型即:〔intx;〔int〔a+b〔intx+y格式:〔類型名表達式C一般會自動進行數(shù)據(jù)類型轉換P56例3.8,用于不能自動轉換的地方x%3<floatf>6.關系運算符和關系表達式〔書P87<優(yōu)先級低于算術,左結合,高于賦值>〔16種關系運算符<<=>>=<優(yōu)先級高>==!=<優(yōu)先級低>〔2關系表達式表達式關系運算符表達式即:a>ba+b>=b+c<a=4><<b=8>‘x’==‘y’說明:關系表達式值:是一個邏輯值,即:"真"或"假"C語言:1——代表"真"0——代表"假"7.邏輯運算符和邏輯表達式〔書P88<優(yōu)先級低于關系,左結合>〔13種邏輯運算符p89表5.1&&〔與||〔或!〔非〔2邏輯表達式表達式邏輯運算符表達式p89即:<a>b>||<a+b>=b+c><a=4>&&<b=8>1||∞<1>‘x’&&‘y’值為11說明:邏輯表達式值:是一個邏輯值,即:"真"或"假"p90優(yōu)先次序〔由高到低:!〔非算術運算符關系運算符&&和||賦值運算符求值短路:5>3&&2||8<4-!01||∞<結果1>0&&∞<結果0>如:a&&b&&ca<>0才判斷a&&b8.條件運算符〔書P97格式:表達式1?表達式2:表達式3執(zhí)行:先求解表達式1,為真〔非零,求表達式2為假〔為0,求表達式3例:y=<a>b>?a:b;說明:a條件運算符要求有三個操作對象〔稱三目元運算符b條件運算符優(yōu)先于賦值運算符y=<a>b>?a:b;先求<a>b>?a:b后賦值c條件運算符的結合方向為"自右至左"<a>b>?a:b可寫為:a>b?a:ba>b?a:b+5相當于:a>b?a:〔b+5a>b?a:c>d?c:d相當于:a>b?a:<c>d?c:d>*9.位運算符〔書P298〔一般掌握位運算:——是對字節(jié)或字中的實際位進行檢測、設置、屏蔽、移位.位運算符:&——位邏輯與|——位邏輯或^——位邏輯異或~——位邏輯反>>——右移<<——左移三、運算符小結1.左結合方向的運算符主要有:算術運算符、關系運算符、邏輯運算符、逗號運算符2.右結合方向的運算符主要有:自增、自減運算符、賦值運算符〔復合的賦值運算符、條件運算符例:1>i=3;printf<"%d,%d",i,i++>;輸出:4,32>a=1;b=1;c=2;求:a=b+=c*=5;輸出:a為11b為11c為103>a>b?a>c?a:c:b>c?b:c相當于:a>b?<a>c?a:c>:<b>c?b:c><求最大值,如a=2,b=8,c=5結果為:8>3.運算符的優(yōu)先次序〔書P375附錄Ⅲ<>、!++/--/-轉移、算術、關系<<<=>>=>、關系<==!=>、&&、||、條件<?>、賦值、逗號例:1>-a++相當于-<a++>2>x=4,y=7求:y+=++x-3x的值5y的值93>x=4,y=7求:y=y+++x-3x的值4y的值94>a=7,x=2.5,y=4.7求:s=x+a%3*<int><x+y>%*2/4s的值2.500000a%3*<int><x+y>%*2=》1<整型>/4<整型>=》0.25=》0<整型>5>a%3&&a%5||a++>++b如:a=7,b=5a的值8b的值6結果值11||1如:a=15,b=15a的值16b的值16結果值01||如:a=15,b=14a的值16b的值15結果值00||如:a=15,b=13a的值16b的值14結果值10||四、該章的主要例題數(shù):P39例3.1P44例3.2P44例3.3字符:P49例3.5P50例3.6P51例3.7五、該章的主要習題P653.53.63.83.93.103.12六、該章的主要上機內容P39例3.1P44例3.2P44例3.3P51例3.7P653.63.83.10第四章簡單的C程序設計〔順序程序設計知識點:1、賦值語句;2、字符數(shù)據(jù)的輸入/輸出;3、格式輸入/輸出語句printf和scanf及其格式控制符;%c、%f、%d〔輸出寬度、對齊方式、其它格式控制符只作了解4、程序的結構框架.重點:1.賦值語句;2.基本輸入/輸出語句printf和scanf及其格式控制符%c、%f、%d等的意義.難點:無一、C程序結構C程序源程序文件1源程序文件2源程序文件n預編譯命令函數(shù)1函數(shù)n說明部分執(zhí)行部分<語句>語句的分類P67P681、控制語句①條件:ifelse②循環(huán):for<>③循環(huán):while<>④循環(huán):dowhile<>⑤循環(huán)結束:continue⑥終止循環(huán)或switch:break⑦多分支:switch⑧轉向:goto⑨函數(shù)返回:return2、函數(shù)調用語句printf<"a=%d",a>;3、表達式語句i=i+1表達式i=I+1;表達式語句函數(shù)調用也可以認為是表達式語句4、空語句:一個";"5、復合語句<用{}:分程序>{x=3;x=x+1;print<"x=%x",x>}二.賦值語句變量名=表達式注:是組成順序結構的主要語句.a=b;if<max<=x>max=x;三.基本輸入/輸出語句C語言本身不提供輸入輸出語句,輸入輸出操作是由函數(shù)來實現(xiàn).即:printfputcharscanfgetchar注:〔1這些函數(shù)構成一個標準的I/O函數(shù)庫〔放在"stdio.h"中〔2如果要使用C語言庫函數(shù),要用預編譯命令"#include"將有關"頭文件"包括到用戶源文件中.#include<stdio.h>#include"stdio.h"當前目錄當前定義的目錄中尋找1.printf函數(shù)——格式輸出函數(shù)格式:printf〔格式控制,輸出表列格式控制:——用雙引號括起來的字符串,也稱為"轉換控制字符串"printf的格式字符書P77表4.1輸出表列:——需要輸出的數(shù)據(jù)、表達式 即:printf<"x=%5.1f,y=%d,z=%c",x,y,z>d,i帶符號十進制形式u無符號十進制形式例3-3c字符形式s字符串形式f實數(shù)<小數(shù)>形式默認6位小數(shù)說明:1printf<"y=%-4d",y>輸出數(shù)據(jù)左對齊〔默認為右對齊2數(shù)據(jù)輸出長度的修正;l——輸出長整型或雙精度數(shù)據(jù)即:printf<"%ld,%lf",i,y>h——輸出短型數(shù)據(jù)即:printf<"%hu",a>-m.nm最小寬度n小數(shù)<實數(shù)>-左對齊2.putchar函數(shù)——字符輸出函數(shù)向終端輸出一個字符格式:putchar〔變量putchar〔xputchar〔"\n"輸出一個換行符3.scanf函數(shù)——格式輸入函數(shù)格式:scanf〔格式控制,地址表列格式控制:——用雙引號括起來的字符串,也稱為"轉換控制字符串"scanf的格式字符書P80表4.3地址表列:——由若干個地址組成的表列,有:變量地址&x字符串的首地址&——地址運算符功能:求變量的地址〔只能用于變量&x——表示x變量值的內存單元的地址即:scanf<"%d,%4d",&a,&b>說明:1不帶分隔字符的方式,系統(tǒng)將自動按格式說明截取數(shù)據(jù)例:scanf<"%4d%*3d%f",&I,&p>;輸入:12345678.93時得I=1234,p=8.93"*"——作用是"虛讀",跳過相應的數(shù)據(jù)2帶分隔字符的方式〔分隔字符:空格、tab、回車、逗號即:scanf<"%d,%d",&a,&b>4.getchar函數(shù)——字符輸入函數(shù)從終端輸入一個字符格式:getchar<>即:c=getchar<>函數(shù)值是從輸入設備得到的字符四、該章的主要例題1已知矩形的兩邊長,求矩形的面積、周長2大小寫字母互相轉化3教材P83的例子五、該章的主要習題P844.5~4.9第五章選擇結構程序設計知識點:1、關系、邏輯運算符、邏輯真/假;2、關系表達式、邏輯表達式;3、分支的概念及其算法描述;4、三種IF分支語句;5、條件運算符;6、SWITCH語句.<了解>重點:1、關系、邏輯運算符、邏輯真/假;2、關系表達式、邏輯表達式;3、三種IF分支語句.難點:1、邏輯真/假;2、關系、邏輯運算優(yōu)先級.一、關系表達式及邏輯表達式在分支選擇結構的作用在程序設計中,表示一些復雜的條件1、關系運算符及關系表達式〔第三章2、邏輯運算符及邏輯表達式〔第三章3、條件運算符〔第三章二.分支語句〔書P91從一個條件表達式中,選擇語句的執(zhí)行〔用if語句或switch語句來實現(xiàn)f.t.f表達式表達式t語句語句1語句21.If語句〔1C語言提供三種形式的if語句1if<表達式>語句例:if<x>y>printf<"%d",x>;注意";"位置2if<表達式>語句1else語句2例:if<x>y>printf<"%d",x>;elseprintf<"%d",y>;注意分號";"3>if<表達式1>語句1elseif<表達式2>語句2elseif<表達式3>語句3……elseif<表達式n>語句nelse語句n+1例:p92圖5.6〔2if<>和else后的執(zhí)行語句可以使用復合語句{}例5.1、5.2p93if結構將輸入的三個數(shù)從大到小排列輸出例5.3p95if嵌套結構計算函數(shù)值〔3用條件運算符代替if語句例:if<a>b>y=a;條件運算符else可以用:y=<a>b>?a:b;y=b;例5.4p98條件運算符代替if結構將輸入字符中的大寫轉換成小寫輸出2.switch語句<了解>switch語句——是多分支選擇語句表達式語句1語句2語句3語句4格式:switch<表達式>表達式=常量表達式n執(zhí)行語句n{case常量表達式1:語句1;break;case常量表達式2:語句2;break;case常量表達式3:語句3;break;┇case常量表達式n:語句n;break;default:語句n+1;例:四級〔ABCD轉化成百分制#include<stdio.h>main<>{chargrade;scanf<"%c",&grade>;switch<grade>{case'A':printf<"85~100\n">;break;case'B':printf<"75~84\n">;break;case'C':printf<"60~74\n">;break;case'D':printf<"<60\n">;break;default:printf<"error\n">;}}例:百分制成績轉化成五級〔ABCDE五級記分5-4-1三、程序舉例例5.7p103運費計算<自學>p101例5.6求一元二次方程根<自學>p100例5.5判斷某一年是否是閏年<自學>五、該章的主要習題P1045.3~5.10該章的主要上機內容P91例5.2、P100例5.5,P101例5.6P104習題5.5、5.6、5.9其他:上機實驗指導書中內容第六章循環(huán)結構程序設計知識點:1、循環(huán)的概念及其算法描述;2、goto循環(huán);3、while循環(huán);重點4、do—while循環(huán);重點6、for循環(huán);重點難點7、break、continue語句;8、各種循環(huán)結構中的執(zhí)行循環(huán)體、判斷循環(huán)條件的順序;重點9、各種循環(huán)結構在一定條件下的轉化.重點難點一、循環(huán)結構的概念循環(huán)語句主要用于:重復執(zhí)行的操作1.C語言在實現(xiàn)循環(huán)過程——可使用以下語句:a>用goto語句和if語句構成循環(huán)b>用while語句語句c>用do—while語句d>用for語句語句2.循環(huán)可分為二種類型結構:a>"當型"結構b>"直到型"結構語句語句二.循環(huán)語句1.用goto語句和if語句構成的循環(huán)〔1goto語句——無條件轉向語句格式:goto語句標號語句標號:用標識符表示例:gotonext;如:goto123;<不合法>〔2goto和if語句構成循環(huán)一般較少使用〔不符合結構化原則例:求main<>{inti,sum=0;i=1;loop:if<i<=50>{sum=sum+2*i;i++;gotoloop;}printf<"%d\n",sum>;}2.while語句——實現(xiàn)"當型"循環(huán)結構格式:while<表達式>語句例:求main<>{inti,sum=0;i=1;while<i<=50>說明:{sum=sum+2*i;i++;}printf<"%d\n",sum>;語句可為復合語句<用{}構成>}3.do—while語句——實現(xiàn)"直到型"循環(huán)結構格式:do語句while<表達式>;例:求main<>{inti,sum=0;i=1;do{sum=sum+2*i;i++;}while<i<=50>;printf<"%d\n",sum>;}dowhile和while比較p109例6.44.for語句可以用于循環(huán)次數(shù)已知和循環(huán)次數(shù)不確定〔可以代替while語句<應用廣泛,而且使用較活>格式:for<表達式1;表達式2;表達式3>語句過程:表達式1F表達式2T說明:語句表達式1循環(huán)變量賦初值表達式2循環(huán)結束條件表達式3表達式3循環(huán)變量增值即:for<循環(huán)變量賦初值,循環(huán)結束條件,循環(huán)變量增值>語句例:求for<i=1;i<=50;i++>sum=sum+2*i;for語句的其它表示<1>用while來表示表達式1while<表達式2>{語句表達式3;}<2>表達式可以省略,但分號不能省略a>省略表達式1i=1for<;i<=50;i++>sum=sum+2*ib>省略表達式2——產(chǎn)生死循環(huán)for<i=1;;i++>sum=sum+2*ic>省略表達式3for<i=1;i<=50;>{sum=sum+2*i;i++;}d>省略表達式1,省略表達式3i=1i=1for<;i<=50;>while<i<=50>{sum=sum+2*i;相當于{sum=sum+2*i;i++;}i++;}<3>表達式1,表達式3可以是:a>簡單的表達式b>逗號表達式表達式2:一般是關系表達式或邏輯表達式即:for<sum=0,i=1;i<=50;i++,i++>sum=sum+2*i;或:for<sum=0,i=1;i<=50;i=i+2>sum=sum+2*i<4>循環(huán)體語句可使用break和continue語句break:可以用來從循環(huán)體內跳出循環(huán)體〔提前結束循環(huán)continue:用于跳過循環(huán)體中下面尚未執(zhí)行的語句,接著重新執(zhí)行循環(huán)的判斷.p115例6.5將100-200間不能被3整除的數(shù)輸出三、程序舉例用多種循環(huán)方法實現(xiàn)1由泰勒展式計算sin<x>的近似值2.p115例6.6求π的近似值1-1/3+1/5-1/7+3.p115例6.7求Fibonacci<斐波納契>數(shù)列40個數(shù)F1=1<n=1>F2=1<n=2>Fn=Fn-1+Fn-2<n>=3>4.p115例6.8判斷m是否是素數(shù)5.p115例6.9求100-200間的所有素數(shù)6.例求任意輸入10個數(shù)中的最大數(shù)6-max四、該章的主要習題P1206.1~6.15五、該章的主要上機內容P115例6.5、例6.6、例6.7、例6.9P120習題6.4、6.7、6.9、6.11、6.14其他:上機實驗指導書中內容作業(yè)解答:5-8利潤提成:類似所得稅第七章數(shù)組1、數(shù)組的概念及數(shù)組的定義;2、在程序設計中的如何使用數(shù)組;3、字符數(shù)組是C語言存放字符串的主要方法,并注意字符串結束標志的規(guī)定.重點:=1\*GB3①數(shù)組的組成和特點.=2\*GB3②一維數(shù)組和二維的定義、賦值.=3\*GB3③字符串與字符數(shù)組的關系以及數(shù)組在程序中的使用.難點:=1\*GB3①數(shù)組元素存儲格式對程序設計的使用.=2\*GB3②字符串在數(shù)組中的組成以及字符串操作語句的使用.基本類型數(shù)組類型C語言:數(shù)據(jù)類型構造類型結構體類型共用體類型指針類型構造類型:是由基本類型按一定規(guī)則組成的類型一.數(shù)組的概念數(shù)組:——1是一組有序數(shù)據(jù)的集合2這個集合用一個數(shù)組名來表示3數(shù)組的元素序號用一個下標值來表示如:a[0],a[1],a[2],a[3]b[1][1],b[1][2],b[2][1],b[2][2]注意:a數(shù)組名后,用方括號;下標從0開始.b下標值——可以是常量表達式常量表達式:包括常量和符號常量<用#define定義的>,但不能包含變量.C語言:不允許數(shù)組進行動態(tài)定義.即:intn;scarf<"%d",&n>;intx[n];/*定義數(shù)組*/c數(shù)組分為:一維、二維等,主要由下標值的多少來確定.二.一維數(shù)組1.定義格式:類型說明符數(shù)組名[常量表達式]類型說明符:——表示數(shù)組的類型int,short,long,unsigned,float,double,char等數(shù)組名:——表示各數(shù)組元素的統(tǒng)一名字,定義方法和變量名相同常量表達式:——表示數(shù)組的長度即:inta[10]注意:C語言不提供數(shù)組下標越界的保護,設計時要注意.2.數(shù)組元素的初始化數(shù)組在定義的時候,同時,可對數(shù)組元素進行初始化格式:staticinta[10]={0,0,0,0,0,0,0,0,0,0}靜態(tài)定義a[10]={0,1,2,3,4,5,6,7,8,9}說明:1static數(shù)組不賦初值,系統(tǒng)會對所有數(shù)組元素自動賦以0值.即:inta[10]={0,0,0,0,0,0,0,0,0,0};等價于:staticinta[10];2對全部數(shù)組元素賦初值,可以不指定數(shù)組長度.即:staticinta[]={0,1,2,3,4,5};等價于:staticinta[6]={0,1,2,3,4,5};3可以部分賦初值即:inta[5]={1,3};3.數(shù)組元素的引用C語言規(guī)定:只能逐個引用數(shù)組元素,而不能一次引用整個數(shù)組.4.程序舉例書P124例7.2例7.3三.二維數(shù)組和多維數(shù)組1.定義格式:類型說明符數(shù)組名[常量表達式][常量表達式]類型說明符:——表示數(shù)組的類型int,short,long,unsigned,float,double,char等數(shù)組名:——表示各數(shù)組元素的統(tǒng)一名字常量表達式:——表示數(shù)組的長度即:inta[5][6]說明:a每一維的下標從0開始,整個數(shù)組元素為:5×6=30個bC語言中,二維數(shù)組中元素排列的順序是按行存放.即:先存放第一行的元素,再存放第二行的元素3a[0][04a[0][15a6a7a8a1a2a9a345存儲單元a=678對應表:129→c可以計算數(shù)組元素在數(shù)組中的序號假設m×n的數(shù)組a,計算a[i][j]序號的公式:i×n+j如:a[0][1]0×3+1=1<第二個>如3×3a[1][2]的序號是:1×3+2=5a[2][2]2×3+2=8d多維數(shù)組的定義格式:類型說明符數(shù)組名[常量表達式][常量表達式][常量表達式]即:類型說明符數(shù)組名[長度1][長度2][長度3]…inta[2][3][4]2.二維數(shù)組初始化1兩種基本方法:〔a分行給二維數(shù)組賦初值staticinta[2][3]={{1,2,3},{5,6,7}}〔b所有數(shù)據(jù)寫在一個化括弧內staticinta[2][3]={1,2,3,5,6,7}2可以對部分元素賦初值staticinta[2][3]={{1},{3}}即:100300staticinta[3][4]={{1},{3,1},{0,0,9}}即:100031000090PAGE\#"'Page:'#'

'"PAGE\#"'Page:'#'

'"PAGE\#"'Page:'#'

'"3定義數(shù)組時,第一維的長度可以不指定,但第二維的長度要指定<編譯系統(tǒng)自動計算>.staticinta[][3]={1,2,3,4,5,6,7,8,9}等價于:staticinta[3][3]={1,2,3,4,5,6,7,8,9}staticinta[][4]={{1},{3,1},{0,0,9}}等價于:staticinta[3][4]={{1},{3,1},{0,0,9}}4.程序舉例書P128例7.4二維數(shù)組行列轉換例7.53×4矩陣求最大元素及行列號四.字符數(shù)組存放字符數(shù)據(jù)的數(shù)組;每一個元素存放一個字符.1.定義char數(shù)組名[常量表達式]即:charc[10];說明:由于字符與整型是互相通用的,可使用intc[10];定義.2.字符數(shù)組的初始化1staticcharc[5]={‘a(chǎn)’,‘b’,‘c’,‘d’,‘e’};注意:staticcharc[5]={‘a(chǎn)’,‘b’,‘c’,‘d’,‘e’,‘f’};<錯誤,多一個元素staticcharc[5]={‘a(chǎn)’,‘b’,‘c’};〔正確后面元素自動定為空格2staticcharc[]={‘a(chǎn)’,‘b’,‘c’,‘d’,‘e’};系統(tǒng)自動根據(jù)初值個數(shù)確定數(shù)組長度3.字符數(shù)組的引用一個字符數(shù)組元素,代表一個字符.即:x=c[2]x的值為"c"4.字符串的使用C語言中,將字符串作為字符串來處理.規(guī)定:一個"字符串結束標志",以字符‘\0’,在遇到字符‘\01使用字符串常量進行數(shù)組初始化staticcharc[]={"Iamhappy"};或staticcharc[]="Iamhappy";等價于staticcharc[]={‘I’,‘‘,‘a(chǎn)’,‘m’,‘h’,‘a(chǎn)’,‘p’,‘p’,‘y’,’\0’};注:<a>系統(tǒng)對字符串常量自動加一個‘\0<b>字符數(shù)組并不要求它的最后一個字符為‘\02數(shù)組長度始終保證大于字符串實際長度staticcharc[10]={"ABCDE"};〔第5個元素\0,第6個開始為空字符ASCⅡ為0staticcharc[10]={‘A’,‘B’,‘C’,‘D’,‘E’};〔后面5個元素為空字符ASCⅡ為0例7-6P131:字符數(shù)組引用例子打印圖形<J5_1.C>#defineNLprintf<"\n">main<>{chara[10]={'*','*','*','*','*','*','*','*','*','*'};圖案層數(shù)inti,j;圖案層數(shù)for<i=0;i<=4;i++>圖案前空格{NL;圖案前空格for<j=1;j<=i;j++>printf<"">;for<j=1;j<=10-〔2*i-1;j++>printf<"%c",a[j]>;**個數(shù)}*************************5.字符數(shù)組的輸入輸出1兩種方法:a逐個字符輸入輸出.用格式符"%c"進行scanf<"%c",&c[i]>;b整個字符串一次輸入輸出.用格式符"%s"進行例:staticcharc[]={"abcde"};printf<"%s",c>;〔為數(shù)組名,不能為"%s",c[0]2可以用scanf函數(shù)輸入一個字符串staticcharc[6];scanf<"%s",c>;注意:鍵盤輸入不能超過5個字符c不用加地址符&,即&c;因數(shù)組名代表數(shù)組的起始地址6.字符串處理函數(shù)在C的函數(shù)庫中提供了一些用來處理字符串的函數(shù)〔1scanf和printf函數(shù)在字符串的使用使用scanf和printf函數(shù)對字符串的處理時,調用語句中的輸入或輸出項使用的是字符數(shù)組名.〔即使用字符數(shù)組名的首地址例:main<><j5_9.c>{chars1[3],s2[5];scanf<"%s%s",s1,s2>;printf<%s\n%s\n",s1,s2>;}輸入:ABCDEFHK<即:希望s1="ABC"s2="DEFHK"輸出:ABCDEF說明:C語言規(guī)定,scanf函數(shù)遇空格或回車就結束本次輸入.〔2puts函數(shù)格式:puts〔字符數(shù)組即:puts〔str將一個字符串str〔以‘\0’〔3gets函數(shù)格式:gets〔字符數(shù)組即:gets<str>輸入:abcde讀取字符串并把它們依次放到str指向的字符數(shù)組中去.得到一個函數(shù)值,該函數(shù)值是字符數(shù)組的起始地址.str是字符數(shù)組的首地址,它讀取字符串直到遇到換行符或EOF.換行符或EOF不進入字符串,被轉換為"\0”〔4strcat函數(shù)strcat<str1,str2>;str1,str2是字符數(shù)組連接兩個字符數(shù)組中的字符串,把str2接到str1的后面,結果放在字符數(shù)組str1中.例:staticcharstr1[20]={"ABCDEF"}staticcharstr2[]={"gggg"}執(zhí)行strcat<str1,str2>的結果為:ABCDEFgggg書P136〔5strcpy函數(shù)strcpy<str1,str2>;功能:把str2的內容復制到str1中例:strcpy<str1,"abcd">;strcpy<&a[n],&a[n+1]>;作用:將n個字符以后的字符順序地向前移動一個序號.說明:a>str1>=str2b>str1必須是數(shù)組名,str2可以是數(shù)組名或字符串常量c>可以解決字符串常量不能賦值給字符數(shù)組即:str1={"abcde"};str1=str2;〔不合法可用strcpy〔str1,str2注:strcpy〔str1,str2,2;是將str2中前面2個字符拷貝到str1中去,然后再加一個‘\0’〔6strcmp函數(shù)strcmp<str1,str2>;功能:把str1與str2的內容進行比較〔按ASCII碼的大小進行比較如果:str1=str2,則函數(shù)返回0如果:str1>str2,則函數(shù)返回正整數(shù)如果:str1<str2,則函數(shù)返回負整數(shù)〔7strlen函數(shù)strlen<str>測試字符串長度,不包括‘\0〔8strlwr函數(shù)strlwr<str>將字符串中大寫字母換成小寫字母〔9strupr函數(shù)strupr<str>將字符串中小寫字母換成大寫字母7.程序舉例:書P138例7.8例7.9五、該章的主要例題:例7.1、例7.2、例7.3、例7.4、例7.5、例7.6、例7.8、例7.9六、主要習題:7.1、*7.2、7.3、7.5、7.6、*7.9、7.11、*7.13七、主要上機內容:例7.2、例7.3、例7.4、例7.5、例7.7、例7.8、7.1、7.3、*7.9、7.11其他:上機實驗指導書中內容第八章函數(shù)與程序結構1、函數(shù)的一般概念:函數(shù)形參、實參、返回值,函數(shù)的類型;2、動態(tài)存儲變量與靜態(tài)存儲變量3、變量的生存期與作用域重點:=1\*GB3①函數(shù)的定義和調用及使用函數(shù)的特點.=2\*GB3②函數(shù)間的參數(shù)傳遞<值傳遞和地址傳遞>.=3\*GB3③變量存儲作用域、編譯預處理的使用.難點:=1\*GB3①函數(shù)參數(shù)傳遞〔數(shù)值、地址及形參、實參的使用;=2\*GB3②變量存儲作用域及自動變量與靜態(tài)變量的區(qū)別.一、函數(shù)概述一個較大的程序:可由若干程序模塊組成,每一模塊用來實現(xiàn)一個特定的功能.——用子程序可實現(xiàn)該模塊功能.——在C語言中:子程序稱為:子函數(shù)在C程序中:可由一個主函數(shù)和若干個函數(shù)構成.分為標準庫函數(shù)和用戶自定義函數(shù)函數(shù)的作用:減少重復編寫程序段的工作量.語句語句調用語句調用語句語句語句功能語句功能語句功能功能標準庫函數(shù):由C語言預先編寫的一系列常用函數(shù)〔系統(tǒng)提供TurboC的標準庫——包含400多個常用函數(shù)用戶自定義函數(shù):一般自定義函數(shù)和自定義函數(shù)庫〔用戶先已編好的二、函數(shù)定義〔子函數(shù)的設計1.函數(shù)定義格式:類型定義符函數(shù)名〔形式參數(shù)表列{函數(shù)體}說明:1類型定義符:函數(shù)返回值的數(shù)據(jù)類型a>int,char,float,double默認intb>函數(shù)無數(shù)據(jù)返回,使用void作類型定義符2函數(shù)名:函數(shù)的名稱〔用戶取的:合法的標識符3形式參數(shù)表列:函數(shù)調用時傳遞信息的通道傳統(tǒng)風格有兩種表示方法:a>〔參數(shù)說明形式參數(shù)傳統(tǒng)風格b>〔形式參數(shù)參數(shù)說明例:floatadd<floatx,floaty>floatadd<x,y>{x=x+y;{floatx,y;return<x>;x=x+y;}return<x>;}a>.b>2.函數(shù)的返回值一般通過函數(shù)中的return語句獲得.如果不需要返回值,可以不要return語句.為了明確表示"不帶回值",可以用"void"定義"無類型"例:main<>/*〔打印平方表*/{voidprin<intx>;inti;for<i=1;i<=10;i++>prin<i>;}voidprin<x>intx;{printf<"%d\t%d\n",x,x*x>;}三、函數(shù)間的參數(shù)傳遞在一個主調函數(shù)調用一個子函數(shù)時,須把主調函數(shù)的參數(shù)傳遞給子函數(shù),稱該參數(shù)為"實際參數(shù)".實參可以是常量、變量、表達式實參應和形參類型相同或相容P146例8.2<主函數(shù)>c=max<a,b>;<子函數(shù)>max<intx,inty>形式參數(shù)實際參數(shù)形式參數(shù)實際參數(shù)參數(shù)傳遞〔1數(shù)值傳遞方式特點:實參通過復制的方式傳遞給形參〔占用不同的內存空間實參地址2形參地址ax調用函數(shù)的實參:給出具體數(shù)據(jù)〔2地址傳遞方式特點:參數(shù)傳遞不是數(shù)據(jù)本身,而是數(shù)據(jù)的地址〔使用同一地址空間實參地址形參地址調用函數(shù)實參:一般是數(shù)組名或指針變量四、函數(shù)調用及值的返回1.函數(shù)調用格式:函數(shù)名〔實參表列;調用的過程:a通過函數(shù)名,找到定義的函數(shù)b將實際參數(shù)傳遞給被調函數(shù)的形式參數(shù)〔實際參數(shù)與形式參數(shù)一一對應,既一一傳遞數(shù)據(jù)許多C版本是按自右而左的順序求值例:P150例8.4main<>{inti=2,p;p=f<i,++i>;/*f為f<3,3>*/printf<"%d",p>;}intf<inta,b>{intc;if<a>b>c=1;elseif<a==b>c=0;elsec=-1;return<c>;}運行結果:0說明:<1>應避免這種情況的產(chǎn)生,可寫為:=1\*GB3①自左而右順序=2\*GB3②自右而左順序j=i;j=++i;k=++i;p=f<j,j>;p=f<j,k>;<2>在printf<"%d,%d",i,i++>;中同樣存在當:i=3;結果為:4,32.函數(shù)調用的幾種方式函數(shù)語句把函數(shù)調用作為一個語句,即單獨一個語句行.不要求函數(shù)帶回值,只要求函數(shù)完成一定操作.即:printstar<>;函數(shù)表達式函數(shù)出現(xiàn)在一個表達式中,要求函數(shù)帶回一個確定的值以參加表達式的運算.即:c=2*max<a,b>;函數(shù)參數(shù)函數(shù)調用作為一個函數(shù)的實參;即:m=max〔a,max<b,c>;3.函數(shù)說明作用:在函數(shù)使用前對函數(shù)的特征進行說明的語句.〔用戶自定義函數(shù)對已定義的函數(shù)的返回值進行類型說明.告訴系統(tǒng)在本函數(shù)中將要用到的函數(shù)是什么類型.C語言規(guī)定:以下幾種情況可以不使用函數(shù)說明a函數(shù)的值〔函數(shù)的返回值是整型或字符型〔系統(tǒng)自動按整說明b如果函數(shù)定義在調用函數(shù)之前,可以不必加以說明在函數(shù)說明和函數(shù)定義中:a類型定義、函數(shù)名要相同b形式參數(shù)標識符可以不相同如:main<>{doubleabc<intx,floaty>;/*函數(shù)說明*/}doubleabc<inta,floatb>/*函數(shù)定義a,b與x,y不同*/函數(shù)體}非int形參的函數(shù)必須在調用前進行函數(shù)說明P148例8.3、8.5不使用函數(shù)說明例子例:main<>floatabc<floatx,floaty>{intsum,a=2,b=5;{x=x+y;定sum=add<a,b>;return<x>;義┄}}main<>intadd<intx,inty>{floatsum,a=2.0,b=5.0;{x=x+y;定義sum=abc<a,b>;return<x>;語句}}說明:使用庫函數(shù),一般在文件開頭用#include命令即:#include"math.h"main〔

溫馨提示

  • 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

提交評論