




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
會計學(xué)1C語言程序設(shè)計循環(huán)例子2023年1月17日教學(xué)目標(biāo)在三種基本結(jié)構(gòu)的基礎(chǔ)上,結(jié)合本章介紹流程控制的其他幾個語句:switch語句、break語句和continue語句及循環(huán)的嵌套,實現(xiàn)復(fù)雜的算法,設(shè)計出結(jié)構(gòu)清晰、功能強大的程序,對C語言程序開發(fā)設(shè)計有比較深刻的認(rèn)識。第1頁/共27頁2023年1月17日7.1多分支選擇結(jié)構(gòu)程序設(shè)計1、語句形式:
switch(表達式){ case常量1:語句1;
case常量2:語句2;
case常量3:語句3;.......
case常量n:語句n;default:語句n+1;}根據(jù)表達式的不同值,選擇不同的程序分支,又稱開關(guān)語句。數(shù)值型或字符型常量表達式的值必須互不相同,否則執(zhí)行時將出現(xiàn)矛盾,即同一個開關(guān)值,將對應(yīng)多種執(zhí)行方案。千萬不能接(;)號第2頁/共27頁2023年1月17日2、語句執(zhí)行流程:指語句的最后一條是否為break簡單語句或復(fù)合語句breakbreak有無break有無有計算表達式常量1常量2常量n=語句1…===語句2語句n其它=語句n+1無值case語句出現(xiàn)的次序并不影響執(zhí)行結(jié)果。第3頁/共27頁2023年1月17日voidmain(){intn;printf("請輸入成績:");
scanf("%d",&n);switch((int)(n/10)){case10:printf("成績%d的等級為優(yōu)秀\n",n);case9:printf("成績%d的等級為優(yōu)秀\n",n);case8:printf("成績%d的等級為良好\n",n);case7:printf("成績%d的等級為中等\n",n);case6:printf("成績%d的等級為及格\n",n);default:printf("成績%d的等級為不及格\n",n);}}
【例7.1】編寫程序,對學(xué)生成績進行等級評定。將成績分為幾個等級:0~59分為不及格,60~69分為及格,70~79分為中等,80~89分為良好,90~100分為優(yōu)秀。要求輸入一個成績,輸出其對應(yīng)的等級。
請輸入成績:78↙成績78的等級為中等成績78的等級為及格成績78的等級為不及格
出錯啦?。康?頁/共27頁2023年1月17日在“switch”語句中,“case常量表達式”只相當(dāng)于一個語句標(biāo)號,表達式的值和某標(biāo)號相等則轉(zhuǎn)向該標(biāo)號執(zhí)行,但不能在執(zhí)行完該標(biāo)號的語句后自動跳出整個switch語句,因此會繼續(xù)執(zhí)行所有后面語句的情況。為此,C語言提供了一種break語句,其功能是可以跳出它所在的switch語句。第5頁/共27頁2023年1月17日將上面的例7.1修改如下:voidmain(){intn;printf("請輸入成績:");
scanf("%d",&n);switch((int)(n/10)){case10:printf("成績%d的等級為優(yōu)秀\n",n);break;case9:printf("成績%d的等級為優(yōu)秀\n",n);break;case8:printf("成績%d的等級為良好\n",n);break;case7:printf("成績%d的等級為中等\n",n);break;case6:printf("成績%d的等級為及格\n",n);break;default:printf("成績%d的等級為不及格\n",n);}}請輸入成績:78↙成績78的等級為中等第6頁/共27頁2023年1月17日使用switch語句時還應(yīng)注意以下幾點
switch后面圓括號內(nèi)表達式的值和case語句中常量表達式的值,都必須是整型的、枚舉型的或字符型的,不允許是浮點型的。在case后的各常量表達式的值不能相同。每個case子句既可以是一條語句,也可以是多條語句。當(dāng)是多條語句時,不需要用花括號括起來。各個case子句和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。default子句可以省略不用。多個case的后面可以共用一組執(zhí)行語句。如例7.1中等級為優(yōu)秀的判斷程序可改為:第7頁/共27頁2023年1月17日switch((int)(n/10)){case10:case9:printf("成績%d的等級為優(yōu)秀\n");break;
…}第8頁/共27頁2023年1月17日7.2嵌套循環(huán)結(jié)構(gòu)程序設(shè)計
在一個循環(huán)內(nèi)又完整地包含另一個循環(huán),稱為循環(huán)的嵌套。for語句可以與while語句、do-while語句相互嵌套,構(gòu)成多重循環(huán),例如:
第9頁/共27頁2023年1月17日(1)
(2)for() do{{…
…while()for(){…}{…}
…
…} }while();(3)
(4)while()for(){ {
…
…for()for(){…}{
…
…}}
…
}第10頁/共27頁2023年1月17日for(i=1;i<=9;i++){
打印第i行;}【例7.2】打印乘法小九九表。
使用一個循環(huán)9次的循環(huán)語句,每次循環(huán)打印一行:打印第i行,循環(huán)i次,每次循環(huán)打印一個表達式:for(j=1;j<=i;j++){
打印第j個表達式;}打印完一行后換行第11頁/共27頁2023年1月17日#include<stdio.h>voidmain(){ inti,j; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%d*%d=%-3d",i,j,i*j); printf("\n"); }}程序運行情況如下:1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=367*1=77*2=147*3=217*4=287*5=357*6=427*7=498*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=649*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81第12頁/共27頁2023年1月17日【例7.3】百雞問題。
#include"stdio.h"voidmain(){intx,y,z;
for(x=1;x<=20;x++)/*用嵌套的for循環(huán)依次設(shè)公雞有1,2,…,20只*/
for(y=1;y<=33;y++)/*設(shè)母雞有1,2,…,33只*/
for(z=3;z<100;z+=3)/*設(shè)小雞有3,6,…,99只*/
if(x*5+y*3+z/3==100&&x+y+z==100)printf(“公雞%d只、母雞%d只、小雞%d只\n",x,y,z);}程序運行結(jié)果如下:公雞4只、母雞18只、小雞78只公雞8只、母雞11只、小雞81只公雞12只、母雞4只、小雞84只
第13頁/共27頁2023年1月17日7.3break語句和continue語句在循環(huán)中的應(yīng)用
break語句只能用在switch語句或循環(huán)語句中,其作用是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。由于break語句的轉(zhuǎn)移方向是明確的,所以不需要語句標(biāo)號與之配合。break語句的一般形式為break;注意:break語句對if-else的條件語句不起作用。在多層循環(huán)中,一個break語句只向外跳一層。使用break語句可以使循環(huán)語句有多個出口
第14頁/共27頁2023年1月17日continue語句continue語句只能用在循環(huán)體中,其一般格式是:continue;其語義是:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應(yīng)注意的是,本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。continue語句只用在for、while、do-while等循環(huán)體中,常與if條件語句一起使用,用來加速循環(huán)。1)while(表達式1){……if(表達式2)break;……}2)
while(表達式1){……if(表達式2)continue;……}第15頁/共27頁2023年1月17日第16頁/共27頁2023年1月17日【例7.4】輸出100以內(nèi)能被7整除的數(shù)。
#include"stdio.h"voidmain(){intn;for(n=1;n<=100;n++){if(n%7!=0)continue;printf("%d",n);}printf("\n");}程序運行情況如下:714212835424956637077849198第17頁/共27頁2023年1月17日【例7.5】判斷m是否素數(shù)#include<math.h>#include<stdio.h>intmain(){ intm,i,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0)break; if(i>=k+1) printf("%disaprimenumber\n",m); else printf("%disnotaprimenumber\n",m); return(0);}第18頁/共27頁2023年1月17日7.4程序舉例
【例7.6】模擬自動飲料機
#include"stdio.h"voidmain(){intbutton;printf("=====自動飲料機=====\n");printf("1.可口可樂\n");printf("2.雪碧\n");printf("3.百事可樂\n");printf("4.芬達\n");printf("5.非??蓸穃n");printf("請按1~5鍵選擇飲料:\n");scanf("%d",&button);第19頁/共27頁2023年1月17日switch(button){case1:printf("\n你獲得一聽可口可樂\n");break;case2:printf("\n你獲得一聽雪碧\n");break;case3:printf("\n你獲得一聽百事可樂\n");break;case4:printf("\n你獲得一聽芬達\n");break;case5:printf("\n你獲得一聽非常可樂\n");break;default:printf("\n非法操作!\n");}}程序運行情況如下:=====自動飲料機=====1.可口可樂2.雪碧3.百事可樂4.芬達5.非常可樂請按1~5鍵選擇飲料:3↙你獲得一聽百事可樂第20頁/共27頁2023年1月17日【例7.10】數(shù)組元素排序——冒泡排序(以升序為例)
排序過程:比較第一個數(shù)與第二個數(shù),若為逆序a[0]>a[1],則交換;然后比較第二個數(shù)與第三個數(shù);依次類推,直至第n-1個數(shù)和第n個數(shù)比較為止——第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個元素位置上對前n-1個數(shù)進行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個元素位置重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束第21頁/共27頁2023年1月17日例3849657613273097第一趟38496513273076第二趟384913273065第三趟3813273049第四趟13273038第五趟132730第六趟4938659776132730
初始關(guān)鍵字n=8384976971397279730971376767627301365276530651313494930492738273830381327第七趟第22頁/共27頁2023年1月17日輸入n個數(shù)給a[0]到a[n-1]for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++)a[j]>a[j+1]真假a[j]a[j+1]輸出a[0]到a[n-1]#include<stdio.h>main(){inta[10],i,j,t;printf("Input10numbers:\n");
for(i=0;i<10;i++)scanf("%d",&a[i]);printf("\n");
for(i=0;i<9;i++)for(j=0;j<9-i;j++)
if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}printf("Thesortednumbers:\n");
for(i=0;i<10;i++) printf("%d",a[i]
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 集體勞動合同范本2025年度(文化產(chǎn)業(yè)員工)
- 農(nóng)村公路養(yǎng)護管理合同(含交通安全設(shè)施維護)
- 婦產(chǎn)科醫(yī)師培訓(xùn)計劃及內(nèi)容
- Unit 4 Drawing in the park Period 3 詞匯與語法過關(guān) 同步練習(xí)(含答案含聽力原文無音頻)
- 家長會學(xué)生主持發(fā)言稿
- 上海市業(yè)主總包分包合同
- 2024年公司勞動合同
- 2025年江西貨運從業(yè)資格證考試模擬考試題庫答案大全
- IT支持與服務(wù)記錄表格
- 《語文古典詩詞鑒賞與創(chuàng)作指導(dǎo)》
- 《煙花爆竹基礎(chǔ)知識》課件
- 井下刷漆-安全技術(shù)措施
- 連乘兩步計算的實際問題
- 拼多多民事起訴狀模板
- 中國畫的特點及分類課件
- 廠房租賃合同糾紛起訴狀
- 重大危險源監(jiān)理實施細(xì)則(二篇)
- 國際稅法教學(xué)課件國際稅法
- 自身免疫性多內(nèi)分泌腺體綜合征
- 2023版?zhèn)€人征信模板簡版(可編輯-帶水?。?/a>
- 石泉縣安溝鈦磁鐵礦礦山地質(zhì)環(huán)境保護與土地復(fù)墾方案
評論
0/150
提交評論