For循環(huán)語句 課件_第1頁
For循環(huán)語句 課件_第2頁
For循環(huán)語句 課件_第3頁
For循環(huán)語句 課件_第4頁
For循環(huán)語句 課件_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

For循環(huán)語句For循環(huán)語句的使用及和其他循環(huán)語句的比較

5.3

for循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體語句一般形式:1.計(jì)算表達(dá)式1,通常用于循環(huán)開始前設(shè)置變量初值。2.計(jì)算表達(dá)式2,值為0則結(jié)束循環(huán),否則執(zhí)行第3步。3.執(zhí)行循環(huán)體語句。4.計(jì)算表達(dá)式3,返回第2步。執(zhí)行流程表達(dá)式1表達(dá)式2循環(huán)體表達(dá)式3假真例:求1+2+…+99#include<stdio.h>main(){inti,s=0;for(i=1;i<=99;i++)s=s+i;printf(“s=%d”,s);}分析:用變量i從1到99循環(huán),把i的值累加到變量s中,最后輸出s的值。程序如下:i=1i<=99s=s+ii++假真從上面的程序我們看到,for語句中:表達(dá)式1:通常是給循環(huán)變量賦初值表達(dá)式2:循環(huán)是否繼續(xù)執(zhí)行的判別表達(dá)式,這個(gè)表達(dá)式通常與某一個(gè)(或多個(gè))變量的值有關(guān),隨著這個(gè)(些)變量的值的改變,表達(dá)式的結(jié)果發(fā)生變化,這個(gè)(些)變量被稱為循環(huán)因變量。表達(dá)式3:通常用于改變循環(huán)因變量的值。

在某些情況下,for語句中的表達(dá)式1、2、3都可以省略,而改用其他的方式來實(shí)現(xiàn)這些功能。我們還用上面的例子說明for語句省略表達(dá)式的情形。1.省略表達(dá)式1:#include<stdio.h>main(){inti=1,s=0;for(;i<=99;i++)s=s+i;printf(“s=%d”,s);}2.省略表達(dá)式3:#include<stdio.h>main(){inti,s=0;for(i=1;i<=99;){s=s+i;i++;}printf(“s=%d”,s);}3.同時(shí)省略表達(dá)式1、3#include<stdio.h>main(){inti=1,s=0;for(;i<=99;){s=s+i;i++;}printf(“s=%d”,s);}表達(dá)式2也可以省略但在循環(huán)體中要借助break;語句來實(shí)現(xiàn)循環(huán)的結(jié)束,我們將在后面介紹。注意:表達(dá)式省略,分號(hào)不省略。for語句中的表達(dá)式可以是一切形式的表達(dá)式,逗號(hào)運(yùn)算符參與的表達(dá)式也可以運(yùn)用在for語句中,通常運(yùn)用于表達(dá)式1和表達(dá)式3。如上面的例子可以改寫為:#include<stdio.h>main(){inti,s;for(s=0,i=1;i<=99;s=s+i,i++);printf(“s=%d”,s);}注意此處的分號(hào)。

此處,表達(dá)式1用逗號(hào)表達(dá)式的形式,給多個(gè)變量賦初值。表達(dá)式3用逗號(hào)表達(dá)式把循環(huán)體也寫入其中。注意表達(dá)式3書寫順序不能交換。例:求1/100+2/99+…+1分析:用變量i從1開始循環(huán),每次增加1;用變量j從100開始循環(huán),每次減少1。累加i/j的值到s中。當(dāng)i>j時(shí)結(jié)束循環(huán)(即i<=j時(shí)繼續(xù)循環(huán))。最后輸出s。程序如下:#include<stdio.h>main(){inti,j;floats=0;for(i=1,j=100;i<=j;i++,j--)s=s+(float)i/j;printf(“\ns=%f”,s);}for、while、do-while的比較

所有需要用到循環(huán)結(jié)構(gòu)的程序,都可以用for、while、do-while中的任何一個(gè)來實(shí)現(xiàn),區(qū)別只在于某些問題用哪種語句更方便。

比如求1+2+…+99的問題我們也可以分別用while與do-while語句編寫如下:用while:#include<stdio.h>main(){inti=1,s=0;while(i<=99){s=s+i;i++;}printf(“\ns=%d”,s);}用do-while:#include<stdio.h>main(){inti=1,s=0;do{s=s+i;i++;}while(i<=99);printf(“\ns=%d”,s);}例:任意輸入一個(gè)自然數(shù),把它反序輸出。(如:原數(shù)為123,輸出321)。分析:此題不確定循環(huán)執(zhí)行的次數(shù),也不涉及一個(gè)規(guī)律變化的變量,一般用while或do-while來編寫。又由于第一次就要判斷輸入的是否是自然數(shù),通常用while來實(shí)現(xiàn)。算法步驟如下:1.定義整型變量a用于存儲(chǔ)輸入的自然數(shù),定義t初值為0用于存放a的反序數(shù),定義i用于依次存放求出的a的每一位的數(shù)值。2.輸入一個(gè)自然數(shù)賦值給變量a3.若a>0,執(zhí)行第4步,否則執(zhí)行第7步4.i=a%105.t=t*10+i6.a=a/10,并返回第3步7.輸出t程序:#include<stdio.h>main(){longa,i,t=0;scanf(“%ld”,&a);while(a>0){i=a%10;t=t*10+i;a=a/10;}printf(“\n%ld”,t);}

在這里由于a的值可能很大所以用到了long型定義變量a,如果希望取到的值更大,可以用unsignedlong型。問:如果a用double型,并把i=a%10改為i=(long)a%10;把a(bǔ)=a/10改為a=(long)a/10可以嗎?答:不可以!!例:有數(shù)列2/3、4/5、6/9、10/15……求此數(shù)列前30項(xiàng)的和。1.初值i=2,j=3,s=0;2.用n從1到30循環(huán)5.輸出s;3.s=s+i/j;4.c=i;i=j+1;j=c+j;算法分析:對(duì)于數(shù)列的題,首先要找出通項(xiàng)公式,或前后項(xiàng)的計(jì)算關(guān)系公式,根據(jù)公式求所需。由于數(shù)列的題一般執(zhí)行次數(shù)能確定,用for語句來編寫比較方便。此題,前后項(xiàng)的關(guān)系是:后一項(xiàng)的分子是前一項(xiàng)的分母加1,后一項(xiàng)的分母是前一項(xiàng)的分子加分母。解題思路是用循環(huán)語句求各項(xiàng),并把值累加,因?yàn)槭乔笄?0項(xiàng)的和,循環(huán)執(zhí)行30次。程序:#include<stdio.h>main(){inti=2,j=3,n,c;floats=0;for(n=1;n<=30;n++){s=s+(float)i/j;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論