版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、當(dāng)前文文件修改密碼:8362839HYPERLINK N:整理后. t _parent更多數(shù)據(jù)請(qǐng)?jiān)L問(wèn)精品數(shù)據(jù)網(wǎng)HYPERLINK E:還未拷貝企業(yè)治理流程治理(http:.)(.)第三章 C程序的流程設(shè)計(jì)一、教學(xué)的目的與要求掌握順序、選擇、循環(huán)三類(lèi)程序流程操縱語(yǔ)句,以及轉(zhuǎn)移語(yǔ)句,能夠正確使用它們編程。二、重點(diǎn)與難點(diǎn):if語(yǔ)句中的條件表達(dá)式,if語(yǔ)句中if-else的匹配關(guān)系,if語(yǔ)句的嵌套;switch語(yǔ)句的操縱流程,switch語(yǔ)句的嵌套;三種循環(huán)語(yǔ)句的格式和功能,循環(huán)嵌套的使用;轉(zhuǎn)移語(yǔ)句的使用。三、教學(xué)內(nèi)容第一節(jié) 算法1、算法的概念為解決某一個(gè)問(wèn)題而采取的方法和步驟,就稱(chēng)為算法。2、算法的
2、性質(zhì) = 1 * GB3 有窮性:一個(gè)算法應(yīng)包含有限的操作步驟 = 2 * GB3 一個(gè)初始:此動(dòng)作序列只有一個(gè)初始動(dòng)作 = 3 * GB3 確定性:算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定性的,僅有一個(gè)后繼動(dòng)作。 = 4 * GB3 有一個(gè)或多個(gè)輸出:序列終止表示問(wèn)題得到解答或問(wèn)題沒(méi)有解答,沒(méi)有輸出的算法是沒(méi)有意義的。第二節(jié) 選擇型程序設(shè)計(jì)1、if 語(yǔ)句的形式 = 1 * GB3 if(條件表達(dá)式) 語(yǔ)句 = 2 * GB3 if(條件表達(dá)式) 語(yǔ)句1 else 語(yǔ)句 2 注意: = 1 * GB3 if語(yǔ)句中的條件表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式,但也能夠是任意的數(shù)值類(lèi)型(包括整型、實(shí)型、字符型、
3、指針類(lèi)型),例如下列語(yǔ)句也是合法的。 if(a) printf(“%d” ,a); = 2 * GB3 在if語(yǔ)句中,分號(hào)是語(yǔ)句的結(jié)束標(biāo)志。 = 3 * GB3 在if和else后面能夠只含一個(gè)內(nèi)嵌的操作語(yǔ)句,也能夠有多個(gè)操作語(yǔ)句,現(xiàn)在用花括號(hào)將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。例1:以下不正確的if語(yǔ)句形式是( )。A)if(xy&x!=y);B)if(x=y) x+=y;C)if(x!=y) scanf(“%d”,&x) else scanf(“%d”,&y);D)if(xy)z=x;x=y;y=z; 答案:x,y,z的值分不是:20 30 30 詳解:在此語(yǔ)句中,條件xy為假,因此只執(zhí)行x
4、=y;y=z;兩條語(yǔ)句。例3、以下不正確的語(yǔ)句是( )A)if(xy);B)if(x=y)&(x!=0) x+=y;C)if(x!=y) scanf(“%d”,&x);D)if(xy)x+;y+;答案:D詳解:分號(hào)是語(yǔ)句結(jié)束的標(biāo)志,y+的末尾無(wú)分號(hào),因此y+不是合法的語(yǔ)句。2、if 的嵌套 if(條件1) if(條件2) 語(yǔ)句1 else 語(yǔ)句2 else if(條件3) 語(yǔ)句3 else 語(yǔ)句4例4:以下程序的輸出結(jié)果是( )main( )int a=100,x=10,y=20,ok1=5,ok2=0;if(xy)if(y!=10)if (!ok1)a=1;else if(ok2) a=10
5、; printf(“%dn”,a); 答案:100詳解:把10、20、5、0分不給變數(shù)x、y、ok1、ok2賦值,執(zhí)行條件語(yǔ)句后a值沒(méi)有改變,因此a值仍是原值100。3、switch結(jié)構(gòu)switch語(yǔ)句是多分支選擇語(yǔ)句,其形式如下:switch(表達(dá)式)case 常量表達(dá)式1:語(yǔ)句1case 常量表達(dá)式2:語(yǔ)句2default:語(yǔ)句n+1注意:1、switch后面括號(hào)內(nèi)的“表達(dá)式”,能夠是整型表達(dá)式或字符型表達(dá)式,也能夠枚舉型數(shù)據(jù)。2、當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語(yǔ)句,若所有的case中的常量表達(dá)式的值都沒(méi)有與表達(dá)式的值匹配的,就執(zhí)行defau
6、lt后面的語(yǔ)句。3、每一個(gè)case的常量表達(dá)式的值必須互不相同,否則就會(huì)出現(xiàn)互相矛盾的現(xiàn)象。4、執(zhí)行完一個(gè)case后面的語(yǔ)句后,流程操縱轉(zhuǎn)移到下一個(gè)case接著執(zhí)行,直到遇到break語(yǔ)句或執(zhí)行完為止。5、default能夠放在case語(yǔ)句的后面,也能夠放在case語(yǔ)句的前面。例5:運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi),距離越遠(yuǎn),每公里運(yùn)費(fèi)越低。設(shè)每公里每噸物資的差不多運(yùn)費(fèi)為p,物資重為w,距離為s,折扣為d,則總運(yùn)費(fèi)f計(jì)算公式為f=p*w*s(1-d),編寫(xiě)程序。公里數(shù)s與折扣率d的標(biāo)準(zhǔn)如下:(此程序可用ifelse來(lái)完成,也能夠用switch來(lái)完成)。s250km d=0250s500 d=0.0550
7、0s1000 d=0.0751000s2000 d=0.12000s3000 d=0.153000s d=0.2 main()int s;float p,w,d,f;printf(“請(qǐng)輸入每公里每噸物資的差不多運(yùn)費(fèi)”);scanf(“%f”,&p);printf(“請(qǐng)輸入物資重”);scanf(“%f”,&w);printf(“請(qǐng)輸入公里數(shù)”);scanf(“%f”,&s);switch(int)(s/250) case 0: d=0; break; case 1: d=0.05; break; case 2: case 3: d=0.075; break; case 4: case 5:ca
8、se 6: case 7: d=0.1; break; case 8: case 9:case 10: case 11: d=0.15; break; default: d=0.2; f=p*w*s(1-d); printf(“差不多運(yùn)費(fèi)是:%f”,f);詳解:1、多個(gè)case可共享一組執(zhí)行語(yǔ)句,必須寫(xiě)成如下的形式:case 4: case 5:case 6: case 7: d=0.1; break;case后面只能有一個(gè)常量,把上式改寫(xiě)成case 4,5,6,7: d=0.1; break;的形式是錯(cuò)誤的。2、switch后面括號(hào)內(nèi)的“表達(dá)式”必須是整型表達(dá)式或字符型表達(dá)式,也能夠是枚舉型
9、數(shù)據(jù),關(guān)于swith來(lái)講,關(guān)鍵是把原始數(shù)據(jù)轉(zhuǎn)換為易表達(dá)的形式。例6:請(qǐng)讀以程序?qū)懗龀绦虻妮敵鼋Y(jié)果。#includemain( ) int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+;break;case 1: b+;break; case 2: a+;b+;break; printf(“a=%d,b=%d”,a,b);答案:a=2,b=1詳解:此程序是switch的嵌套結(jié)構(gòu),在此程序中break跳出內(nèi)層switch結(jié)構(gòu),接著執(zhí)行外層switch的case 2后的語(yǔ)句。例7:寫(xiě)出下面程序的運(yùn)行結(jié)果是( )main()int i;
10、for(i=1;i=5;i+) switch(i%5) case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“n”); case 2: printf(“&”); 答案:#& & &*詳解:default可放在case語(yǔ)句的前面,也能夠放在case語(yǔ)句的后面,當(dāng)i%5不等于0,1,2時(shí),將執(zhí)行default后的語(yǔ)句printf(“n”);執(zhí)行完成后沒(méi)有break,將接著執(zhí)行case 2后的語(yǔ)句printf(“&”);第三節(jié) 循環(huán)型程序設(shè)計(jì)1、while語(yǔ)句while語(yǔ)句用來(lái)實(shí)現(xiàn)”當(dāng)型”循環(huán)結(jié)構(gòu),其一般形式
11、如下:while(條件表達(dá)式) 循環(huán)體語(yǔ)句例8:設(shè)有程序段: int k=10; while(k=0) k=k-1; 循環(huán)體執(zhí)行( )次。 答案:0答案解析:在此程序的while結(jié)構(gòu)中,條件表達(dá)式k=0的結(jié)果永久為0即為假,因此循環(huán)執(zhí)行的次數(shù)為0。例9:下面程序段的運(yùn)行結(jié)果是( )x=y=0; while(x3) break; 循環(huán)執(zhí)行( )次答案:4答案解析:while結(jié)構(gòu)中的條件表達(dá)式printf(“*”)的值為輸出數(shù)據(jù)的個(gè)數(shù),在此例中,printf(“*”)的結(jié)果為1,即為真。2、do-while語(yǔ)句do-while語(yǔ)句的特點(diǎn)是先執(zhí)行循環(huán)體,然后推斷循環(huán)條件是否成立,其一般形式為:do循
12、環(huán)體語(yǔ)句while(條件表達(dá)式); 例11、若有如下語(yǔ)句 int x=3; do printf(“%dn”,x-=2); while(-x);則上面程序段輸出結(jié)果是( )。答案:1 例12、以下程序段循環(huán)執(zhí)行幾次。x=-1;do x=x*x; while(!x);答案:1例13、下面程序的運(yùn)行結(jié)果是( )main( )int y=10;doy-; while(-y);printf(“%dn”,y-);答案:0 3、for語(yǔ)句C語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅能夠用于循環(huán)次數(shù)差不多確定的情況,而且能夠用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全能夠代替while語(yǔ)句,其一般形式為:f
13、or(表達(dá)式1;表達(dá)式2;表達(dá)式2) 語(yǔ)句講明: = 1 * GB3 for語(yǔ)句一般形式中的“表達(dá)式1”能夠省略,現(xiàn)在應(yīng)for語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。 = 2 * GB3 假如表達(dá)式2省略,即不推斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。 = 3 * GB3 表達(dá)式3也能夠省略,但現(xiàn)在程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)正常結(jié)束。 = 4 * GB3 能夠省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件,在這種情況下,完全等同于while語(yǔ)句。 = 5 * GB3 3個(gè)表達(dá)式都可省略,如:for( ; ; ) 語(yǔ)句,相當(dāng)于while(1) 語(yǔ)句,即不設(shè)初值,不推斷
14、條件(認(rèn)為表達(dá)式2為真值),循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。 = 6 * GB3 表達(dá)式1能夠是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也能夠是與循環(huán)變量無(wú)關(guān)的其它表達(dá)式。for(sum=0;i=100;i+) sum=sum+i; = 7 * GB3 表達(dá)式一般是關(guān)系表達(dá)式(如i=100)或邏輯表達(dá)式(如ab & x+y;x=i+) i=x;B)for(;x+=i)C)while(1)x+;D)for(i=10;i-) sum+=i;答案:A例16、執(zhí)行語(yǔ)句for( i=1 ; i+4 ; ); 后變數(shù)i的值是( )答案:4例17、下面程序段的功能是計(jì)算1000!的末尾含有多少個(gè)零。請(qǐng)?zhí)羁?。for
15、(k=0,i=5;i=1000;i+=5)m=i;while( )k+;m=m/5;答案:m%5!=04、break與continue在break語(yǔ)句能夠使流程跳出switch結(jié)構(gòu),接著執(zhí)行switch語(yǔ)句下面的一個(gè)語(yǔ)句。實(shí)際上,break語(yǔ)句還能夠用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提高結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句。break語(yǔ)句的一般形式為:break;continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。continue語(yǔ)句的一般形式為:continue;例18、下列程序的運(yùn)行結(jié)果是( )。 main( ) int i,j,x=0; for(i=0;i2;i+) x+; for(j=
16、0;j=3;j+) if(j%2) continue; x+; x+; printf(“x=%dn”,x);答案:例19、下面程序的運(yùn)行結(jié)果是( )main( ) int k=0;char c=A; do switch(c+) case A:k+;break; case B:k-; case C:k+=2;break; case D:k=k%2;continue; case E:k=k*10;break; default:k=k/3; k+;while(c=1e-6;i+) t=(-1)*t*i; s=s+1/t;printf(“%lf”,s);例24、有一分?jǐn)?shù)序列:2/1,3/2,5/3,8
17、/5,13/6,21/13,.求出那個(gè)數(shù)列的前20項(xiàng)之和main() int s=0, f1=1,f2=2; for(I=1;I=20;I+) s=s+f2/f1; f2=f1+f2; f1=f2-f1; printf(“%d”,s);例25、打印九九表main( )int i,j; for(i=1;i=9;i+) for(j=1;j=9;j+) printf(“%2d*%2d=%2d”,i,j,i*j); printf(“n”);例26、打印出下列圖形 main( )int i,j;for(i=1;i=5;i+) for(j=1;j=5+fabs(i-3);j+) printf(“ ”);f
18、or(j=1;j=5-2*fabs(i-3);j+) printf(“”);printf(“n”); 例27、打印出下列圖形 例28、兔子生殖問(wèn)題main( ) int i,f1,f2,f3; for(i=3;i=12;i+) f3=f1+f2;f1=f2;f2=f3;printf(“%d”,f3);例29、求最大公約數(shù)、最小公倍數(shù)。main( )int r,u,v,m,n;scanf(“%d,%d”,&m,&n);m=u;n=v;if(uv) r=u;u=v;v=r;while(u!=0)r=u%v;u=v;v=r;printf(“最大公約數(shù)是:%d,最小公倍數(shù)是”,v,m*n/v);例30
19、、sn=a+aa+aaa+aaa,從鍵盤(pán)輸入a及n后,求sn方法一:main()int n,a;long s;scnaf(“%d%d”,&n,&a);for(i=1;i=n;i+) s=s*10+i*a; printf(“%ld”,s); 方法二:main()int n,a;long s,t=0;scnaf(“%d%d”,&n,&a);for(i=1;i=n;i+) t=t*10+as=s+t; printf(“%ld”,s); 例31、給出一個(gè)不多于5位的正整數(shù),要求求出它是幾位數(shù)分不打印出每一位數(shù)逆序打印此數(shù)據(jù)。main( )long a; int i=0;s=0;printf(“它的每一
20、位數(shù):”);While(a!=0) i=i+1; x=a%10; a=a/10; s=s*10+x; printf(“%d ”,x);printf(“n”);printf(“它是%d位數(shù)n”,i);printf(“它的逆序是%dn”,s); 例32、輸出1100之間每位數(shù)的乘積大于每位數(shù)的和的數(shù) main() int n,k=1,s=0,m; for(n=1;ns) printf(“%d”,n);例33、猴子吃桃問(wèn)題,猴子第一天摘下若干桃子,當(dāng)即吃了一半,還只是癮又多吃了一個(gè),第二天又將剩下的桃子吃掉一半,又多吃了一個(gè),以后每天都吃前一天剩下的半多一個(gè),到第10天,再吃桃時(shí)只剩下一個(gè)桃子,求第
21、一天共摘下多少了桃。 main() int i,s=1; for(i=9;i=1;i-) s=2*s+1;printf(“第一天共摘下%d個(gè)桃子”,s);例34、預(yù)備客票:某鐵路在線共有10個(gè)車(chē)站,問(wèn)需要預(yù)備幾種車(chē)票。main()int i,j,s=0; for(I=1;I=9;I+) for(j=I+1;j=10;j+) s=s+1; printf(“需要預(yù)備%d”,2*s); 例35、有1020個(gè)西瓜,第一天賣(mài)一半多兩個(gè),以后每天賣(mài)剩下的一半多兩個(gè),問(wèn)幾天以后能賣(mài)完。 main( ) int day=0,s=1020; while(s=0) s=s/2-2; day+; printf(“%d”,day);例36、從三個(gè)紅球、五個(gè)白球、六個(gè)黑球中任意取出八個(gè)球,且其中必須有白球,輸出所有可能的方案。main()int red,white,black; for(white=1;white=5;white+) for(red=0;red=3;red+) for(black=0;black=1e-6) x3=(x1+x2)/2; if(f(x3)*f(x2)0) x2=x3;else x1=x3;例38、牛頓切線法求
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 班主任工作計(jì)劃引領(lǐng)學(xué)生變成好人好事
- 私密安全的高級(jí)公寓三篇
- 新市場(chǎng)開(kāi)發(fā)與客戶拓展培訓(xùn)
- 學(xué)校指導(dǎo)學(xué)生職業(yè)素質(zhì)訓(xùn)練工作量計(jì)算辦法
- 水務(wù)科技創(chuàng)新成果的轉(zhuǎn)化計(jì)劃
- 社團(tuán)成員培訓(xùn)與發(fā)展策略計(jì)劃
- 【滬科版】八年級(jí)數(shù)學(xué)上冊(cè):第11章-達(dá)標(biāo)檢測(cè)卷(含答案)
- 安徽省八年級(jí)(上)期中語(yǔ)文試卷-(含答案)
- 大學(xué)代培協(xié)議書(shū)范文范本
- 租車(chē)誠(chéng)信合作協(xié)議書(shū)范文范本
- 癌痛患者護(hù)理查房
- 4.2+在和諧共處中實(shí)現(xiàn)人生發(fā)展《哲學(xué)與人生》(高教版2023基礎(chǔ)模塊)
- 小小糖果師:制作糖果
- 《宋詞選》名家詞作解讀與鑒賞
- 病案科應(yīng)用PDCA提高病歷歸檔合格率PDCA質(zhì)量持續(xù)改進(jìn)案例
- 冷彎?rùn)C(jī)行業(yè)市場(chǎng)研究報(bào)告
- GB/Z 43280-2023醫(yī)學(xué)實(shí)驗(yàn)室測(cè)量不確定度評(píng)定指南
- 牛津英語(yǔ)四年級(jí)上冊(cè)4A-M2-Unit-3-The-lion-and-the-mouse優(yōu)秀信息化教案附反思
- 作文格子稿紙800字-A4打印版
- 個(gè)人住房貸款提前還款月供及節(jié)省利息EXCEL計(jì)算
- 醫(yī)患關(guān)系與醫(yī)患溝通課件
評(píng)論
0/150
提交評(píng)論