




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.1算法計(jì)算機(jī)科學(xué)家沃思(NikiklausWirth)提出一個(gè)公式:
數(shù)據(jù)結(jié)構(gòu)+算法=程序數(shù)據(jù)結(jié)構(gòu):對(duì)數(shù)據(jù)(操作對(duì)象)的描述---數(shù)據(jù)的類(lèi)型和組織形式。算法:對(duì)操作步驟的描述。編寫(xiě)程序的本質(zhì):
對(duì)哪些數(shù)據(jù)進(jìn)行什么樣的一系列加工就可以達(dá)到目標(biāo)。
第3章算法和基本程序設(shè)計(jì)特點(diǎn):
有窮性
確定性
可行性
有輸入
有輸出
評(píng)價(jià)標(biāo)準(zhǔn):
正確性
可讀性
健壯性
高效率
低存儲(chǔ)量需求
3.1.1算法——程序的靈魂算法是解決問(wèn)題的一系列操作步驟的集合。3.1.2算法的表示
自然語(yǔ)言流程圖N-S圖偽代碼PAD圖流程圖例:求三個(gè)整數(shù)的和流程圖開(kāi)始輸出sum的值結(jié)束輸入x,y,zsum=x+y+zmain(){floatx,y,z,sum;
scanf(“%f%f%f\n”,&x,&y,&z);
sum=x+y+z;
printf(“sum=%f\n”,sum);}例1例2:求三個(gè)數(shù)中最小數(shù)流程圖開(kāi)始輸出min的值輸入a,b,ca<bNmin=amin=bY結(jié)束c<minmin=cYN#include<stdio.h>main(){
int
a,b,c,min;
scanf("%d%d%d",&a,&b,&c);
if(a<b) min=a;
else min=b;
if(c<min) min=c;
printf("min=%d",min);}例2N-S圖
例:求三個(gè)整數(shù)的和流程圖開(kāi)始輸出sum的值結(jié)束輸入x,y,zsum=x+y+z輸出sum的值sum=x+y+z輸入x,y,zN-S圖例:求三個(gè)數(shù)中最小數(shù)。流程圖開(kāi)始輸出min的值輸入a,b,ca<bNmin=amin=bY結(jié)束c<minmin=cYNN-S圖min=bmin=aa<bYNmin=cc<minYN輸入a,b,c輸出min的值3.2結(jié)構(gòu)化程序設(shè)計(jì)方法基本思想:把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程分步進(jìn)行,后一步在前一步的基礎(chǔ)上細(xì)化,這樣每步所考慮的子問(wèn)題都相對(duì)易于理解和處理,每步都只用三種基本結(jié)構(gòu)(順序、選擇、循環(huán)),進(jìn)行復(fù)合和嵌套。結(jié)構(gòu)化程序設(shè)計(jì)原則:自頂向下模塊化限制Goto語(yǔ)言使用
——清晰第一效率第二3.3程序基本結(jié)構(gòu)
順序、選擇、循環(huán)結(jié)構(gòu)ABPYN
若P為真,則執(zhí)行A,否則執(zhí)行B。APNY
若P為真,則執(zhí)行A,否則跳過(guò)A。K=K1A1A2AiAn……K2KiKn由選擇結(jié)構(gòu)派生出多分支結(jié)構(gòu)
當(dāng)型循環(huán)當(dāng)P為真,反復(fù)執(zhí)行A,P為假時(shí)出循環(huán)。直到型循環(huán)先執(zhí)行A,再判斷,若P為真,反復(fù)執(zhí)行A,直到P為假出循環(huán)。3.4順序結(jié)構(gòu)程序設(shè)計(jì)
1.C語(yǔ)句
2.C程序語(yǔ)句分類(lèi):由若干語(yǔ)句組成,每個(gè)語(yǔ)句以分號(hào)結(jié)束。①控制語(yǔ)句②表達(dá)式語(yǔ)句③函數(shù)調(diào)用語(yǔ)句④空語(yǔ)句⑤復(fù)合語(yǔ)句9種控制語(yǔ)句:1.條件判斷語(yǔ)句if()…else… switch(){…}
2.循環(huán)控制語(yǔ)句for()… while()…do…while()3.轉(zhuǎn)移語(yǔ)句breakcontinuegoto
return例如:main(){inta,b;a=b=100;{
floatc=10.23;
printf("%f\n",c);}
printf("%d%d\n",a,b);}控制語(yǔ)句1.選擇分支控制語(yǔ)句if()…else… switch(){…}
2.循環(huán)控制語(yǔ)句for()… while()…do…while()3.其他控制語(yǔ)句break、continue、gotoreturn說(shuō)明表達(dá)式后面加一個(gè)分號(hào),構(gòu)成表達(dá)式語(yǔ)句x=3;y=y+5;x=a-b&&c||d;printf("x=%d,y=%d\n",x,y);sort(a,10);表達(dá)式語(yǔ)句
賦值語(yǔ)句函數(shù)調(diào)用語(yǔ)句注意:①分號(hào)是語(yǔ)句必不可少的一部分②單獨(dú)的一個(gè)分號(hào)“;”構(gòu)成一個(gè)空語(yǔ)句例如:;(空語(yǔ)句,是最簡(jiǎn)單的C語(yǔ)句)復(fù)合語(yǔ)句
用一對(duì)花括號(hào)“{}”括起來(lái)的若干條語(yǔ)句花括號(hào)中可以是說(shuō)明語(yǔ)句、表達(dá)式語(yǔ)句、控制語(yǔ)句,也可以是復(fù)合語(yǔ)句例如:⑴if(a>b){max=a;min=b;}
⑵for(n=1;n<10;n++)
{p=n+p;if(p>=100)
{
printf(“%d\n”,p);break;
}
}
復(fù)合語(yǔ)句中如果有說(shuō)明性語(yǔ)句,應(yīng)該寫(xiě)在可執(zhí)行語(yǔ)句的前面例如:
main(){inta,b;a=b=100;{floatc=10.23;
printf("%f\n",c);}
printf("%d%d\n",a,b);}要特別注意:花括號(hào)的配對(duì)花括號(hào)的位置總結(jié)結(jié)構(gòu)化程序設(shè)計(jì)過(guò)程輸入:將數(shù)據(jù)送入計(jì)算機(jī)輸出:將計(jì)算機(jī)處理的結(jié)果數(shù)據(jù)送出到輸出設(shè)備。
◆C語(yǔ)言中,數(shù)據(jù)輸入/輸出是由庫(kù)函數(shù)完成。
◆使用庫(kù)函數(shù)時(shí),用預(yù)編譯命令將有關(guān)“頭文件”包括到源文件中。
◆標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù):“stdio.h”文件
3.5數(shù)據(jù)的輸入輸出例一、字符數(shù)據(jù)的輸入輸出1.putchar
函數(shù)(字符輸出函數(shù))格式:putchar(c)
參數(shù):c為字符常量、變量或表達(dá)式
功能:把字符c輸出到顯示器上#include<stdio.h>main(){intc;chara;c=65;a='B';
putchar(c);putchar('\n');putchar(a);}AB格式:getchar()功能:從鍵盤(pán)讀入一字符,遇回車(chē)結(jié)束并回顯例
1#include<stdio.h>main(){intc;
printf("Enteracharacter:");c=getchar();
printf("%c--->hex%x\n",c,c);}Enteracharacter:AA--->hex412.getchar函數(shù)(字符輸入函數(shù))例
2例33.getch函數(shù)格式:getch()功能:從鍵盤(pán)讀入一字符,
不用回車(chē)結(jié)束,不回顯例:#include<stdio.h>main(){charc;c=getch();
putchar(c);}a
4.Gets函數(shù)(字符串輸入函數(shù))從鍵盤(pán)讀入一串字符gets(字符串變量名)以回車(chē)結(jié)束5.Puts函數(shù)(字符串輸出函數(shù))將字符串顯示在屏幕上并換行puts(字符串變量名)二、格式輸入與輸出輸出若干任意類(lèi)型的數(shù)據(jù)1、printf函數(shù)(格式輸出)格式:printf(“格式控制串”,輸出表)功能:按指定格式向顯示器輸出數(shù)據(jù)格式控制串:格式說(shuō)明:普通字符或轉(zhuǎn)義序列:%格式字符,用于指定輸出格式原樣輸出輸出表:要輸出的數(shù)據(jù)(可以沒(méi)有,多個(gè)時(shí)以“,”分隔)例詳細(xì)說(shuō)明見(jiàn)附表整型數(shù)據(jù)
%d輸入十進(jìn)制整型數(shù)%u輸入無(wú)符號(hào)的十進(jìn)制整型數(shù)%o輸入八進(jìn)制整型數(shù)%x輸入十六進(jìn)制整型數(shù)實(shí)型數(shù)據(jù)
%f輸入小數(shù)形式的單精度實(shí)型數(shù)%e輸入指數(shù)形式的單精度實(shí)型數(shù)字符型數(shù)據(jù)
%c輸入單個(gè)字符%s輸入一個(gè)字符串表1-printf函數(shù)格式說(shuō)明dx,Xoucse,Efg%%十六進(jìn)制無(wú)符號(hào)整數(shù)不帶符號(hào)十進(jìn)制整數(shù)十進(jìn)制整數(shù)指數(shù)形式浮點(diǎn)小數(shù)單一字符字符串八進(jìn)制無(wú)符號(hào)整數(shù)小數(shù)形式浮點(diǎn)小數(shù)e和f中較短一種百分號(hào)本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=-1;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff10165535AABC5.67789e+02567.789000567.789%表2-格式說(shuō)明符.n對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)對(duì)字符串,指定實(shí)際輸出位數(shù)修飾符功能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長(zhǎng)度<m,左補(bǔ)空格;否則按實(shí)際輸出輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊)-指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+)+輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填00在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0x#在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型l表3-附加格式說(shuō)明符
若實(shí)際位數(shù)多于定義的寬度,按實(shí)際位數(shù)輸出;少于則補(bǔ)以空格;若不指定輸出寬度,按實(shí)際位數(shù)輸出。例2、scanf函數(shù)(格式輸入)格式:
scanf(“格式控制串”,地址表)功能:按指定格式從鍵盤(pán)讀入數(shù)據(jù),存入地址表指
定的存儲(chǔ)單元中,按回車(chē)鍵結(jié)束說(shuō)明:標(biāo)準(zhǔn)庫(kù)函數(shù),在頭文件“stdio.h”中定義格式控制串:和格式輸出函數(shù)的含義相同地址表:變量的地址,用取地址運(yùn)算符&例
inta;
scanf(“%d”,&a);10a=10例scanf("%d:%d:%d",&h,&m,&s);
輸入12:30:45則12h,30m,45s例scanf("%d,%d",&a,&b)
輸入3,4
則3a,4b例scanf("%d%d%d",&a,&b,&c);
輸入122436輸入分隔符的指定◆格式串中兩個(gè)格式符間隔字符◆格式串兩個(gè)格式符無(wú)間隔字符,以空格、TAB或回車(chē)鍵作為分隔例#include<stdio.h>#include<math.h>main(){floata,b,c,s,area;
printf("inputa,b,c:");
scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%7.2f\n",area);}綜合例題:例1輸入三角形邊長(zhǎng),求面積。公式:s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));
inputa,b,c:3,4,5area=6.00例2從鍵盤(pán)上輸入一個(gè)字符,求出
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程臨時(shí)工合同協(xié)議書(shū)
- 地板打蠟合同協(xié)議書(shū)樣本
- 買(mǎi)賣(mài)居間協(xié)議合同
- 業(yè)務(wù)合同協(xié)議照片
- 欠款委托協(xié)議合同
- 協(xié)議合同解除的時(shí)效性
- 協(xié)議書(shū)是勞動(dòng)合同
- 協(xié)議離婚合同注意
- 拉丁舞學(xué)員合同協(xié)議書(shū)
- 承攬合同轉(zhuǎn)包協(xié)議
- 2025年餐廳兼職勞動(dòng)合同
- 2025年北京市東城區(qū)高三一模數(shù)學(xué)試卷(含答案)
- 學(xué)生欺凌防治工作“一崗雙責(zé)”制度
- 2025-2030中國(guó)電子焊膏行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 炎德·英才大聯(lián)考湖南師大附中2025屆高三月考試卷(七)物理試卷(含答案)
- 剪映剪輯教學(xué)課件
- Radware AppDirector負(fù)載均衡器指導(dǎo)書(shū)2.11v1.0
- 1健康調(diào)查問(wèn)卷一
- 2024年江蘇南京醫(yī)科大學(xué)招聘考試真題
- 2025年吉林司法警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)匯編
- 生物科技行業(yè)研究員簡(jiǎn)歷
評(píng)論
0/150
提交評(píng)論