




已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
主要內(nèi)容:算法的表示方法、C程序的基本結(jié)構(gòu)和輸入輸出。 3.1 算法 算法:是解決問(wèn)題的一系列操作步驟的集合。 科學(xué)家沃思(Nikiklaus Wirth)提出一個(gè)公式: 數(shù)據(jù)結(jié)構(gòu) + 算法 = 程序 數(shù)據(jù)結(jié)構(gòu):對(duì)數(shù)據(jù)(操作對(duì)象)的描述。 算法: 對(duì)操作步驟的描述。 編寫(xiě)程序的本質(zhì): 對(duì)哪些數(shù)據(jù)進(jìn)行什么樣的一系列加工就可以達(dá)到目標(biāo)。,第3章 算法和基本程序設(shè)計(jì),例:依次讀入30個(gè)學(xué)生成績(jī),輸出平均成績(jī)及最高成績(jī),算法:s1:0=i, 0=sum, 0=max s2:讀入一個(gè)學(xué)生成績(jī)存入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這些步驟會(huì)被重復(fù)執(zhí)行30次, 變量i用于統(tǒng)計(jì)已處理的學(xué)生人數(shù) 當(dāng)i值小于30時(shí),流程轉(zhuǎn)至s2讀下一個(gè)學(xué)生成績(jī) 當(dāng)i值等于30時(shí),所有學(xué)生成績(jī)處理完畢,按順序到s7計(jì)算平均成績(jī),再到s8輸出結(jié)果。,算法舉例,算法是解決問(wèn)題邏輯思路的表述,同一問(wèn)題有不同的解題方法和步驟,設(shè)計(jì)出不同的算法。 正確的算法應(yīng)該具備以下特性。 有窮性:包含有限的操作步驟,不能無(wú)限制地執(zhí)行下去。 確定性:算法中所描述的每個(gè)步驟都應(yīng)該是明確的 有0 n個(gè)輸入數(shù)據(jù): 輸入是指在算法執(zhí)行過(guò)程中需要用戶(hù)輸入的信息。 有1 n個(gè)輸出數(shù)據(jù): 一般地,算法都有一個(gè)或多個(gè)輸出數(shù)據(jù),因?yàn)樵O(shè)計(jì)算法的目的就是進(jìn)行數(shù)值運(yùn)算或進(jìn)行某種數(shù)據(jù)處理,給用戶(hù)輸出處理結(jié)果是必然的要求。 有效性: 在一個(gè)算法中,要求每個(gè)步驟都能被有效地執(zhí)行,算法的特性,算法的表示,算法可用自然語(yǔ)言將其表述,但自然語(yǔ)言不嚴(yán)格,容易出現(xiàn)“二義性”。當(dāng)算法包含多個(gè)分支和循環(huán)時(shí),自然語(yǔ)言表述就更為困難。可采用更規(guī)范化的方法表示,常用的有:流程圖、N-S圖、偽代碼、PAD圖等。流程圖是最常用的一種方法。它用圖形符號(hào)配合文字表示流程和操作,形象直觀,易于理解。,起止框,I/O框,判斷框,處理框,流程線,連接點(diǎn),例:求三個(gè)整數(shù)的和,main( ) float x,y,z,sum; scanf(“%f%f%fn”, ,例2:求三個(gè)數(shù)中最小數(shù),#include main() int a,b,c,min; scanf(“%d%d%d“, ,例:求三個(gè)數(shù)中最小數(shù)。,3.2 結(jié)構(gòu)化程序設(shè)計(jì)方法,結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想是:把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程分步進(jìn)行,后一步在前一步的基礎(chǔ)上細(xì)化,這樣每步所考慮的子問(wèn)題都相對(duì)易于理解和處理,每步都只用三種基本結(jié)構(gòu), 進(jìn)行復(fù)合和嵌套。也可以概括為:自頂向下,逐步求精的方法。,3.3 程序基本結(jié)構(gòu),從結(jié)構(gòu)化程序設(shè)計(jì)角度出發(fā), 程序有三種基本結(jié)構(gòu): 只要用這三種基本結(jié)構(gòu), 經(jīng)過(guò)有限次復(fù)合和嵌套就可以解決程序設(shè)計(jì)的全部問(wèn)題。程序結(jié)構(gòu)清晰可讀性好, 易維護(hù)。,順序結(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,否則跳過(guò)A。,3. 循環(huán)結(jié)構(gòu),(1) 當(dāng)型循環(huán) 當(dāng)P為真,反復(fù)執(zhí)行A, P為假時(shí)出循環(huán)。,(2) 直到型循環(huán) 先執(zhí)行A, 再判斷,若P為假,反復(fù)執(zhí)行A, 直到P為真出循環(huán)。,x5,另外:由選擇結(jié)構(gòu)可以派生出多分支結(jié)構(gòu).,C程序是由語(yǔ)句組成,每個(gè)語(yǔ)句以分號(hào)結(jié)束。 語(yǔ)句分類(lèi): 控制語(yǔ)句: 控制程序執(zhí)行流程 表達(dá)式語(yǔ)句 函數(shù)調(diào)用語(yǔ)句:調(diào)用函數(shù) 空語(yǔ)句: 執(zhí)行空操作 復(fù)合語(yǔ)句: 執(zhí)行一組語(yǔ)句 用 把一些語(yǔ)句括起來(lái),相當(dāng)于一個(gè)語(yǔ)句 如: x1=-(-b+sqrt(d)/(2*a); x2=-(-b-sqrt(d)/(2*a); ,3.4 順序結(jié)構(gòu)程序設(shè)計(jì),輸入:將數(shù)據(jù)送入計(jì)算機(jī) 輸出:將計(jì)算機(jī)處理的結(jié)果數(shù)據(jù)送出到輸出設(shè)備。 語(yǔ)言中,數(shù)據(jù)輸入輸出是由庫(kù)函數(shù)完成。 使用庫(kù)函數(shù)時(shí),用預(yù)編譯命令將有關(guān)“頭文件”包括到源文件中。 標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù): “stdio.h”文件 源文件開(kāi)頭應(yīng)有以下預(yù)編譯命令: #include #include “stdio.h“,3.5 數(shù)據(jù)的輸入輸出,格式: putchar( c ) 參數(shù): c為字符常量、變量或表達(dá)式 功能:把字符c輸出到顯示器上 返值:正常,為顯示的代碼值;出錯(cuò),為EOF,#include main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); ,運(yùn)行結(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ù)(可以沒(méi)有,多個(gè)時(shí)以,分隔) 格式控制串:包含兩種信息 格式說(shuō)明:%修飾符格式字符,用于指定輸出格式 普通字符或轉(zhuǎn)義序列:原樣輸出 格式字符: d格式符:按十進(jìn)制格式輸出 f格式符:按實(shí)數(shù)格式輸出 c格式符:以字符形式輸出一個(gè)字符,2. printf函數(shù)(格式輸出函數(shù)),格式:printf(“格式控制串“,輸出表) 功能:按指定格式向顯示器輸出數(shù)據(jù) 返值:正常,返回輸出字節(jié)數(shù);出錯(cuò),返回EOF 說(shuō)明:標(biāo)準(zhǔn)庫(kù)函數(shù),函數(shù)原型在頭文件“stdio.h“中, 字母l,用于長(zhǎng)整型數(shù)據(jù)的輸出,可以加在 d、o、x、u四個(gè)格式字符的前面。 在格式字符的前面給出一個(gè)正整數(shù)m,指定數(shù)據(jù)最小的輸出寬度。若實(shí)際位數(shù)多于定義的寬度,則按實(shí)際位數(shù)輸出,若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格。若在格式符前面不指定輸出寬度,則按數(shù)據(jù)的實(shí)際位數(shù)輸出。 負(fù)號(hào),指定輸出的數(shù)字或字符串在指定寬度內(nèi)向左靠齊。,對(duì)于實(shí)數(shù),可以指定輸出的小數(shù)位數(shù),稱(chēng)為精度格式符,它以“.”開(kāi)頭,后跟十進(jìn)制整數(shù)n,可以用于限制f、e、E、g和G格式字符;也用于字符串,表示截取的字符個(gè)數(shù)。實(shí)數(shù)若不指定輸出的小數(shù)位數(shù),則由系統(tǒng)自動(dòng)指定,不同的系統(tǒng)略有不同。 “%f”格式,整數(shù)部分全部輸出,小數(shù)部分輸出六位數(shù)字。對(duì)于“%e”一般是輸出占13列(11列),其中指數(shù)部分5列(4列),數(shù)值按規(guī)范化形式輸出(即小數(shù)點(diǎn)前必須有且只有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ù)類(lèi)型決定了所使用的格式字符串,否則,會(huì)有不正確的輸出。 2。整型數(shù)據(jù)使用%d%o%x%u格式字符時(shí),可能會(huì)有不同的輸出結(jié)果。 3。對(duì)于0255之間的整數(shù),若按%c輸出,則輸出與該整數(shù)對(duì)應(yīng)的ASCII字符。反之,若用 %d輸出字符量,則輸出其對(duì)應(yīng)的ASCII值。 4。使用printf時(shí),若輸出項(xiàng)是表達(dá)式,應(yīng)注意求值順序,對(duì)于TC來(lái)說(shuō),按照自右向左的順序。 例如,int i=5; printf(“%d,%dn”,i+,i); printf(“%dn”,i);,格式:getchar( ) 功能:從鍵盤(pán)讀一字符 返值:正常,返回讀取的代碼值;出錯(cuò),返回EOF,例,/*ch3_4.c*/ #include main() int c; printf(“Enter a character:“); c=getchar(); printf(“%c-hex%xn“,c,c); ,運(yùn)行結(jié)果: Enter a character:A A-hex41,3. getchar函數(shù)(字符輸入函數(shù)),4. getch函數(shù),格式: getch ( ) 功能:從鍵盤(pán)讀入一字符, 不用回車(chē)結(jié)束,不回顯,例:,#include main( ) char c; c=getch ( ); putchar( c ); ,a a,5. getche函數(shù),格式: getche ( ) 功能:從鍵盤(pán)讀入一字符, 不用回車(chē)結(jié)束,回顯,例:,#include main( ) char c; c=getche ( ); putchar( c ); ,a aa,6.scanf函數(shù) (格式輸入函數(shù)),地址表:變量的地址,用取地址運(yùn)算符& 格式字符: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(“格式控制串“,地址表) 功能:按指定格式從鍵盤(pán)讀入數(shù)據(jù),存入地址表指 定的存儲(chǔ)單元中,按回車(chē)鍵結(jié)束 返值:正常,返回輸入數(shù)據(jù)個(gè)數(shù) 說(shuō)明:標(biāo)準(zhǔn)庫(kù)函數(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 ,輸入分隔符的指定 格式串中兩個(gè)格式符有間隔字符 格式串兩個(gè)格式符無(wú)間隔字符,以空格、TAB或回車(chē)鍵作為分隔,關(guān)于格式輸入函數(shù)的幾點(diǎn)說(shuō)明:,1、輸入數(shù)據(jù)時(shí)不能規(guī)定精度;,2、參數(shù)中“格式控制”之后應(yīng)該是變量地址;,3、如果在“格式控制”字符串中除了格式說(shuō)明以外, 還有其他字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些 字符相同的字符;,例:scanf(”%7.2f”,&a);,例: scanf(”%f”,a);,例:scanf(”a=%d,b=%d”, &a,&b);,輸入時(shí)應(yīng)該是:a=3,b=4 ,4、在用“%c”格式輸入字符時(shí),空格字符和轉(zhuǎn)義 字符都作為有效的字符輸入。,例:scanf(”%d%d”,&a,&b);,輸入時(shí)可為:3 4 ,3 4 ,3Tab鍵4 ,例:scanf(”%c%c%c”,&c1,&c2,&c3);,若輸入時(shí)為:a b c ,則結(jié)果為: c1=a,c2= ,c3=b,5、double型數(shù)據(jù)輸入時(shí),必須用%lf或%le格式,#include #include main( ) float a, b, c, s, area; printf(“input a, b, c: “); scanf(“%f, %f, %f“, ,例: 輸入三角形邊長(zhǎng),求面積。 公式:s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南科技職業(yè)學(xué)院《醫(yī)學(xué)微生物學(xué)理論》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)時(shí)間學(xué)習(xí)與視覺(jué)疲勞的應(yīng)對(duì)方案
- 河南醫(yī)學(xué)高等專(zhuān)科學(xué)?!端逄剖穼?zhuān)題》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省淮安市楚州區(qū)2025年數(shù)學(xué)四下期末綜合測(cè)試模擬試題含解析
- 沈陽(yáng)城市建設(shè)學(xué)院《奧林匹克文化》2023-2024學(xué)年第二學(xué)期期末試卷
- 飲用水源保護(hù)區(qū)防護(hù)方案
- 退出確認(rèn)機(jī)制防止誤操作損失
- 山東省濟(jì)寧市2024-2025學(xué)年四年級(jí)數(shù)學(xué)第二學(xué)期期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 河北省衡水市桃城區(qū)2025年三下數(shù)學(xué)期末預(yù)測(cè)試題含解析
- 泰山學(xué)院《工業(yè)微生物學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 蜂膠表彰會(huì)中宏全國(guó)通用版模板課件
- 2022年HTD-8M同步帶輪尺寸表
- 原始狩獵圖 (2)
- 《色彩構(gòu)成——色彩基礎(chǔ)知識(shí)》PPT課件
- 煤礦供電系統(tǒng)及供電安全講座方案課件
- 綠色建筑及材料分析及案列
- 鍍層的結(jié)合力
- 霍尼韋爾DDC編程軟件(CARE)簡(jiǎn)介
- 實(shí)用中西醫(yī)結(jié)合診斷治療學(xué)
- 論《說(shuō)文解字》中的水文化
- 德龍自卸車(chē)合格證掃描件(原圖)
評(píng)論
0/150
提交評(píng)論