




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
本章主要內(nèi)容
?用got。語句實現(xiàn)循環(huán)控制
?while循環(huán)控制
?do-while循環(huán)控制
?for循環(huán)控制
?循環(huán)結構中的跳轉語句
?循環(huán)的嵌套
?循環(huán)結構程序設計舉例
c
CC
2011-7-7
6.1goto語句及用goto構成循3
goto語句一般格式:
goto語句標號;
?????????
標號:語句;
。功能:無條件轉移語句
?:?說明:
不能用整數(shù)作標號
只能加在可執(zhí)行語句前面
可與if一起構成循環(huán)
限制使用goto語句
例如:4
【例6」】編寫程序,求100個自然數(shù)的和
即:s=1+2+3+...+100
思路:尋找加數(shù)與求和的規(guī)律
加數(shù)i——從1變到100,每循環(huán)一次,使i增1,
直到i的值超過100。i的初值設為1。
求和---設變量sum存放和,循環(huán)求
sum=sum+i,直至i超過100。
/一
I
CC
2011-7-7
用if和goto語句構成循
2011-7-7
?灌意:
goto語句怩實現(xiàn)程序無條件挎移,,編程
梃供了便利。便是無限制地使用,會破壞
程序的修構化程度。因此或限制使用。
CC
2011-7-7
6.2while循環(huán)控制7
?語句'一'般格式
while(表達式)循環(huán)體語句
?一般為關系表達式?稱為內(nèi)嵌語句,
或邏輯表達式,也可以是基本語句、
可以是C語言其他控制語句,也可
類型的合法表達式以是復合語句
?用來控制循環(huán)體是?是循環(huán)重復執(zhí)行
否執(zhí)行的部分
2011-7-7
功能:8
?計算表達式的值,為非0(邏輯真)時,重復執(zhí)
行內(nèi)嵌語句,每執(zhí)行一1次,就判斷一1次表達式
的值,直到表達式的值為0時結束循環(huán),轉去執(zhí)
行while后面的語句。
循環(huán)控制條件
N-S結構圖
當表達式為真
|語句]
T~「
循和體
2011-7-7
9
。特點:先判斷表達式,后執(zhí)行循環(huán)體
?:?說明:
循環(huán)體有可能一次也不執(zhí)行
循環(huán)體可為任意類型語句
下列情況,退出while循環(huán)
?條件表達式不成立(為零)
?循環(huán)體內(nèi)遇break,return,goto
?無限循環(huán):while(l)
循環(huán)體;
/一
I
CC
2011-7-7
例如:10
【例6.2】用while編寫程序,求100個自然數(shù)的和
2011-7-7
注意:11
?如果while的(表達式)值為0,則循環(huán)體一
次也不執(zhí)行(例如當i的初值=101)o
?在循環(huán)體中必須有使循環(huán)趨向結束的操作,
否則循環(huán)將無限進行(死循環(huán))。
?在循環(huán)體中,語句的先后位置必須符合邏
輯,否則會影響運算結果。
思考程序段的輸出?
while(i<=100)運行后,輸出:
{i++;sum=5150
sum=sum+i;}原因是什么?
2011-7-7
12
【例6.3]顯示1?10的平方
/*ch5_21.c*/運行結果:
#include<stdio.h>1*1=1
2*2=4
main()
3*3=9
{inti=1;4*4=16
while(i<=10)5*5=25
{printf("%d*%d=%d\n",i,i,i*i);6*6=36
i++;7*7=49
8*8=64
)
9*9=81
10*10=100
2011-7-7
6.3do?while語句13
?語句'一般格式
do
{循環(huán)體語句}
while(表達式);
?功能:
-先執(zhí)行內(nèi)嵌語句(循環(huán)體),之后計算
表達式的值,不為0(邏輯真)時,再
執(zhí)行循環(huán)體并判斷條件,直到表達式的
值為0結束彳后訴,轉去執(zhí)行w屈下面
的語句。八'—「
CcC
2011-7-7
dowhile循環(huán)的算法14
流程圖N-S結構圖
{sum=sum+i;
用dowhile語句i++;
求100個自然數(shù)的和}while(i<=100);
printf("%d\r汽s/n);
2011-7-7
說明:15
?while和do?while都能實現(xiàn)循環(huán)控制,while
結構程序通常都可以轉換成dowhile結構
?區(qū)別:
-do-while語句先執(zhí)行循環(huán)體再判斷條
件,循環(huán)體至少執(zhí)行一次;
-while語句先判斷條件再執(zhí)行循環(huán)體,
循環(huán)體有可能一次也不執(zhí)行
?do—while和while循環(huán)體中一定要有能使表二
達式值趨于0的操作(如i++),否則會出現(xiàn)死
循環(huán)。Z「「
C
2011-7-7
16
例while和do?while比較
#include<stdio.h>#include<stdio.h>
main()mainQ
{inti,sum=0;{inti,sum=0;
nnnn
scanf(%d9&i);scanf(%d9&i);
dowhile(i<=10)
{sum+=i;{sum+=i;
i++;i++;
}while(i<=10);
nnn
printf(%d9sum);printf(%d"9sum);
當輸入的i值小于或等于10時,二者得到結果才謝'\咋當4>10
時,結果就不同了,此時對while循環(huán),一次也不莪存循耳體「
對do-while循環(huán)來說則要執(zhí)行一次循環(huán)體。。c
2011-7-7
do?while語句的簡單應用17
例6.4】用輾轉相除法求m和n的最大公約數(shù)
「C
2011-7-7
算法和程序:
main()
{intm,n,r;
scanf(M%d,%d,,,&m,&n);
if(m<n)
{r=m;m=n;n=r;}
do
{r=m%n;程序運行情況如下:
m=n;24,60/
n=r;
}while(r!=0);12
printf("%d\rT,m)
}
Cc
2011-7-7
6.4for語句19
?功能:
-計算表達式1的值,再判斷表達式2,如果其
值為非0(邏輯真),則執(zhí)行內(nèi)嵌語句(循環(huán)
體),并計算表達式3;之后再去判斷表年式2,
一直到其值為0時結束循環(huán),執(zhí)行后續(xù)語句入「
2011-7-7
for語句的算法20
流程圖N?S結構圖
計算表達式1for(表達式1;表達式2;表達式3)
語句
例如:可部分或全部省略,
main()但不可省略
語句{inti,sum;
sum=0;
計算表達式3for(i=1;i<=100;i++)/
sum=sum+i;
printf("sum=%d\n^surrQ;
2011-7-7
21
⑴表達式1、2、3全省略,即:
for(;;)
就等同于:while(1),會無限循環(huán)(死循環(huán))
⑵省略表達式1和表達式3,即:
for(;表達式2;)
就等同于:while(表達式2)
(3)省略表達式2,即:
for(表達式1;;表達式3)
就等同于:表達式1;whilefl){…表達式3;廠\
注意:在省略某個表達式時,應在適當位置進行循、
環(huán)控制的必要操作,以保證循環(huán)的正確執(zhí)行
2011-7-7
22
(1)i=1;
for(;i<=100;i+?sum+=i;
⑵for(i=1;;i++)
{...if(i>100)...
-}
(3)for(i=1;i<=100;)
{…i++;…}
(4)i=1;
for(;;)
{...if(i>100)...
i++;...}cc
2011-7-7
說明:23
?所有用while語句實現(xiàn)的循環(huán)都可以用
for語句實現(xiàn)。
for(表達式1;表達式2;表達式3)
語句;
等價于:
表達式1;
while(表達式2)
{語句;
表達式3;
}C
2011-7-7
□
2011-7-7
25
main()
102.c
{intijk;
for(i=05j=100;i<=j;i++J-)
{k=i+j;
printf(n%d+%d=%d\nf\ij,k);
If
#include<stdio.h>Ch5104.c
main()#include<stdio.h>
{charc;main()
for(;(c=getchar())!=t\n!{inti,c;
printf(,T%c!\c);for(i=0;(c=getchar())!='\n';i+=3
)printf(n%c!\i+c);
)
n2011-7-7
Ch5103.c
for語句的簡單應用26
【例6.5】求n!,即計算p=1X2X3X…Xn
的值。
思路:求階乘與求累加的運算處理過程類似,只要
將變?yōu)椤?/p>
設置:
?乘數(shù)i,初值為L終值為n(n是循環(huán)控制終
值,需要從鍵盤輸入)
?累乘器p,每次循環(huán)令p=p*i/
CC
2011-7-7
程序:27
main()
{inti,n;longp;
P=1;
printfC'Entern:M);
scanf("%d\&n);
for(i=1;i<=n;i++)
p=p*i;
printfC'p=%ld\nM,p);
}思考:
?如何輸出1!,2!,…,n!?
?如何求s=1!+2!+.??+n!?c
2011-7-7
28
?while(!x)x++;
當x=0時,執(zhí)行循環(huán)體x++;
?while((c=getchar())!=’\rT)n=n+1;
n稱為計數(shù)器,作用是統(tǒng)計輸入字符的個數(shù)
?while(num++<=2);printf("%d\rT,num);
循環(huán)體是空語句,退出循環(huán)后輸出num的值
?dox*=-3;while(x>5);
先執(zhí)行循環(huán)體x*=?3,再判斷條件(x>5)
?for(n=0;n<26;n++)printf(li%c",n+W);
作用是輸出26個大寫字母「
?for(sum=0,i<=100;sum=sum講1產(chǎn)2);
作用是計算100以內(nèi)的奇數(shù)和。
2011-7-7
七種循環(huán)語句的比較29
?while和do-while語句的表達式只有一個,for語
句有三個。
?while和for先判斷循環(huán)條件后執(zhí)行循環(huán)體,do-
while語句先執(zhí)行循環(huán)體后判斷循環(huán)條件。
while語句多用于循環(huán)次數(shù)不定的情況
dowhile語句多用于至少要運行一次的情況
for語句多用于要賦初值或循環(huán)次數(shù)固定的情況
c
c
C
2011-7-7
30
求00中能被3整除的數(shù)。
#include<stdio.h>
main()
(
inti,n=0;
i=1;
while(i<=100)
(
if(i%3==0)
{n++;
printf("%d
i++;
)
printf(i,\n%d,i,n);
)2011-7-7
6.5循環(huán)的嵌套31
?如果循環(huán)語句的循環(huán)體內(nèi)又包含了另'一'條
循環(huán)語句,則稱為循環(huán)的嵌套
?例如:
#include<stdio.h>,運行jc5_a
main()
{intij;外循環(huán)語句
for(i=1;i<10;i++)
內(nèi)循環(huán)語句
for(j=1;j<=i;j++)二
printf(0==i)?|,%4d\n,,:,,%4d,,,i*j);二
c
2011-7-7
32
★循環(huán)的嵌套
?野三種循環(huán)可直柑展罷數(shù)不限
。外層循環(huán)可包含兩個以上內(nèi)循環(huán),但不能相互交叉
?:?嵌套循環(huán)的執(zhí)行流程
。嵌套循環(huán)的跳轉
禁止:
從外層跳入內(nèi)層
跳入同層的另一循環(huán)
向上跳轉
(1)while()(2)do(3)while()
whileCdo
}while(}while(
}while();
-7
33
例循環(huán)嵌套,輸出九九表
#include<stdio.h>
mainQ
l{intij;
for(i=l;i<10;i++)
printf("%4d”,i);
printf(n\n---------------------------------------\nn);
for(i=l;i<10;i++)
for(j=l;j<10;j++)
printf((j==9)?"%4d'n":"%4d",i*j);
c
CC
2011-7-7
for(i=l;i<10;i++)34
for(j=l;j<10;j++)
printf((j==9)?''%4d\n'':''%4d'',i
■2011-7-7
6.6循環(huán)結構中的跳轉語句35
?有如下三種語句實現(xiàn)跳轉:
-continue語句
-break語句
_goto語句
?在循環(huán)語句的循環(huán)體中使用,可以進行
循環(huán)的流程控制
2011-7-7
6.6.1循環(huán)中break的應用36
?功能:
-利用break語句能夠強迫終止本層循環(huán),
轉到后續(xù)語句執(zhí)行。
例如:37
例break舉例:輸出圓面積,面積大于100時停止
#definePI3.14159
main()
{,
intr;
思考題:計算當floatarea;
1+2+3+…=666fdr(r=1;r<=10;r++)
{area=PI*r*r;
時,被加數(shù)是多少?
if(area>100)
break;
nn
printf(r=%d9area=%.2f\n9r9area);
38
例break舉例:小寫字母轉換成大寫字母,直至輸入非小寫字母字符
#include<stdio.h>
main()
Ch5_100.c
intij;
charc;
while(1)
{c=getchar();
i*c>='a'&&c〈='z')
putchar(c-'a'+'A');
else
break;
}
□
Cc
2011-7-7
6.6.2continue語句及應用39
?功能:
-中斷循環(huán)體的本次執(zhí)行(即跳過循環(huán)體中尚
未執(zhí)行的語句),開始進行下一次是否執(zhí)行
循環(huán)體的判斷。
應用舉例40
【例6.6】把100?200之間能被7整除的數(shù),
以十個數(shù)為一行的形式輸出,最
后輸出一共有多少個這樣的數(shù)。
2011-7-7
系法和程序
main()
{intn,j=O;
for(n=100;n<=200;n++)
{if(n%7!=0)
continue;
printf(''%6cT,n);
j++;
if(j%10==0)
printf(''\rT);
}
printf(M\nj=%d\n,,J);
}
42
例求輸入的十個整數(shù)中正數(shù)的個數(shù)及其平均值
#include<stdio.h>
main()
{inti,num=O,a;
floatsum=0;
for(i=0;i<10;i++)
{scanf(n%d!\&a);
if(a<=0)continue;
num++;
sum+=a;
printf(!l%dplusinteger'ssum:%6.0f\n!\num,sum);
printf(nMeanvalue:%6.2^n!\sum/num);
)
2011-7-7
6.7循環(huán)結構程序設計43
【例67]按每行輸出4個數(shù)的形式輸出
Fibonacci數(shù)歹U的前40項。
思路:Fibonacci數(shù)列的前幾項是:1、1、2、3、5、
8、13、21、34、…。此數(shù)列的變化規(guī)律是:
1(n=l)
?這是一種遞推算法
1(n=2)
?應采用循環(huán)實現(xiàn)
fn-l+fn-2(心=3
?設變量f1、f2,并為f1和f2賦初值1,令fkf1+f2
得到第3項,令f2=f2+f1得到第4項;1
?依此類推求第5項、第6項…尸_
C
2011-7-7
44
fl=l,f2=l1123
581321
fori=lto20345589144
輸出口,此233377610987
1597258441816765
fl=fl+f210946177112865746368
f2=f2+fl75025121393196418317811
51422983204013462692178309
35245785702887922746514930E、
241578173908816963245?晚102334155
循環(huán)體中的f2=f2+f1是否可以省略?
2011-7-7
程序45
main()
{longinti,f1,f2;
intI;
f1=f2=1;
for(i=1;i<=20;i++)
printf(”\n%121d%12ld,,,f1J2);
if(i%2==0)printfC'ln11);
f1=f1+f2;
f2=f2+f1;
)
)ClC
I
2011-7-7
舉例246
【例6.8】判斷輸入的某個數(shù)m是否為素數(shù)。
若是素數(shù),輸出“YES”,若不是,
輸出“NO”。
思路:素數(shù)是指只能被1和它本身整除的數(shù),如
5、7、11、17、…等。
?分別用2、3、…,嘗試能否整除整數(shù)m。
如果m能被某個數(shù)整除,則m就不是素數(shù)。
?這是一種窮舉算法
?設除數(shù)為j,從2循環(huán)到m1實匚
際到m的平方根就可以了'「「
C
2011-7-7
算法和程序:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中專升大專的試題及答案
- 2019-2025年軍隊文職人員招聘之軍隊文職教育學題庫綜合試卷A卷附答案
- 2019-2025年消防設施操作員之消防設備中級技能考前沖刺試卷A卷含答案
- 2022-2023學年廣東省廣州二中教育集團七年級(下)期中數(shù)學試卷(含答案)
- 遺產(chǎn)繼承遺產(chǎn)分配爭議解決合同(2篇)
- 采購與分包責任劃分合同(2篇)
- 2023年云南公務員《行政職業(yè)能力測驗》試題真題及答案
- 奢侈品知識培訓課件圖片
- 2025年法律知識競賽搶答題庫及答案(共70題)
- 急診科急救知識培訓課件
- 2025年中考百日誓師大會校長發(fā)言稿:激揚青春志 決勝中考時
- YY/T 1860.1-2024無源外科植入物植入物涂層第1部分:通用要求
- 中央2025年全國婦聯(lián)所屬在京事業(yè)單位招聘93人筆試歷年參考題庫附帶答案詳解
- 人教版高中物理選擇性必修第二冊電磁波的發(fā)射與接收課件
- 《建筑冷熱源》全冊配套最完整課件1
- 廣州2025年廣東廣州市番禺區(qū)小谷圍街道辦事處下屬事業(yè)單位招聘5人筆試歷年參考題庫附帶答案詳解
- 2025年春新人教版生物七年級下冊全冊教學課件
- 【物理】《跨學科實踐:制作微型密度計》(教學設計)-2024-2025學年人教版(2024)初中物理八年級下冊
- 2024年湖南高速鐵路職業(yè)技術學院高職單招數(shù)學歷年參考題庫含答案解析
- 封條模板A4直接打印版
- 單細胞蛋白論文
評論
0/150
提交評論