C語言課件-第3章算法和基本程序設計.ppt_第1頁
C語言課件-第3章算法和基本程序設計.ppt_第2頁
C語言課件-第3章算法和基本程序設計.ppt_第3頁
C語言課件-第3章算法和基本程序設計.ppt_第4頁
C語言課件-第3章算法和基本程序設計.ppt_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

主要內(nèi)容:算法的表示方法、C程序的基本結(jié)構(gòu)和輸入輸出。 3.1 算法 算法:是解決問題的一系列操作步驟的集合。 科學家沃思(Nikiklaus Wirth)提出一個公式: 數(shù)據(jù)結(jié)構(gòu) + 算法 = 程序 數(shù)據(jù)結(jié)構(gòu):對數(shù)據(jù)(操作對象)的描述。 算法: 對操作步驟的描述。 編寫程序的本質(zhì): 對哪些數(shù)據(jù)進行什么樣的一系列加工就可以達到目標。,第3章 算法和基本程序設計,例:依次讀入30個學生成績,輸出平均成績及最高成績,算法:s1:0=i, 0=sum, 0=max s2:讀入一個學生成績存入score s3:i+1=i s4;sum+score=sum s5:如果score大于max,則score= max s6:如果i小于30,轉(zhuǎn)移至s2 s7:sum/30=average s8:打印average,max,s2,s3,s4,s5,s6這些步驟會被重復執(zhí)行30次, 變量i用于統(tǒng)計已處理的學生人數(shù) 當i值小于30時,流程轉(zhuǎn)至s2讀下一個學生成績 當i值等于30時,所有學生成績處理完畢,按順序到s7計算平均成績,再到s8輸出結(jié)果。,算法舉例,算法是解決問題邏輯思路的表述,同一問題有不同的解題方法和步驟,設計出不同的算法。 正確的算法應該具備以下特性。 有窮性:包含有限的操作步驟,不能無限制地執(zhí)行下去。 確定性:算法中所描述的每個步驟都應該是明確的 有0 n個輸入數(shù)據(jù): 輸入是指在算法執(zhí)行過程中需要用戶輸入的信息。 有1 n個輸出數(shù)據(jù): 一般地,算法都有一個或多個輸出數(shù)據(jù),因為設計算法的目的就是進行數(shù)值運算或進行某種數(shù)據(jù)處理,給用戶輸出處理結(jié)果是必然的要求。 有效性: 在一個算法中,要求每個步驟都能被有效地執(zhí)行,算法的特性,算法的表示,算法可用自然語言將其表述,但自然語言不嚴格,容易出現(xiàn)“二義性”。當算法包含多個分支和循環(huán)時,自然語言表述就更為困難??刹捎酶?guī)范化的方法表示,常用的有:流程圖、N-S圖、偽代碼、PAD圖等。流程圖是最常用的一種方法。它用圖形符號配合文字表示流程和操作,形象直觀,易于理解。,起止框,I/O框,判斷框,處理框,流程線,連接點,例:求三個整數(shù)的和,main( ) float x,y,z,sum; scanf(“%f%f%fn”, ,例2:求三個數(shù)中最小數(shù),#include main() int a,b,c,min; scanf(“%d%d%d“, ,例:求三個數(shù)中最小數(shù)。,3.2 結(jié)構(gòu)化程序設計方法,結(jié)構(gòu)化程序設計方法的基本思想是:把一個復雜問題的求解過程分步進行,后一步在前一步的基礎上細化,這樣每步所考慮的子問題都相對易于理解和處理,每步都只用三種基本結(jié)構(gòu), 進行復合和嵌套。也可以概括為:自頂向下,逐步求精的方法。,3.3 程序基本結(jié)構(gòu),從結(jié)構(gòu)化程序設計角度出發(fā), 程序有三種基本結(jié)構(gòu): 只要用這三種基本結(jié)構(gòu), 經(jīng)過有限次復合和嵌套就可以解決程序設計的全部問題。程序結(jié)構(gòu)清晰可讀性好, 易維護。,順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),1. 順序結(jié)構(gòu),先執(zhí)行A, 再執(zhí)行B.,2. 選擇結(jié)構(gòu),若P為真,則執(zhí) 行A,否則執(zhí)行B。,若P為真,則執(zhí) 行A,否則跳過A。,3. 循環(huán)結(jié)構(gòu),(1) 當型循環(huán) 當P為真,反復執(zhí)行A, P為假時出循環(huán)。,(2) 直到型循環(huán) 先執(zhí)行A, 再判斷,若P為假,反復執(zhí)行A, 直到P為真出循環(huán)。,x5,另外:由選擇結(jié)構(gòu)可以派生出多分支結(jié)構(gòu).,C程序是由語句組成,每個語句以分號結(jié)束。 語句分類: 控制語句: 控制程序執(zhí)行流程 表達式語句 函數(shù)調(diào)用語句:調(diào)用函數(shù) 空語句: 執(zhí)行空操作 復合語句: 執(zhí)行一組語句 用 把一些語句括起來,相當于一個語句 如: x1=-(-b+sqrt(d)/(2*a); x2=-(-b-sqrt(d)/(2*a); ,3.4 順序結(jié)構(gòu)程序設計,輸入:將數(shù)據(jù)送入計算機 輸出:將計算機處理的結(jié)果數(shù)據(jù)送出到輸出設備。 語言中,數(shù)據(jù)輸入輸出是由庫函數(shù)完成。 使用庫函數(shù)時,用預編譯命令將有關(guān)“頭文件”包括到源文件中。 標準輸入輸出庫函數(shù): “stdio.h”文件 源文件開頭應有以下預編譯命令: #include #include “stdio.h“,3.5 數(shù)據(jù)的輸入輸出,格式: putchar( c ) 參數(shù): c為字符常量、變量或表達式 功能:把字符c輸出到顯示器上 返值:正常,為顯示的代碼值;出錯,為EOF,#include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); ,運行結(jié)果:A B,例,1. putchar 函數(shù)(字符輸出函數(shù)),例 char a=3,b=4; printf(“%c %cn“,a,b); printf(“a=%c , b=%cn“,a,b);,輸出結(jié)果: 3 4 a=3, b=4,輸出結(jié)果: 3 4 a=3, b=4,例 int a=3,b=4; printf(“%d %dn“,a,b); printf(“a=%d , b=%dn“,a,b);,例 float a=3.14, b=2.1828; printf(“%f %fn“,a,b); printf(“a=%f , b=%cf“,a,b);,輸出結(jié)果: 3.140000 2.182800 a=3.140000, b=2.182800,輸出表:要輸出的數(shù)據(jù)(可以沒有,多個時以,分隔) 格式控制串:包含兩種信息 格式說明:%修飾符格式字符,用于指定輸出格式 普通字符或轉(zhuǎn)義序列:原樣輸出 格式字符: d格式符:按十進制格式輸出 f格式符:按實數(shù)格式輸出 c格式符:以字符形式輸出一個字符,2. printf函數(shù)(格式輸出函數(shù)),格式:printf(“格式控制串“,輸出表) 功能:按指定格式向顯示器輸出數(shù)據(jù) 返值:正常,返回輸出字節(jié)數(shù);出錯,返回EOF 說明:標準庫函數(shù),函數(shù)原型在頭文件“stdio.h“中, 字母l,用于長整型數(shù)據(jù)的輸出,可以加在 d、o、x、u四個格式字符的前面。 在格式字符的前面給出一個正整數(shù)m,指定數(shù)據(jù)最小的輸出寬度。若實際位數(shù)多于定義的寬度,則按實際位數(shù)輸出,若實際位數(shù)少于定義的寬度則補以空格。若在格式符前面不指定輸出寬度,則按數(shù)據(jù)的實際位數(shù)輸出。 負號,指定輸出的數(shù)字或字符串在指定寬度內(nèi)向左靠齊。,對于實數(shù),可以指定輸出的小數(shù)位數(shù),稱為精度格式符,它以“.”開頭,后跟十進制整數(shù)n,可以用于限制f、e、E、g和G格式字符;也用于字符串,表示截取的字符個數(shù)。實數(shù)若不指定輸出的小數(shù)位數(shù),則由系統(tǒng)自動指定,不同的系統(tǒng)略有不同。 “%f”格式,整數(shù)部分全部輸出,小數(shù)部分輸出六位數(shù)字。對于“%e”一般是輸出占13列(11列),其中指數(shù)部分5列(4列),數(shù)值按規(guī)范化形式輸出(即小數(shù)點前必須有且只有1位非零數(shù)字),輸出六位(五位)小數(shù)。 例如: float x=234.541; printf(“%f,%12f,%8.2fn%e,%10.2en“,f,f,f,f,f); printf(“%s,%7.3s“,“technology“,“technology“);,234.541000, 234.541000, 234.54 2.345410e+002, 2.34e+002 technology, tec,main() printf(“%ld,%lo,%lu,%lxn“,32l,32l,32l,32l); printf(“%d,%f,%c,%s,%en“,2,3.1,a,“ok“,367.45); printf(“%d,%f,%c,%s,%en“,-2,-3.1,a,“ok“,-367.45); printf(“%2d,%2f,%2c,%2s,%2en“, 2,3.1,a,“ok“,367.45); printf(“%2d,%2f,%2c,%2s,%2en“, -2,-3.1,a,“ok“,-367.45); printf(“%5d,%10f,%10s,%15en“, 2,3.1,“ok“,367.45); printf(“%5d,%10f,%10s,%15en“,-2,-3.1,“ok“,-367.45); printf(“%10.4f,%10.4s,%10.4en“,3.1,“Hello,world“,367.45); printf(“%10.4f,%10.4s,%10.4en“,-3.1,“Hello,world“,-367.45); ,注意: 1。要輸出的數(shù)據(jù)類型決定了所使用的格式字符串,否則,會有不正確的輸出。 2。整型數(shù)據(jù)使用%d%o%x%u格式字符時,可能會有不同的輸出結(jié)果。 3。對于0255之間的整數(shù),若按%c輸出,則輸出與該整數(shù)對應的ASCII字符。反之,若用 %d輸出字符量,則輸出其對應的ASCII值。 4。使用printf時,若輸出項是表達式,應注意求值順序,對于TC來說,按照自右向左的順序。 例如,int i=5; printf(“%d,%dn”,i+,i); printf(“%dn”,i);,格式:getchar( ) 功能:從鍵盤讀一字符 返值:正常,返回讀取的代碼值;出錯,返回EOF,例,/*ch3_4.c*/ #include main() int c; printf(“Enter a character:“); c=getchar(); printf(“%c-hex%xn“,c,c); ,運行結(jié)果: Enter a character:A A-hex41,3. getchar函數(shù)(字符輸入函數(shù)),4. getch函數(shù),格式: getch ( ) 功能:從鍵盤讀入一字符, 不用回車結(jié)束,不回顯,例:,#include main( ) char c; c=getch ( ); putchar( c ); ,a a,5. getche函數(shù),格式: getche ( ) 功能:從鍵盤讀入一字符, 不用回車結(jié)束,回顯,例:,#include main( ) char c; c=getche ( ); putchar( c ); ,a aa,6.scanf函數(shù) (格式輸入函數(shù)),地址表:變量的地址,用取地址運算符& 格式字符:d,c,f,例 int a scanf(“%d“, 輸入:10 則 a=10,例 char a; scanf(“%c“, 輸入:m 則 a=m,例 float a; scanf(“%f“, 輸入:3.14 則 a=3.140000,格式: scanf(“格式控制串“,地址表) 功能:按指定格式從鍵盤讀入數(shù)據(jù),存入地址表指 定的存儲單元中,按回車鍵結(jié)束 返值:正常,返回輸入數(shù)據(jù)個數(shù) 說明:標準庫函數(shù), 在頭文件“stdio.h“中定義,例 scanf(“%d:%d:%d“, 輸入 12:30:45 則12 h, 30 m, 45 s,例 scanf(“%d,%d“,&a,&b) 輸入 3,4 則3a, 4 b,例 scanf(“%d%d%d“, 輸入 12 24 36 ,輸入分隔符的指定 格式串中兩個格式符有間隔字符 格式串兩個格式符無間隔字符,以空格、TAB或回車鍵作為分隔,關(guān)于格式輸入函數(shù)的幾點說明:,1、輸入數(shù)據(jù)時不能規(guī)定精度;,2、參數(shù)中“格式控制”之后應該是變量地址;,3、如果在“格式控制”字符串中除了格式說明以外, 還有其他字符,則在輸入數(shù)據(jù)時應輸入與這些 字符相同的字符;,例:scanf(”%7.2f”,&a);,例: scanf(”%f”,a);,例:scanf(”a=%d,b=%d”, &a,&b);,輸入時應該是:a=3,b=4 ,4、在用“%c”格式輸入字符時,空格字符和轉(zhuǎn)義 字符都作為有效的字符輸入。,例:scanf(”%d%d”,&a,&b);,輸入時可為:3 4 ,3 4 ,3Tab鍵4 ,例:scanf(”%c%c%c”,&c1,&c2,&c3);,若輸入時為:a b c ,則結(jié)果為: c1=a,c2= ,c3=b,5、double型數(shù)據(jù)輸入時,必須用%lf或%le格式,#include #include main( ) float a, b, c, s, area; printf(“input a, b, c: “); scanf(“%f, %f, %f“, ,例: 輸入三角形邊長,求面積。 公式:s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)

溫馨提示

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

評論

0/150

提交評論