任務(wù)5-2、強(qiáng)制中斷循環(huán)_第1頁(yè)
任務(wù)5-2、強(qiáng)制中斷循環(huán)_第2頁(yè)
任務(wù)5-2、強(qiáng)制中斷循環(huán)_第3頁(yè)
任務(wù)5-2、強(qiáng)制中斷循環(huán)_第4頁(yè)
任務(wù)5-2、強(qiáng)制中斷循環(huán)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語(yǔ)言程序設(shè)計(jì)與項(xiàng)目實(shí)踐清華大學(xué)出版社學(xué)生成績(jī)的統(tǒng)計(jì)分析———循環(huán)程序設(shè)計(jì)項(xiàng)目5回顧與作業(yè)點(diǎn)評(píng)for語(yǔ)法格式do…while語(yǔ)法格式while…語(yǔ)法格式預(yù)習(xí)檢查如何終止循環(huán)?continue語(yǔ)句和break語(yǔ)句格式?目標(biāo)掌握continue語(yǔ)句掌握break語(yǔ)句項(xiàng)目任務(wù)任務(wù)5-2、強(qiáng)制中斷循環(huán)1、如何強(qiáng)制結(jié)束循環(huán)?2、循環(huán)終止條件如何設(shè)定?控制轉(zhuǎn)移語(yǔ)句對(duì)于工程控制問(wèn)題,往往無(wú)法確定循環(huán)次數(shù)或循環(huán)終止條件,可根據(jù)程序運(yùn)行過(guò)程中發(fā)生的某種條件中斷程序的運(yùn)行,即所謂的強(qiáng)制中斷;同樣的對(duì)于某些控制問(wèn)題,可能希望提前結(jié)束本次循環(huán)而開(kāi)始新一次的循環(huán)控制。要實(shí)現(xiàn)這種控制,可以采用C語(yǔ)言的轉(zhuǎn)移控制語(yǔ)句break、continue和goto,以控制程序流程的走向。break語(yǔ)句2-1break語(yǔ)句可以改變程序的控制流break語(yǔ)句用于do-while、while、for循環(huán)中時(shí),可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語(yǔ)句break語(yǔ)句通常在循環(huán)中與條件語(yǔ)句一起使用。若條件值為真,將跳出循環(huán),控制流轉(zhuǎn)向循環(huán)后面的語(yǔ)句如果已執(zhí)行break語(yǔ)句,就不會(huì)執(zhí)行循環(huán)體中位于break語(yǔ)句后的語(yǔ)句在多層循環(huán)中,一個(gè)break語(yǔ)句只向外跳一層一般形式為:if(表達(dá)式)break;break語(yǔ)句2-2跳出for循環(huán)for(;;){c=getchar();if(c=='E'||c=='e')

break;}

跳出while循環(huán)while(1){

c=getchar();if(c=='E'||c=='e')

break;}

跳出do-while循環(huán)do{

c=getchar();if(c=='E'||c=='e')

break;}while(1);案例:統(tǒng)計(jì)從鍵盤(pán)輸入的若干個(gè)字符中有效字符的個(gè)數(shù),以換行符作為輸入結(jié)束。有效字符是指第一個(gè)空格符前面的字符,若輸入字符中沒(méi)有空格符,則有效字符為除了換行符之外的所有字符。#include<stdio.h>voidmain(){ intcount=0,ch; printf("\n請(qǐng)輸入一行字符:"); while((ch=getchar())!='\n') { if(ch=='')

break; count++; } printf("\n共有%d個(gè)有效字符。\n",count);}break語(yǔ)句案例內(nèi)存chcountH0_請(qǐng)輸入一行字符:Helloworld共有5個(gè)有效字符1循環(huán)執(zhí)行5次5break案例2-1【案例5-9】求300以內(nèi)能被17整除的最大的3個(gè)正整數(shù)。分析:如果m被n整除,則m%n=0,所以,求300以內(nèi)內(nèi)能被17整除的最大的3個(gè)正整數(shù),取x的值從300開(kāi)始,如x%17=0,表示x被17整除,只找三個(gè)這樣的數(shù),用一個(gè)計(jì)數(shù)器count計(jì)數(shù)。break案例2-2voidmain(){intx;intcount=0;for(x=300;x>=17;x--){if(x%17==0){count++;if(count>3)break;

printf("x=%d\n",x);

}}}continue語(yǔ)句2-1continue語(yǔ)句只能用在循環(huán)里continue語(yǔ)句的作用是跳過(guò)循環(huán)體中剩余的語(yǔ)句而執(zhí)行下一次循環(huán)對(duì)于while和do-while循環(huán),continue語(yǔ)句執(zhí)行之后的動(dòng)作是條件判斷;對(duì)于for循環(huán),隨后的動(dòng)作是變量更新

一般形式為:if(表達(dá)式)continue;continue語(yǔ)句2-2while(…){

…………continue;

…………}while(…){

…………

break;

…………}跳出整個(gè)循環(huán)繼續(xù)下一次循環(huán)案例:求整數(shù)1~100中個(gè)位不為3的所有數(shù)的累加值#include<stdio.h>voidmain(){ inti,sum=0; for(i=1;i<=100;i++) { if(i%10==3)

continue; sum+=i; } printf("sum=%d\n",sum);}contine案例內(nèi)存isumnull0131循環(huán)執(zhí)行到i=1378輸出:sum=45701循環(huán)執(zhí)行到i=1011014570continue語(yǔ)句案例2-1【案例5-10】求300以內(nèi)能被17整除的所有正整數(shù)。分析:將從1到300的所有數(shù)x用來(lái)判斷是否被17整除。continue語(yǔ)句案例2-2voidmain(){

intx;for(x=1;x<=200;x++){

if(x%17!=0)continue;printf(“%d”,x);}}goto語(yǔ)句2-1goto語(yǔ)句是一條無(wú)條件轉(zhuǎn)移語(yǔ)句,goto語(yǔ)句是一種讓程序員任意控制流程的有效工具,充分表現(xiàn)程序的靈活性。在結(jié)構(gòu)化程序設(shè)計(jì),goto語(yǔ)句會(huì)使程序流程無(wú)規(guī)律、可讀性差,因此,建議盡量少用或不用該語(yǔ)句。當(dāng)需要跳出某種嵌套較深的結(jié)構(gòu)時(shí),如果使用break語(yǔ)句,只能跳出break所在層。如果一次要跳出二層甚至更多層,這時(shí)使用goto語(yǔ)句,就是不錯(cuò)的選擇。goto語(yǔ)句的格式:goto標(biāo)識(shí)符;其中標(biāo)識(shí)符是語(yǔ)句轉(zhuǎn)移的目標(biāo)。該標(biāo)識(shí)符必須局限在當(dāng)前函數(shù)的標(biāo)號(hào)。標(biāo)號(hào)的格式與變量名相同,并在其后跟冒號(hào)。goto語(yǔ)句2-2用if語(yǔ)句和goto語(yǔ)句構(gòu)成循環(huán)??梢岳胕f和goto語(yǔ)句實(shí)現(xiàn)循環(huán),這種方式也是早期非結(jié)構(gòu)化程序設(shè)置實(shí)現(xiàn)循環(huán)的一種方法。其處理流程如圖5-17。goto語(yǔ)句案例2-1【案例5-11】編程,求1~10的平方根。分析:

利用if和goto語(yǔ)句構(gòu)成一個(gè)循環(huán),設(shè)置變量num,其取值為1~100,并計(jì)算其平方根,當(dāng)num>100退出循環(huán)。goto語(yǔ)句案例2-2voidmain(){intnum;printf("num\troot\n");

num=1;loop:if(num<=10)

{

printf("%d\t%5.3f\n",num,sqrt(num));

num++;

gotoloop;}}goto語(yǔ)句案例2-12、利用goto實(shí)現(xiàn)跳出循環(huán)【案例5-12】用逐個(gè)判別法求2~100之間的所有素?cái)?shù)。

分析:將2~100的所有整數(shù)逐個(gè)判斷,如果是素?cái)?shù),則打印輸出。程序流程如圖5-19所示。goto語(yǔ)句案例2-2#include<stdio.h>#include<math1voidmain(){inti,j,c;for(i=2;i<100;i++){for(j=2;j<i/2;j++)if(i%j==0)gotoex;printf("%4d",i);c++;if(c%5==0)printf("\n");ex:;}}任務(wù)分析與實(shí)施任務(wù)分析統(tǒng)計(jì)某門(mén)課程的平均成績(jī)。對(duì)于某個(gè)班級(jí)學(xué)生某門(mén)課程平均成績(jī)的統(tǒng)計(jì),需要對(duì)每個(gè)學(xué)生該

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論