




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計
第5章循環(huán)結(jié)構(gòu)程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)
選擇結(jié)構(gòu)
(分支結(jié)構(gòu))循環(huán)結(jié)構(gòu)無論多么復(fù)雜的程序,一般都是由這三種結(jié)構(gòu)的銜接、復(fù)合或嵌套組成的。while(沒到教室)
邁左腳;
邁右腳;坐在教室上課;
while(沒到教室)
邁左腳;
邁右腳;坐在教室上課;
循環(huán)結(jié)構(gòu)概述邁左腳;邁右腳;邁左腳;邁右腳;邁左腳;邁右腳;邁左腳;邁右腳;……坐在教室上課;
{
}循環(huán)結(jié)構(gòu)——
語句只寫一遍,但可被反復(fù)執(zhí)行多遍獨生子女規(guī)則循環(huán)體被反復(fù)執(zhí)行的部分稱為循環(huán)體是誰循環(huán)體沒寫{},讓我跳著上課去!!while語句while語句while(表達(dá)式)
語句;if(表達(dá)式)
語句;執(zhí)行語句后結(jié)束。執(zhí)行語句后重新計算表達(dá)式,如值非0,再次執(zhí)行語句;如值為0結(jié)束。表達(dá)式的值語句
0非0程序流程圖
射出的箭回旋鏢inti=1;while(i<3){ printf("%d",i); i++;}i:112真1<32<312
33<3假
控制循環(huán)體執(zhí)行次數(shù)
i計數(shù)器while語句inti=1;while(i<3) printf("%d",i); i++;
{
}i:1inti=1;while(i<3) printf("%d",i++);
i:11
122312
經(jīng)過有限次循環(huán),應(yīng)使表達(dá)式的值為0(假),否則會陷入死循環(huán)(也稱無限循環(huán))——循環(huán)體將被計算機(jī)不知疲倦地反復(fù)做下去,永不停止。死循環(huán)1<3真1<3真2<33<3假睡覺:1只羊,2只羊,3只羊…while(!asleep) sheep++;
do-while語句do-while語句do{
邁左腳;
邁右腳;}
while(沒到教室);坐在教室上課;while(沒到教室){
邁左腳;
邁右腳;}坐在教室上課;謹(jǐn)慎魯莽獨生子女規(guī)則do
邁左腳;
邁右腳;while(沒到教室);先判斷,后執(zhí)行
先執(zhí)行,后判斷
邁左腳;邁右腳;邁左腳;邁右腳;邁左腳;邁右腳;邁左腳;邁右腳;……坐在教室上課;
do-while語句do在先,先循環(huán);見while就判條件。do
語句;while(表達(dá)式);此處有;此處有;while(表達(dá)式)
語句;表達(dá)式的值語句
0非0程序流程圖
先判斷,后執(zhí)行
表達(dá)式的值語句
0非0程序流程圖
先執(zhí)行,后判斷
當(dāng)型循環(huán)直到型循環(huán)可能一次也不會被執(zhí)行至少要被執(zhí)行一次while和do-while語句練習(xí)#include<stdio.h>main(){ inti=0,n=0;
do{i++;++i;}while(n!=0);
printf("%d",i);}先執(zhí)行一次!i:0n:0122#include<stdio.h>main(){ inti=0,n=0;
while(n!=0){i++;++i;}
printf("%d",i);}i:0n:0一次也沒有執(zhí)行!0for語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體語句;for語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體語句;分號分號若循環(huán)體有多條語句,必須加{}inti;for(i=1;i<3;i++) printf("%d",i);i:?1真12123假表達(dá)式2循環(huán)體
0非0程序流程圖
表達(dá)式1表達(dá)式3
表達(dá)式1做在先,表達(dá)式2判條件。循環(huán)體罷表達(dá)3,再判條件再循環(huán)。表達(dá)式間分號斷,莫要陷入死循環(huán)。獨生子女規(guī)則for(求職者入職;未到退休年齡;領(lǐng)一個月的工資)
一個月的工作;表達(dá)式1先做,但只做一次;只要執(zhí)行循環(huán)體,后必做表達(dá)式3。例2:輸出1-10各數(shù)的平方。for語句(2)從這種應(yīng)用中,可直接看出循環(huán)次數(shù)。小竅門inti;for(i=1;i<3;i++) printf("%d",i);i=1i=1,2,3,4,…i=1,2
執(zhí)行2次printf("%d",i);其中i分別=1,2
12for(i=1;i<=100;i++)
例1:輸出100遍“Iloveyou!"for(i=1;i<11;i+=1)
for(i=1;i<=100;i++) printf("Iloveyou!\n");for(i=1;i<11;i+=1) printf("%d\n",i*i);for(i=0;i<100;i++) printf("Iloveyou!\n");i=0,2,3,…,99
i=1,2,3,…,10
或i=1,2,3,…,100
for(i=1;i<=10;++i) printf("%d\n",i*i);或for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增量)語句;常用套路:習(xí)題#include<stdio.h>main(){intc=0,k;
for(k=1;k<3;k++)
switch(k){default:c+=k;
case2:c++;break;
case4:c+=2;break;}printf("%d\n",c);}for(k=1;k<3;k++)
k=1k=23求1+2+3+…+100之和用for語句求解sum=1+2+3+…+100。int
sum;sum=sum+1;sum=sum+2;…sum=sum+100;sum=0;累加前必須清零提取公共部分sum=sum+i;i=1,2,3,…,100
for(i=1;i<=100;i++)intsum,i;sum=0;
#include<stdio.h>main(){ printf("sum=%d",sum);}sum=5050
sum=0;清零放錯了位置#include<stdio.h>main(){ intsum,i;
{ sum=0;
} printf("sum=%d",sum);}for(i=1;i<=100;i++)sum=sum+i;prod=prod*i;求10!=10*9*8*…*2*1用for語句求解10!=1*2*3*…*10。int
prod;prod
=prod
*1;prod
=prod
*2;…prod
=prod
*10;prod=1;累乘前必須清1提取公共部分prod=prod*i;for(i=1;i<=10;++i)intprod,i;prod=1;
#include<stdio.h>main(){ printf("10!=%d",prod);}10!=3628800for(i=10;i>=1;i--)或:i=1,2,3,…,10
i=10,9,8,…,1
i:1098...10用for語句求解累加或累乘問題的編程套路是:
sum=0(累加)或1(累乘);for(i=初值;i<=終值;每次i的變化
) sum=sum+或*一項的值;求100以內(nèi)偶數(shù)的和求100以內(nèi)偶數(shù)的和sum=2+4+6+…+100。#include<stdio.h>main(){
intsum,i; sum=0;
for(i=1;i<=100;i++) sum=sum+i; printf("sum=%d",sum);}sum=1+2+3+…+100
#include<stdio.h>main(){
intsum,i; sum=0;
sum=sum+i; printf("sum=%d",sum);}sum=2+4+6+…+100
i=1,2,3,…,100i=2,4,6,…,100
for(i=2;i<=100;i+=2)sum=2550i=i+2sum=0(累加)或1(累乘);for(i=初值;i<=終值;每次i的變化
) sum=sum+或*一項的值;#include<stdio.h>main(){ doublesum=0.0;
inti;求和問題綜合練習(xí)求
for(i=1;i<=100;i++)sum=sum+1/i;sum=sum+1.0/i;#include<stdio.h>main(){ doublesum=0.0;
inti; printf("sum=%f",sum);}sum=5.18738求分母:1,2,3,…,100分子:1分母:1,2,3,…,100for(i=1;i<=100;i++)分子:1/-1doublej=1.0;sum=sum+j/i;j=-j;
{} printf("sum=%f",sum);}sum=0.688172for
(i=1;i<=100;i++){
if
(i%2==1)j=1.0;
else
j=-1.0; sum=sum+j/i;}if(i%2)sum=0(累加)或1(累乘);for(i=初值;i<=終值;每次i的變化
) sum=sum+或*一項的值;for語句中省略表達(dá)式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體語句;for語句中的3個表達(dá)式均可省略,但;不可省。
省略表達(dá)式1:不執(zhí)行表達(dá)式1,直接進(jìn)入表達(dá)式2判斷循環(huán)條件;for(;i<=10;i++) printf("%d\n",i);
省略表達(dá)式3:執(zhí)行循環(huán)體后不執(zhí)行表達(dá)式3,直接計算表達(dá)式2
決定是否繼續(xù)循環(huán);for(i=1;i<=10;i++) printf("%d\n",i);for(i=1;i<=10;){ printf("%d\n",i);
}
省略表達(dá)式2:永真——死循環(huán),除非使用break;語句強(qiáng)行跳出;for(i=1;;i++){ printf("%d\n",i);}for(;;){
printf("%d\n",i);
}3個表達(dá)式均省略
12345678910i=1;i++;if(i>10)break;i++;if(i>10)break;i=1;for語句中使用逗號表達(dá)式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)體語句;3個表達(dá)式還可以是逗號表達(dá)式
sum=0;
for(i=1;i<=100;i++)sum=sum+i;for(sum=0,i=1;i<=100; ) ;sum=sum+i,i++表達(dá)式1表達(dá)式3
for(sum=0,i=1;i<=100;
);sum=0;for(i=2;i<=100;
i+=2) sum=sum+i;sum=0;for(i=2;i<=100;
i++,i++) sum=sum+i;求sum=2+4+6+…+100sum=sum+i,i++sum+=i++sum=sum+i++循環(huán)語句小結(jié)C語言提供了3種實現(xiàn)循環(huán)的語句
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
語句;do
語句;while(表達(dá)式);此處有;此處有;while(表達(dá)式)
語句;sum=0;for(i=1;i<=100;i++) sum=sum+i;sum=0;i=1;while(i<=100){sum=sum+i;i++;}
求sum=1+2+3+…+100三種循環(huán)語句適合使用的場合不同;在編程時具體使用哪種語句無一定之規(guī),這三種語句一般也可以相互代替也可用while語句實現(xiàn):要實現(xiàn)死循環(huán)有幾種做法?while(1)
語句;do
語句;while(1);for(表達(dá)式1;
1;表達(dá)式3)
語句;for(表達(dá)式1;;表達(dá)式3)
語句;以上的1任意寫為一個非0值均可。循環(huán)的嵌套循環(huán)的嵌套(1)三種循環(huán)既可以自身嵌套,
也可以互相嵌套。嵌套時必須將一個完整的循
環(huán)整體放在另一個循環(huán)體內(nèi)。for(…;…;…){
while(…) { … }}while(…){
while(…) { … }}while(…){
do
{ … }while(…);}for(…;…;…){
for(…;…;…) { … }}do{
for(…;…;…) { … }}while(…);do{
do { … }while(…);}while(…);循環(huán)的嵌套(2)for(時針=1;時針<=12;時針++)外層循環(huán)(時針循環(huán))內(nèi)層循環(huán)(分針循環(huán))是外層循環(huán)的循環(huán)體中的一條語句外層走一步內(nèi)層完整走一輪一小時過去了;==for(分針=1;分針<=60;分針++)
一分鐘過去了;一小時過去了;#include<stdio.h>main(){
inti,j; for(i=1;i<=2;i++) {
printf("\n"); }}#include<stdio.h>main(){ inti,j; for(i=1;i<=2;i++) { printf("\n"); }}
for(j=1;j<=3;j++) printf("*");循環(huán)嵌套程序例*i:1j:12**3***4;21****2*****3******43被執(zhí)行了2次(i=1,2)每執(zhí)行一次,要完整走一輪j循環(huán):printf("*");
被執(zhí)行3次printf("*");
共被執(zhí)行了3×2=6次。i j1 11 21 32 12 22 3i j1 12 2內(nèi)外層循環(huán)變量一般要不同(i,j)for(i=1;i<=2;i++) printf("*");for(j=1;j<=3;j++) printf("*");*****練習(xí)main(){
inti,j,sum=0; for(i=1;i<5;i++)
for(j=1;j<4;j++) sum++; printf("%d",sum);}12i=1,2,3,4外層循環(huán)4次,
被執(zhí)行4次;i j1 11 21 32 12 22 33 13 23 34 14 24 3sum++;
在i、j分別為右側(cè)值時被執(zhí)行:for(i=1;i<5;i++) sum++;for(j=1;j<4;j++) sum++;7
每被執(zhí)行一次,j=1,2,3,sum++被執(zhí)行3次;#include<stdio.h>main(){
intm,n; scanf("%d%d",&m,&n);
while(m!=n) {
while(m>n)m=m-n;
while(m<n)n=n-m; } printf("%d\n",m);}#include<stdio.h>main(){ intm,n; scanf("%d%d",&m,&n); while(m!=n) {
while(m>n)m=m-n;
while(m<n)n=n-m; } printf("%d\n",m);}練習(xí);;程序運行后,輸入1463<回車>輸出結(jié)果是_________
m:?n:?_1463146349352177146377break語句和continue語句break語句和continue語句break:跳出整個循環(huán)。本次循環(huán)結(jié)束,后續(xù)的循環(huán)也不再執(zhí)行。continue:結(jié)束本次循環(huán),轉(zhuǎn)到循環(huán)的開始判斷是否執(zhí)行下一次循環(huán)。continue只是繞開了本次循環(huán)尚未執(zhí)行的語句,下次循環(huán)還可能要執(zhí)行。while(隊列中還有未結(jié)賬的顧客){ 掃描商品條形碼;
if(錢包忘帶了)continue;
付款;
領(lǐng)小票;
取商品離開超市;}while(還有未查毒的文件){
準(zhǔn)備檢查第i個文件...;
if(“跳過此文件"被按下)continue;
if(殺毒軟件被關(guān)閉)break;
檢查第i個文件是不是病毒;}跳過此文件continuebreakbreak語句的程序例計算sum=1+2+3+…+i,求i等于多少時,sum的值大于5000。#include<stdio.h>main(){inti,sum;sum=0;
for(i=1;;i++){ sum=sum+i;
if(sum>5000)break;}printf("sum=%d\n",sum);printf("i=%d",i);}循環(huán){
累加下一個值;
}sum=5050i=100
if(夠5000了)break;退出循環(huán)有兩種方法:(1)逐漸變化的循環(huán)變量的值不滿足某條件時退出循環(huán);(2)通過break;
語句隨時可以跳出循環(huán)。continue語句詳解用于while語句中:跳轉(zhuǎn)到while(表達(dá)式),然后判斷表達(dá)式為真或假,決定是否繼續(xù)下一次循環(huán)。用于do-while語句中:跳轉(zhuǎn)到while(表達(dá)式),然后判斷表達(dá)式為真或假,決定是否繼續(xù)下一次循環(huán)。用于for語句中:跳轉(zhuǎn)到表達(dá)式3,先計算表達(dá)式3,然后再判斷表達(dá)式2為真或假,決定是否繼續(xù)下一次循環(huán)。continuefor(表達(dá)式1;表達(dá)式2;表達(dá)式3){
語句;
continue;
語句;}do{
語句;
continue;
語句;}while(表達(dá)式);while(表達(dá)式){
語句;
continue;
語句;}向上跳向下跳暴力破解密碼#include<stdio.h>main(){
intpw;inti; printf("請輸入一個6位數(shù)以內(nèi)的密碼:"); scanf("%d",&pw);
for(i=0;i<=999999;i++)}if(i==pw){ printf("小樣!你密碼被破解了,是%d\n",i);
break;}
請輸入一個6位數(shù)以內(nèi)的密碼:123456
小樣!你密碼被
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年湖北漢江集團(tuán)丹江口水源招標(biāo)有限公司招聘考試真題
- 2025年度實習(xí)生實習(xí)期間人身意外傷害保險合同
- 文化藝術(shù)中心裝修設(shè)計
- 2025年度商場租賃及增值服務(wù)合同
- 2025年進(jìn)水管項目投資可行性研究分析報告-20241226-212502
- 2025年度農(nóng)村土地承包經(jīng)營權(quán)流轉(zhuǎn)與農(nóng)產(chǎn)品品牌建設(shè)合同
- 游泳池裝修保修協(xié)議
- 2025年度建筑企業(yè)會計代賬工程項目成本核算協(xié)議
- 2025年度文化演藝活動委托代理協(xié)議書條款解析及風(fēng)險控制
- 2025年度旅游度假村物業(yè)管理公司服務(wù)標(biāo)準(zhǔn)合同
- 2024-2025學(xué)年第二學(xué)期教學(xué)教研工作安排表 第二版
- 開展課外讀物負(fù)面清單管理的具體實施舉措方案
- 人體的免疫系統(tǒng)課件
- 六年級下學(xué)期開學(xué)第一課
- 體育原理課件
- 公路工程項目隱隱蔽工程管理辦法
- PCCP安裝與水壓試驗
- 中國民間藝術(shù) ppt課件
- 景觀生態(tài)學(xué)教學(xué)大綱(共10頁)
- 電子舌技術(shù)在普洱茶品質(zhì)識別中應(yīng)用的研究
- 鍛件的結(jié)構(gòu)設(shè)計與工藝性分析
評論
0/150
提交評論