《C語言入門至精通》循環(huán)控制省名師優(yōu)質(zhì)課賽課獲獎?wù)n件市賽課一等獎?wù)n件_第1頁
《C語言入門至精通》循環(huán)控制省名師優(yōu)質(zhì)課賽課獲獎?wù)n件市賽課一等獎?wù)n件_第2頁
《C語言入門至精通》循環(huán)控制省名師優(yōu)質(zhì)課賽課獲獎?wù)n件市賽課一等獎?wù)n件_第3頁
《C語言入門至精通》循環(huán)控制省名師優(yōu)質(zhì)課賽課獲獎?wù)n件市賽課一等獎?wù)n件_第4頁
《C語言入門至精通》循環(huán)控制省名師優(yōu)質(zhì)課賽課獲獎?wù)n件市賽課一等獎?wù)n件_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章循環(huán)控制

C語言程序設(shè)計(jì)

第六章循環(huán)控制概述goto語句以及用goto語句組成循環(huán)while語句do-while語句for語句循環(huán)嵌套幾個(gè)循環(huán)比較break語句和continue語句程序舉例第1頁<>6.1

概述程序中凡包括求階乘、累加、排序等問題都要用循環(huán)處理,因?yàn)槌绦蛑心骋怀绦蚨我貜?fù)執(zhí)行若干次。C語言實(shí)現(xiàn)循環(huán)語句:goto和if組合while語句dowhile語句for語句

C語言程序設(shè)計(jì)

第六章循環(huán)控制重點(diǎn)第2頁<>6.2goto語句以及用goto語句組成循環(huán)作用:無條件地轉(zhuǎn)移到語句標(biāo)號指向語句去執(zhí)行。普通格式:

C語言程序設(shè)計(jì)

第六章循環(huán)控制

goto語句標(biāo)號;

….…..標(biāo)號:語句;說明:語句標(biāo)號由字母、數(shù)字和下劃線組成,定名規(guī)則同變量名,不能用數(shù)字開頭。gotoloop;

(√)

goto100;(×)與循環(huán)語句配合使用時(shí),可從循環(huán)體內(nèi)跳到循環(huán)體外,而不能從循環(huán)體外跳到循環(huán)體內(nèi)。goto語句轉(zhuǎn)移方向可前可后。與if語句配合使用時(shí)可組成循環(huán)。goto語句違反結(jié)構(gòu)化程序設(shè)計(jì)標(biāo)準(zhǔn),所以應(yīng)限制使用。第3頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例6.1用if和goto語句組成循環(huán),求#include<stdio.h>voidmain(){inti,sum=0;i=1;loop:if(i<=100){sum+=i; i++; gotoloop;}printf("%d",sum);}sum=0+1sum=1+2=3sum=3+3=6sum=6+4……sum=4950+100=5050循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體第4頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例從鍵盤輸入一組數(shù)據(jù),以0結(jié)束輸入,求數(shù)據(jù)和。#include<stdio.h>voidmain(){ intnumber,sum=0;

read_loop:scanf("%d",&number); if(!number)gotoprint_sum; sum+=number;

gotoread_loop;print_sum:printf("Thetotalsumis%d\n",sum);}第5頁<>6.3

while語句while語句實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。普通形式:

C語言程序設(shè)計(jì)

第六章循環(huán)控制while(表示式)

循環(huán)體語句;沒有“;”功效:先判斷表示式,若為真則執(zhí)行循環(huán)體,再判斷表示式,重復(fù)上述過程,直到表示式為假時(shí)退出循環(huán)。求sum=sum+ii=i+1i=1;sum=0i≤100假真i=1;sum=0當(dāng)i≤100sum=sum+ii=i+1第6頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制#include<stdio.h>voidmain(){inti,sum=0;

i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}循環(huán)條件循環(huán)體例6.2用while語句組成循環(huán),求循環(huán)初值循環(huán)終值循環(huán)變量增值第7頁<>關(guān)于while循環(huán)語句:while循環(huán)先判斷表示式,后執(zhí)行循環(huán)體。循環(huán)體有可能一次也不執(zhí)行。循環(huán)體若包含一個(gè)以上語句,應(yīng)該用{}括起來。循環(huán)體應(yīng)包含有使循環(huán)趨向結(jié)束語句;以下情況,退出while循環(huán)條件表示式不成立(為零)循環(huán)體內(nèi)遇break,goto無限循環(huán)

while(1)

循環(huán)體;

C語言程序設(shè)計(jì)

第六章循環(huán)控制第8頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例用while語句顯示1~10平方#include<stdio.h>voidmain(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}}1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100第9頁<>6.4

do-while語句do-while語句實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu)。普通形式:

C語言程序設(shè)計(jì)

第六章循環(huán)控制功效:先執(zhí)行循環(huán)體,然后判斷表示式。若為真,則再次執(zhí)行循環(huán)體,不然退出循環(huán)。求do循環(huán)體語句;while(表示式);有“;”i=1,sum=0sum=sum+ii=i+1i≤100真假i=1,sum=0sum=sum+ii=i+1

直到i>100第10頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例6.3用do-while語句組成循環(huán),求#include<stdio.h>

voidmain(){inti,sum=0;

scanf("%d",&i);do{sum+=i;i++;}while(i<=100);printf("%d",sum);}循環(huán)條件循環(huán)體#include<stdio.h>

voidmain(){inti,sum=0;

scanf("%d",&i);while(i<=100){sum+=i;i++;}printf("%d",sum);}比較do-while循環(huán),循環(huán)體最少執(zhí)行一次;while和do-while能夠處理同一問題,二者能夠交換。while后表示式一開始就為假時(shí),兩種循環(huán)結(jié)果不一樣。輸入:1輸出:50505050輸入:101輸出:1010第11頁<>6.5

for語句

for語句是C語言中最為靈活,使用最廣泛循環(huán)語句,可完全替換while,do-while語句。普通形式

C語言程序設(shè)計(jì)

第六章循環(huán)控制for(表示式1;表示式2;表示式3)

循環(huán)體語句;慣用形式for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)

循環(huán)體語句;第12頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制#include<stdio.h>

voidmain(){inti,sum=0;

for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}i≤100sum=sum+iNYi=1i++for循環(huán)下面語句循環(huán)步長例用for語句組成循環(huán),求第13頁<>幾點(diǎn)說明:for語句中表示式1、2、3類型任意,都可省略,但分號“;”不能省。無限循環(huán):for(;;)不停執(zhí)行循環(huán)體,循環(huán)不終止。For語句能夠轉(zhuǎn)換成while結(jié)構(gòu)

C語言程序設(shè)計(jì)

第六章循環(huán)控制表示式1;while(表示式2){

循環(huán)體語句; 表示式3;}第14頁<>幾個(gè)形式:

C語言程序設(shè)計(jì)

第六章循環(huán)控制省略表示式1:應(yīng)在for之前為變量賦初值。/*正常形式*/main(){inti,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("%d",sum);}/*省略表示式1*/main(){inti,sum=0;

i=1;

for(;i<=100;i++)

sum=sum+i

printf("%d",sum);}省略表示式2:循環(huán)條件一直為“真”,循環(huán)不終止。省略表示式3:應(yīng)另外設(shè)法使程序能夠結(jié)束。/*省略表示式3*/main(){inti,sum=0;

for(i=1;i<=100;)

{sum=sum+i

i++;}

printf("%d",sum);}省略表示式1、3:完全等同于while語句。/*省略表示式1、3*/main(){inti,sum=0;

i=1;

for(;i<=100;)

{sum=sum+i

i++;}

printf("%d",sum);}三個(gè)表示式都省略:無初值,不判斷條件,循環(huán)變量不增值,死循環(huán)。第15頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制表示式1、3能夠是與循環(huán)無關(guān)表示式,也能夠是逗號表示式。for(s=0,i=1;i<=100;i++)s=s+i;/*表示式是逗號表示式*/main(){inti,j,k;for(i=0,j=100;i<=j;i++,j--){k=i+j;printf("%d+%d=%d\n",i,j,k);}}表示式2能夠是關(guān)系、邏輯、算術(shù)、字符表示式,非0時(shí),執(zhí)行循環(huán)體,為0時(shí)退出循環(huán)。#include<stdio.h>main(){charc;for(;(c=getchar())!='\n';)printf("%c",c);}#include<stdio.h>main(){inti,c;for(i=0;(c=getchar())!='\n';i+=c) printf("%d",i+c);}第16頁<>6.6

循環(huán)嵌套定義:一個(gè)循環(huán)體內(nèi)又包含了另一個(gè)完整循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。三種循環(huán)能夠相互嵌套,層數(shù)不限。嵌套循環(huán)執(zhí)行流程。

C語言程序設(shè)計(jì)

第六章循環(huán)控制(1)while()

{……while(){……}…...

}(2)do

{……do{……}while();…...

}

while();(3)for(;;)

{……for(;;){……}

}(4)while()

{……do{……}while();…….

}第17頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制(5)for(;;){……while(){……}…...}(7)for(;;){……do{……}while();……while(){……}…...}(6)do{……for(;;){……}…...}while();循環(huán)能夠相互嵌套,但不能相互交叉。for

for………...…...

for

for………...…...

第18頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例計(jì)算3組1~4累加和#include<stdio.h>voidmain(){inti,j,s=0;for(i=1;i<=3;i++)for(j=1;j<=4;j++)s=s+j;printf(“s=%d\n",s);}結(jié)果:s=30123ijs=0111136211122132420312132233326343023161410第19頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例循環(huán)嵌套,輸出九九乘法表1234567891234567892468101214161836912151821242791827364554637281……………..ijvoidmain(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n------------------------------------\n");for(i=1;i<10;i++)for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);}條件運(yùn)算符:

j=9,輸出i*j,再回車換行。

j≠9,只輸出i*j。第20頁<>

九九乘法表邏輯框圖

C語言程序設(shè)計(jì)

第六章循環(huán)控制i<10printfNYi=1j++j=1j<10YNi++for(i=1;i<10;i++)

for(j=1;j<10;j++)printf((j==9)?"%4d\n":"%4d",i*j);外循環(huán)內(nèi)循環(huán)第21頁<>6.7

幾個(gè)循環(huán)比較

C語言程序設(shè)計(jì)

第六章循環(huán)控制語句適用范圍 說明while只知道結(jié)束條件而無法確定執(zhí)行次數(shù)情況下。①循環(huán)變量初始化在循環(huán)體之前②循環(huán)體中應(yīng)包含使循環(huán)結(jié)束語句③能夠用break和continue語句控制do-while最少執(zhí)行一次時(shí)if~goto無條件循環(huán)

該循環(huán)不能用break和continue語句控制for已知執(zhí)行次數(shù)或者已知初值,終值,步長時(shí)。使用比較靈活第22頁<>6.8

break語句和continue語句Break語句功效:在循環(huán)語句和switch語句中,終止并跳出循環(huán)體或開關(guān)體。說明:break只能終止并跳出最近一層結(jié)構(gòu)。break不能用于循環(huán)語句和switch語句之外任何其它語句之中。普通形式:break;

C語言程序設(shè)計(jì)

第六章循環(huán)控制第23頁<>流程形式:

C語言程序設(shè)計(jì)

第六章循環(huán)控制表示式……break;……假(0)真(非0)whiledo……break;…...表示式假(0)真(非0)while表示式2……break;…...假(0)真(非0)for表示式1表示式3第24頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制switch表示式語句組1break;語句組2break;語句組nbreak;語句組break;…...const1const2constndefaultcase第25頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例break舉例:輸出圓面積,面積大于100時(shí)停頓#include<stdio.h>#definePI3.14159voidmain(){intr;floatarea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100)break;printf("r=%d,area=%f",r,area);}}r≤10area=3.14*r*rNYr=1i++for循環(huán)下面語句area>100NY使用break跳出整個(gè)循環(huán)輸出:r=1,area=3.14r=2,area=12.57r=3,area=28.27r=4,area=50.27r=5,area=78.85/*當(dāng)r=6時(shí),area=113.10故此值沒有被輸出*/第26頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例break舉例:小寫字母轉(zhuǎn)換成大寫字母,直至輸入非字母字符#include<stdio.h>voidmain(){charc;while(1){c=getchar();if(c>='a'&&c<='z')putchar(c-32);else if(c>=‘A'&&c<=‘Z')putchar(c);elsebreak;}}break使無限循環(huán)結(jié)束第27頁<>Continue語句功效:結(jié)束此次循環(huán),跳過循環(huán)體中還未執(zhí)行語句,進(jìn)行下一次是否執(zhí)行循環(huán)體判斷。continue語句僅用于循環(huán)語句中。

C語言程序設(shè)計(jì)

第六章循環(huán)控制break

和continue語句區(qū)分continue語句只結(jié)束此次循環(huán),break語句則是結(jié)束整個(gè)循環(huán)。

continue語句只用于while,do-while,for循環(huán)語句中,break語句還能夠用于switch語句中。第28頁<>流程形式:

C語言程序設(shè)計(jì)

第六章循環(huán)控制表示式……continue;……假(0)真(非0)while真(非0)do……continue;…...表示式假(0)while表示式2……continue;…...假(0)真(非0)for表示式1表示式3第29頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例6.5把100~200之間不能被3整除數(shù)輸出#include<stdio.h>voidmain(){inti;for(i=100;i<=200;i++){if(i%3==0)continue;printf(“%d”,n);}}使用continue結(jié)束此次循環(huán)i≤200NYi=100i++for循環(huán)下面語句i%3==0YprintfN運(yùn)行結(jié)果:100,101,103,104,106,107,109,110,112,113,115,116,118,119,第30頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例

求輸入十個(gè)整數(shù)中正數(shù)個(gè)數(shù)及其平均值#include<stdio.h>

voidmain(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}第31頁<>6.9

程序舉例

C語言程序設(shè)計(jì)

第六章循環(huán)控制t=1,pi=0,n=1.0,s=1當(dāng)|t|1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4輸出pi分子:1,-1,1,-1…分母:1,3,5,7,...#include<stdio.h>#include<math.h>voidmain(){ints;floatn,t,pi;t=1;pi=0;n=1.0;s=1;while((fabs(t))>=1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}pi=pi*4;printf("pi=%10.6f\n",pi);}運(yùn)行結(jié)果:

pi=3.141594第32頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例6.7

求Fibonacci數(shù)列:1、1、2、3、5、8……前40個(gè)數(shù)。Fibonacci數(shù)列能夠用一個(gè)有趣古典數(shù)學(xué)問題來描述:有一對兔子,出生三個(gè)月后每個(gè)月都生一對兔子。小兔子長到三個(gè)月后每個(gè)月又生一對兔子。假設(shè)全部兔子都不死,問每個(gè)月兔子總數(shù)是多少對?月數(shù)小兔中兔老兔總數(shù)1111111111123450200002352……………第33頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制f1=1,f2=1fori=1to20輸出f1,f2f1=f1+f2f2=f2+f1#include<stdio.h>#include<conio.h>voidmain(){longintf1,f2;inti;f1=1;f2=1;for(i=1;i<=20;i++){printf("%12ld%12ld",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f2+f1;}

}1534233159710946750255142293524578241578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155第34頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例6.8判斷m是否素?cái)?shù)。#include<stdio.h>#include<math.h>voidmain(){intm,i,k;scanf("%d",&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf("%disaprimenumber\n",m);elseprintf("%disnotaprimenumber\n",m);}讀入mk=i=2當(dāng)i

km被i整除真假用break結(jié)束循環(huán)i=i+1i

k+1真假輸出”是素?cái)?shù)”輸出”不是素?cái)?shù)”19

19isaprimenumber第35頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例6.9求100~200間全部素?cái)?shù)。

因?yàn)椴皇乔笠粋€(gè)數(shù)是否素?cái)?shù),所以需要使用雙循環(huán)嵌套。外層第一個(gè)循環(huán),用于在100~200間提取一個(gè)數(shù),然后內(nèi)層第二個(gè)循環(huán)進(jìn)行判斷。#include<stdio.h>#include<math.h>voidmain(){intm,k,i,n=0;for(m=101;m<=200;m=m+2){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1){printf("%d",m);n=n+1;}if(n%10==0)printf("\n");}printf("\n");}運(yùn)行結(jié)果:

101103107109113127131137139149157163167173179181191193197199第36頁<>

C語言程序設(shè)計(jì)

第六章循環(huán)控制例6.10譯密碼。按一定規(guī)律將電文變成密碼:將字母A變?yōu)镋、將字母a變?yōu)閑,即變成其后第四個(gè)字母,W將變成A。字母按上述規(guī)律轉(zhuǎn)換,非字母字符不變。輸入一行字符,輸出對應(yīng)密碼。分析:因?yàn)樽址驼麛?shù)之間能夠通用,所以‘A’->’E’對應(yīng)‘A’->’A’+4能夠定義一個(gè)字符型變量c,c接收輸入,并c->c+4。特殊之處是‘W’-’Z’和‘w’-’z’之間時(shí),它們需要對應(yīng)為‘A’-’D’和‘a(chǎn)’-’d’,怎么辦

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論