C語言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第1頁
C語言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第2頁
C語言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第3頁
C語言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第4頁
C語言循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

循環(huán)結(jié)構(gòu)程序設(shè)計(jì)2內(nèi)容提要概述構(gòu)成循環(huán)的語句

if-goto,while,do-while,for幾種循環(huán)的比較循環(huán)的嵌套Break語句和continue語句36.1概述循環(huán)就是在滿足一定條件時(shí)重復(fù)執(zhí)行一段程序循環(huán)結(jié)構(gòu)兩種形式:當(dāng)型循環(huán):當(dāng)條件成立時(shí)一直執(zhí)行某段程序直到型循環(huán):重復(fù)執(zhí)行某段程序,直到某個(gè)條件為假時(shí)實(shí)現(xiàn)循環(huán)的語句(4種)用goto語句和if語句構(gòu)成循環(huán)用while語句——當(dāng)型循環(huán),先判斷后執(zhí)行用do-while語句——直到型循環(huán),先執(zhí)行后判斷用for語句——多功能46.2goto語句和goto語句構(gòu)成的循環(huán)goto語句:一般形式:goto語句標(biāo)號(hào)語句標(biāo)號(hào):用于定義程序中的某個(gè)位置用標(biāo)識(shí)符表示,不能只用數(shù)字如gotostart(對(duì)),goto4(錯(cuò))goto語句的功能:無條件地轉(zhuǎn)到標(biāo)號(hào)所指的語句goto語句濫用會(huì)破壞結(jié)構(gòu)化,所以應(yīng)少用5用if-goto語句構(gòu)成循環(huán)例6-1計(jì)算#include<stdio.h>voidmain(){intk=1;s=0;loop:if(k<=3){s=s+k;k++;gotoloop;}printf(“s=%d”,s)}66.3while循環(huán)While語句的一般形式執(zhí)行過程while(條件表達(dá)式)

語句S;執(zhí)行語句S表達(dá)式?計(jì)算表達(dá)式初值退出循環(huán)為真為假7如:k=1;while(k<=100){s=s+k;k++}注意:若循環(huán)體中有多條語句,一定要以復(fù)合語句的形式出現(xiàn)循環(huán)前,要給循環(huán)控制變量賦初值在循環(huán)體內(nèi)必須有改變循環(huán)控制變量值的語句循環(huán)體可以為空如while((c=getchar())!=‘A’);循環(huán)控制變量循環(huán)體c=getchar();while(c!=‘A’)c=getchar();循環(huán)控制表達(dá)式8例6-1計(jì)算分析:這是一個(gè)求累加和的問題

s=1+2+3s=0s=s+1s=s+2s=s+3s=0s=s+k當(dāng)前和求和項(xiàng)新和值#include<stdio.h>voidmain(){intk=1;s=0;while(k<=3){s=s+k;k++;}printf(“s=%d”,s)}s和k的初值以及設(shè)置初值的位置96-2讀程序#include<stdio.h>voidmain(){intk,s,n;printf(“entern:”);scanf(“%d”,&n);s=0;k=1;while(k<=n){s+=k;k++;}printf(“sum=%d,n=%d”,s,n);}#include<stdio.h>voidmain(){intk,t,n;printf(“entern:”);scanf(“%d”,&n);t=1;k=1;while(k<=n){s*=k;k++;}printf(“t=%d,n=%d”,t,n);}106-4求100以內(nèi)的奇數(shù)、偶數(shù)之和#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;while(n<100){odd+=n;even+=(n+1);n+=2;}printf(“奇數(shù)和=%d,偶數(shù)和=%d”,odd,even);}分析:偶數(shù)和放在even變量中even=2+4+…+100奇數(shù)和放在odd變量odd=1+3+…+99設(shè)置計(jì)數(shù)器為1While(n<100){odd+=n;even+=(n+1);n+=2;}while(n<=100){if(n%2==0)even+=n;elseodd+=n;n++;}116-5輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)分析:用碾轉(zhuǎn)相除法求最大公約數(shù)對(duì)m和n做取余運(yùn)算,余數(shù)記為a當(dāng)a不等于0時(shí),將m←n,n←a,再作取余運(yùn)算,否則n為最大公約數(shù)最小公倍數(shù)為兩數(shù)之積/最大公約數(shù)12136.4do-while循環(huán)do-while循環(huán)用來實(shí)現(xiàn)直到型循環(huán)一般形式執(zhí)行過程N(yùn)-S圖do語句while(條件表達(dá)式);

執(zhí)行循環(huán)體語句表達(dá)式?退出循環(huán)體為真為假14例6-1計(jì)算#include<stdio.h>voidmain(){intk=1;s=0;

while(k<=3){s=s+k;k++;}printf(“s=%d”,s)}#include<stdio.h>voidmain(){intk=1;s=0;do{s=s+k;k++;}while(k<=3);printf(“s=%d”,s)}156.5for循環(huán)for循環(huán)的一般形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句表達(dá)式2?執(zhí)行語句真假執(zhí)行for循環(huán)之后的語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1表達(dá)式1在進(jìn)入循環(huán)之前求解,相當(dāng)于循環(huán)控制變量賦初值表達(dá)式3相當(dāng)于循環(huán)體的一部分16For循環(huán)的其他形式

表達(dá)式1;for(;表達(dá)式2;表達(dá)式3)語句表達(dá)式1;for(;表達(dá)式2;){語句表達(dá)式3}17說明“表達(dá)式1”省略時(shí),應(yīng)在for語句之前給循環(huán)變量賦初值表達(dá)式2省略時(shí),不判斷循環(huán)條件,將成為死循環(huán),需要在循環(huán)體中引入break語句以退出循環(huán)表達(dá)式3也可以省略,循環(huán)體內(nèi)應(yīng)有使循環(huán)條件改變的語句for(i=1;i<=100;){sum=sum+i;i++;}18同時(shí)省略表達(dá)式1和表達(dá)式3,只有表達(dá)式2,此時(shí)相當(dāng)于while語句。如:表達(dá)式2一般是關(guān)系表達(dá)式(如i<=100)或邏輯表達(dá)式

(如a<b&&x<y),但也可以是數(shù)值表達(dá)式或字符表達(dá)式,只要其值為非零,就執(zhí)行循環(huán)體i=1;for(;i<=100;){sum=sum+i;i++;}i=1;while(i<=100){sum=sum+i;i++;}for(i=1;i-4;i++)s=s+i19例6-8讀程序,判斷程序的功能#include<stdio.h>voidmain(){charc;for(;(c=getchar())!=‘\n’;)putchar(c);putchar(‘\n’);}getchar()僅當(dāng)遇到回車符時(shí)才開始執(zhí)行,從鍵盤緩沖區(qū)中取字符for(;(c=getchar())!=‘\n’;)if((c>=‘a(chǎn)’)&&(c<=‘z’)||(c>=‘A’)&&(c<=‘Z’))putchar(c);206-4求100以內(nèi)的奇數(shù)、偶數(shù)之和#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;

while(n<100){odd+=n;even+=(n+1);n+=2;}printf(“奇數(shù)和=%d,偶數(shù)和=%d”,odd,even);}#include<stdio.h>voidmain(){inteven,odd,n;even=0;odd=0;n=1;

for(;n<100;n+=2){odd+=n;even+=(n+1);}printf(“奇數(shù)和=%d,偶數(shù)和=%d”,odd,even);}216.6循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),構(gòu)成多層循環(huán)三種循環(huán)語句可以相互嵌套(1)while()(2)do(3)for(;;{…{…{

while()

dofor(;;){…}{…}{…}

}while();}}while();22(4)

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

23循環(huán)嵌套的說明嵌套的循環(huán)控制變量不能相同內(nèi)循環(huán)變化快,外循環(huán)變化慢

正確確定循環(huán)體循環(huán)控制變量常與求解的問題掛鉤for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf(“%1d*%ld=%2d”,i,j,i*j);printf(“\n”);}24例6-10:試找出滿足下列條件的所有三位數(shù)其百位數(shù)不大于2將個(gè)位數(shù)與百位兌換,得到的三位數(shù)是原三位數(shù)的兩倍至三倍之間分析:用三重循環(huán)的控制變量分別表示百、十、個(gè)位數(shù)百位數(shù)i取值為1~2十位數(shù)j取值為0~9個(gè)位數(shù)k取值為2~9n=100*i+10*j+km=100*k+10*j+im>=2m且m<3m25例6-10:試找出滿足下列條件的所有三位數(shù)其百位數(shù)不大于2將個(gè)位數(shù)與百位兌換,得到的三位數(shù)是原三位數(shù)的兩倍至三倍之間分析:用一重循環(huán)的控制變量i表示原來的三位數(shù),i=101~299百位數(shù)n1=i/100十位數(shù)n2=(i-n1*100)/10個(gè)位數(shù)n3=i-n1*100-n2*10m=100*n3+10*n2+n1m>=2i且m<3i266.7幾種循環(huán)的比較不提倡用goto語句構(gòu)成循環(huán)關(guān)于循環(huán)的控制while(表達(dá)式)

語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句do語句while(表達(dá)式);

循環(huán)控制條件循環(huán)條件初始化…………修改循環(huán)條件27循環(huán)體的執(zhí)行都可以用break和continue語句提前終止循環(huán)while(表達(dá)式)

語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句do語句while(表達(dá)式);

先判斷條件,循環(huán)體可能一次也不執(zhí)行后判斷條件,循環(huán)體至少執(zhí)行一次功能最強(qiáng),形式最靈活286.8continue和break語句Break語句可以結(jié)束switch結(jié)構(gòu)和三種循環(huán)例子6-12:判斷m是否為素?cái)?shù)分析:素?cái)?shù)就是除了1和它本身之外,不能被其他整數(shù)整除的數(shù)即如果m是素?cái)?shù),則必然不存在大于1的整數(shù)i,t,使得m=i*ti的取值范圍為2~sqrt(m)293031continue語句結(jié)束本次循環(huán),即忽略循環(huán)體中剩余的語句例6-13把100-200之間不能被3整除的數(shù)輸出if(n%3)printf(“%d”,n);326.9程序舉例例6-14用π/4≈1-1/3+1/5-1/7+…公式求π的近似值,直到某一項(xiàng)的絕對(duì)值小于10-4為止。

溫馨提示

  • 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)論