C語言-5循環(huán)結(jié)構(gòu)_第1頁
C語言-5循環(huán)結(jié)構(gòu)_第2頁
C語言-5循環(huán)結(jié)構(gòu)_第3頁
C語言-5循環(huán)結(jié)構(gòu)_第4頁
C語言-5循環(huán)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章循環(huán)結(jié)構(gòu)程序設(shè)計主講教師賈月樂電話習:C語句的類型C語言程序設(shè)計——算法的描述

SCS-SWPU2課程回顧——C語句5類控制語句函數(shù)調(diào)用語句表達式語句空語句復(fù)合語句C語言程序設(shè)計——算法的描述

SCS-SWPU3(一)控制語句:完成一定的控制功能

1、

if()~else條件語句switch()開關(guān)語句

2、

for()~循環(huán)語句

while()~循環(huán)語句

do~while();循環(huán)語句

3、break間斷語句continue繼續(xù)語句4、return返回語句課程回顧——C語句C語言程序設(shè)計——算法的描述

SCS-SWPU4課程引入例:1+2+3該如何實現(xiàn)定義變量sum=0sum+=1sum+=2sum+=3輸出sumi<=100結(jié)束Ysum+=ii++N定義變量sum=0,i=1又例:5第五章循環(huán)結(jié)構(gòu)程序設(shè)計while語句5.1do-while語句5.25.3C語言程序設(shè)計——第一章C語言概述

SCS-SWPUfor語句break語句和continue語句5.45.5程序舉例C語言程序設(shè)計——算法的描述

SCS-SWPU65.1while語句1.while循環(huán)語句的形式

while(表達式)循環(huán)語句先判斷條件,后執(zhí)行語句表達式語句零非零2.執(zhí)行過程:跳出循環(huán)此處無;C語言程序設(shè)計——算法的描述

SCS-SWPU7例1:求i=1,sum=0i<=100?sum=sum+ii=i+1零非零main(){inti=1,sum=0;

while(i<=100){sum=sum+i;i++;}printf("%d",sum);}注意:(1)循環(huán)體如果包含一個以上的語句,應(yīng)該用花括弧括起來,以復(fù)合語句形式出現(xiàn).(2)在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。累加和變量需置初值0累乘積變量需置初值15.1while語句C語言程序設(shè)計——算法的描述

SCS-SWPU81.do-while循環(huán)語句的形式

do

循環(huán)體

while(條件表達式);

先執(zhí)行語句,后判斷條件

2.執(zhí)行過程此處有;表達式語句零非零跳出循環(huán)5.2do-while語句C語言程序設(shè)計——算法的描述

SCS-SWPU9表達式=0?語句零非零i<=100?sum=sum+ii=i+1i=1,sum=0例2:用do-while型循環(huán)求:main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("%d",sum);}5.2do-while語句C語言程序設(shè)計——算法的描述

SCS-SWPU10【例5.3】while和do-while循環(huán)的比較。#include<stdio.h>voidmain(){

intsum=0,i;scanf("%d",&i);

while(i<=10){sum=sum+i;i++;}printf("sum=%d\n",sum);}

?#include<stdio.h>voidmain(){intsum=0,i;scanf("%d",&i);

do

{sum=sum+i;i++;}while(i<=10);printf("sum=%d\n",sum);}

運行結(jié)果:1↙sum=55

再運行一次:11↙sum=0運行結(jié)果:1↙sum=55

再運行一次:11↙sum=11結(jié)論:(1)do—while循環(huán)語句首先執(zhí)行循環(huán)體,然后計算表達式并檢查循環(huán)條件,所以循環(huán)體至少執(zhí)行一次。(2)退出do—while循環(huán)的條件與退出while循環(huán)的條件相同5.2do-while語句C語言程序設(shè)計——算法的描述

SCS-SWPU11一般格式:執(zhí)行流程:表達式2循環(huán)體假(0)真(非0)for表達式1表達式3for(表達式1;表達式2;表達式3){

循環(huán)體語句

}C語言中的for語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語句。5.3for語句C語言程序設(shè)計——算法的描述

SCS-SWPU12表達式2?執(zhí)行語句YN執(zhí)行for循環(huán)之后的語句執(zhí)行表達式3執(zhí)行表達式1循環(huán)初始條件循環(huán)控制條件循環(huán)體5.3for語句循環(huán)變量增值/減值for語句等價于下列語句:表達式1;while(表達式2){語句;表達式3;}

C語言程序設(shè)計——算法的描述

SCS-SWPU13例用for循環(huán)求

#include<stdio.h>main(){inti,sum=0;

for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}相當于:i=1,sum=0;while(i<=100){sum=sum+i;i++;}

for語句最簡單的形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)

{循環(huán)體

}5.3for語句C語言程序設(shè)計——算法的描述

SCS-SWPU145.3循環(huán)結(jié)構(gòu)——總結(jié)用上述三種循環(huán)語句求

while語句:n=1;s=1;while(n<=100){s=s*n;n++;}

n=1;s=1;do{s=s*n;n++;}while(n<=100);

do-while語句:for(n=1,s=1;n<=100;n++)s=s*n;

for語句:C語言程序設(shè)計——算法的描述

SCS-SWPU155.3for語句——使用格式說明for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值){循環(huán)體語句}說明:for語句中任意一個表達式均可省,但分號“;”不可省(1)省略“表達式1”:此時在for語句之前給循環(huán)變量賦初值。如

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

執(zhí)行時,跳過“求解表達式1”這一步,其他不變。i=1;for(;i<=100;i++)sum=sum+i;C語言程序設(shè)計——算法的描述

SCS-SWPU165.3for語句——使用格式說明for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值){循環(huán)體語句}說明:(2)省略表達式2:即不判斷循環(huán)條件,認為表達式2始終為真。

例如:for(i=1;;i++)sum=sum+i;

它相當于:

i=1;while(1){sum=sum+1;i++;}C語言程序設(shè)計——算法的描述

SCS-SWPU175.3for語句——使用格式說明for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值){循環(huán)體語句}說明:(3)省略表達式3:此時程序設(shè)計者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。如:

for(i=1;i<=100;){sum=sum+i; i++;}

C語言程序設(shè)計——算法的描述

SCS-SWPU18for語句的使用格式靈活:表達式類型任意,可省略,但分號“;”不可省當表達式2被省略時,需要在循環(huán)體中設(shè)置循環(huán)結(jié)束語句,否則構(gòu)成死循環(huán)無限循環(huán):for(;;)括號后邊的表達式可以是任意有效的C語言表達式5.3for語句——總結(jié)for(i=1;;i++)sum+=i;for(i=1;1;i++)sum+=i;C語言程序設(shè)計——算法的描述

SCS-SWPU19例1:#include<stdio.h>main(){inti;

for(i=0;i<10;i++)putchar(‘a(chǎn)’+i);}運行結(jié)果:abcdefghij例2:#include<stdio.h>main(){inti=0;

for(;i<10;i++)

putchar(‘a(chǎn)’+i);}例3:#include<stdio.h>main(){inti=0;

for(;i<10;)putchar(‘a(chǎn)’+(i++));}例4:#include<stdio.h>main(){inti=0;

for(;i<10;putchar(‘a(chǎn)’+i),i++);}省略表達式1省略表達式1、3省略循環(huán)體結(jié)論:for語句的功能強大!5.3for語句——總結(jié)C語言程序設(shè)計——算法的描述

SCS-SWPU20例5main(){inti,j,k;for(i=0,j=100;i<=j;i++,j--){k=i+j;printf("%d+%d=%d\n",i,j,k);}}例6#include<stdio.h>main(){charc;for(;(c=getchar())!='\n';)printf("%c",c);}表達式1、3為逗號表達式結(jié)論:表達式2:進行邏輯判斷,只要為真就執(zhí)行循環(huán)!

如:for(i=0;i==5;i++)sum+=i;for(i=0;i=5;i++)sum+=i;表達式1,3:可以是C語言任意合法表達式5.3for語句——總結(jié)1、計算1+1/2+1/4+…+1/1000的值并輸出C語言程序設(shè)計——算法的描述

SCS-SWPU21程序練習i<=1000sum+=1/i假(0)真(非0)

開始sum=1,i=2i+=22、從鍵盤輸入100個字符,分別統(tǒng)計其中字母、數(shù)字字符和其他字符的個數(shù)C語言程序設(shè)計——算法的描述

SCS-SWPU22i<=100ch=getchar()假(0)真(非0)

開始letter=0,digital=0,other=0i++程序練習#include<stdio.h>voidmain(){ intletter=0,digtal=0,other=0,i; charc;for(i=0;i<10;i++) { c=getchar(); if(c<='z'&&c>='a'||c<='Z'&&c>='A') letter++; elseif(c<='9'&&c>='0') digtal++; else other++; } printf("letter=%d,digtal=%d,other=%d",letter,digtal,other);}C語言程序設(shè)計——算法的描述 SCS-SWPU23C語言程序設(shè)計——算法的描述

SCS-SWPU24例題:找出100~999之間的所有“水仙花”數(shù),所謂“水仙花”數(shù)是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身,例如:153=13+33+53,所以,153是“水仙花”數(shù)。分析:設(shè)100<=n<=999,i、j、k分別代表數(shù)n百位、十位、個位上的數(shù)字,則:

i=n/100j=n/10%10k=n%10如果i3+j3+k3==n,則n即是所求。思考作業(yè)#include<stdio.h>#include<math.h>voidmain(){ intn=100; while(n<=999) { inti,j,k; i=n/100; j=n/10%10; k=n%10; if(n==(int)(pow(i,3)+pow(j,3)+pow(k,3))) printf("%d",n); n++; }}C語言程序設(shè)計——算法的描述 SCS-SWPU25真題1:若輸入字符串:abcde<回車>,則以下while循環(huán)體將執(zhí)行()次ch=getchar();while(ch==’e’)printf(“*”);A)5 B)4 C)1 D)0真題2:有下列程序:【2006.9】voidmain(){intk=5;while(--k)printf(''%d'',k-=3);printf(''\n'');}執(zhí)行后的輸出結(jié)果是()。A)1B)2 C)4D)死循環(huán)真題練習C語言程序設(shè)計——算法的描述 SCS-SWPU26真題3:若變量已正確定義,有下列程序段:【2007.9】

i=0;

doprintf(''%d,'',i);

while(i++);

printf(''%d\n'',i);

其輸出結(jié)果是()。A)0,0B)0,1C)1,1D)程序進入無限循環(huán)真題1:下列程序運行后的輸出結(jié)果是( )。

main(){charc1,c2;for(c1='0',c2='9';c1<c2;c1++,c2--)printf(''%c%c'',c1,c2);printf(''\n'');}C語言程序設(shè)計——算法的描述 SCS-SWPU27C語言程序設(shè)計——算法的描述

SCS-SWPU28循環(huán)的嵌套

-在循環(huán)體內(nèi)又包含一個循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。

for(;;){……do{……}while();……while(){……}…...}內(nèi)循環(huán)外循環(huán)內(nèi)循環(huán)循環(huán)嵌套的執(zhí)行流程三種循環(huán)(while循環(huán)、do-while循環(huán)和for循環(huán))可以互相嵌套。5.3循環(huán)嵌套C語言程序設(shè)計——算法的描述

SCS-SWPU29下面幾種都是合法的形式:(1)while()(2)do(3)for(;;){…{…{while()dofor(;;){…}{…}{…}}while();}}while();5.3循環(huán)嵌套C語言程序設(shè)計——算法的描述

SCS-SWPU30下面幾種都是合法的形式:(4)

while()(5)for(;;)(6)do{…{…{…do{…}while();for(;;){}while();{}…{…}…}}}while();

5.3循環(huán)嵌套C語言程序設(shè)計——算法的描述

SCS-SWPU31多行多列數(shù)據(jù)輸出——循環(huán)嵌套外循環(huán):控制行內(nèi)循環(huán):控制列ij例題1:打印九九乘法表5.3循環(huán)嵌套C語言程序設(shè)計——算法的描述

SCS-SWPU32外循環(huán)內(nèi)循環(huán)i<=9printf假(0)真(非0)i=1j++j=1j<=9真(非0)假(0)i++‘\n’5.3循環(huán)嵌套C語言程序設(shè)計——算法的描述

SCS-SWPU33#include"stdio.h"voidmain(){inti,j;printf("\t九九乘法表\n");printf("\t-----------\n");for(i=1;i<=9;i++){ for(j=1;j<=9;j++) {printf("%d×%d=%2d\t",i,j,i*j);} printf("\n");}}5.3循環(huán)嵌套C語言程序設(shè)計——算法的描述

SCS-SWPU34?5.3循環(huán)嵌套例題2:把一張一元鈔票換成1分,2分和5分的硬幣,每種至少一枚,問有多少種換法?分析:設(shè)i,j,k分別表示1分、2分、5分硬幣的枚數(shù),則:i*1+j*2+k*5=100,且k∈[1,19],j∈[1,47]C語言程序設(shè)計——算法的描述

SCS-SWPU355.3循環(huán)嵌套#include<stdio.h>voidmain(){

inti,j,k; for(j=1;j<=47;j++) {

for(k=1;k<=19;k++) {

i=100-j*2-k*5;

printf(“一分%d個,二分%d個,五分%d個\n",i,j,k);}}}C語言程序設(shè)計——算法的描述 SCS-SWPU36百錢買百雞雞翁一值錢五,雞母一值錢三,雞雛三值錢一用百錢買百雞,問翁、母、雛各幾何?分析:設(shè)cock、hen、chicken表示三者數(shù)量,其中,cock的取值范圍(0,20),hen的取值范圍為(0,33),則chicken=100-cock-hen,且5*cock+3*hen+chicken/3=100定義變量用cock和hen的雙重循環(huán)確定chicken的值如果滿足5*cock+3*hen+chicken/3=100則符合題目要求直道全部狀態(tài)測試完C語言程序設(shè)計——算法的描述

SCS-SWPU37課堂練習38第五章循環(huán)結(jié)構(gòu)程序設(shè)計while語句5.1do-while語句4.24.3C語言程序設(shè)計——第一章C語言概述

SCS-SWPUfor語句break語句和continue語句5.45.5程序舉例C語言程序設(shè)計——算法的描述

SCS-SWPU395.4break和continue語句1、

break語句一般形式:break;功能:在switch語句中,結(jié)束case分支,跳出switch語句在循環(huán)語句,終止并跳出循環(huán)體說明:break只能終止并跳出最近一層的結(jié)構(gòu)break只能用于循環(huán)語句和switch語句中C語言程序設(shè)計——算法的描述

SCS-SWPU40表達式……break;……假(0)真(非0)while表達式2……break;…...假(0)真(非0)for表達式1表達式35.4break和continue語句C語言程序設(shè)計——算法的描述

SCS-SWPU41switch表達式語句組1break;語句組2break;語句組nbreak;語句組break;…...const1const2constndefaultcase5.4break和continue語句C語言程序設(shè)計——算法的描述

SCS-SWPU42例:floatpi=3.14159;for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;printf(″r=%f,area=%f\n″,r,area);}

程序的作用是計算r=1到r=10時的圓面積,直到面積area大于100為止。從上面的for循環(huán)可以看到:當area>100時,執(zhí)行break語句,提前結(jié)束循環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。5.4break和continue語句C語言程序設(shè)計——算法的描述

SCS-SWPU432、continue語句一般形式:continue;功能:結(jié)束本次循環(huán),跳過循環(huán)體中尚未執(zhí)行的語句,進行下一次是否執(zhí)行循環(huán)體的判斷說明:僅用于循環(huán)語句中continue語句僅結(jié)束本次循環(huán)break語句則是結(jié)束整個循環(huán)過程。5.4break和continue語句C語言程序設(shè)計——算法的描述

SCS-SWPU44真(非0)do……continue;…...表達式假(0)while表達式……continue;……假(0)真(非0)while表達式2……continue;…...假(0)真(非0)for表達式1表達式35.4break和continue語句C語言程序設(shè)計——算法的描述

SCS-SWPU45例5.6把100~200之間的不能被3整除的數(shù)輸出。#include<stdio.h>

voidmain()

{intn;

for(n=100;n<=200;n++)

{if(n%3==0)

continue;

printf("%d″,n);

}

}5.4break和continue語句#include<stdio.h>

voidmain()

{intn;

for(n=100;n<=200;n++)

{if(n%3!=0)

printf("%d″,n);

}

}C語言程序設(shè)計——算法的描述

SCS-SWPU46例求輸入的十個整數(shù)中正整數(shù)的個數(shù)及其和與平均值

#include<stdio.h>main(){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);}5.4break和continue語句C語言程序設(shè)計——算法的描述

SCS-SWPU47

判斷m是否素數(shù)。讀入mi=2當i<=mm被i整除真假用break結(jié)束循環(huán)i=i+1i<k+1真假輸出:m”不是素數(shù)”輸出:m”是素數(shù)”舉例C語言程序設(shè)計——算法的描述

SCS-SWPU48#include<stdio.h>voidmain(){intm,i,r;printf("inputanumber:\n");scanf("%d",&m);for(i=2;i<=m;i++){ if(m%i==0) break;}if(i<m)printf("%disnotasushu!\n",m);elseprintf("%disasushu!\n",m);}舉例C語言程序設(shè)計——算法的描述

SCS-SWPU49程序精簡#include<stdio.h>#include<math.h>main(){inti,k,m;scanf("%d",&m);k=(int)sqrt(m);//判別i是否為素數(shù),只需使2~根號i之間的每一個整數(shù)去除

for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf("%d是素數(shù)",m);elseprintf("%d不是素數(shù)",m);}輸出3到500之間的所有素數(shù)C語言程序設(shè)計——算法的描述

SCS-SWPU50課堂延伸51第五章循環(huán)結(jié)構(gòu)程序設(shè)計while語句5.1do-while語句4.24.3C語言程序設(shè)計——第一章C語言概述

SCS-SWPUfor語句break語句和continue語句5.45.5程序舉例C語言程序設(shè)計——算法的描述

SCS-SWPU525.5循環(huán)程序舉例求Fibonacci數(shù)列求p求最大公約數(shù)、最小公倍數(shù)判斷素數(shù)C語言程序設(shè)計——算法的描述

SCS-SWPU53例1求Fibonacci數(shù)列前40個數(shù)。這個數(shù)列有如下特點:第1,2兩個數(shù)為1,1。從第3個數(shù)開始,該數(shù)是其前面兩個數(shù)之和。即:F(1)=1(n=1)F(2)=1(n=2)F(n)=F(n-1)+F(n-2)

(n≥3)

算法如

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論