




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章程序控制
提綱
N4.1switch多路選擇結(jié)構(gòu)
4.2循環(huán)的本質(zhì)
4.3計(jì)數(shù)器控制的循環(huán)
4.4for循環(huán)結(jié)構(gòu)
N4.5break和continue語(yǔ)句
4.6邏輯運(yùn)算符
4.7相等測(cè)試運(yùn)算符==和賦值運(yùn)算符=
4.8結(jié)構(gòu)化程序設(shè)計(jì)小結(jié)
switch多路選擇結(jié)構(gòu)
if(day=0)
語(yǔ)句有單分支和雙分支結(jié)
?ifprintf("SundayW);
構(gòu)elseif(day=l)
?考慮下面要求:變量day取printf("Monday"');
值為0?6,0代表周日、elseif(day=2)
1~6代表周一到周六。輸prints“Tuesday\n");
出要求:當(dāng)day==O時(shí)輸elseif(day=3)
出“Sunday”,day==l時(shí)printf("Wednesday^");
輸出“Monday”...elseif(day==4)
prints“Thursday'n");
?這種多分支的選擇結(jié)構(gòu)可elseif(day=5)
以使用switch語(yǔ)句來(lái)實(shí)現(xiàn)。printf("Friday"');
elseif(day=6)
print4“Saturday\n");
else
print4"In兩國(guó)@叫
4.1switch多路選擇結(jié)構(gòu)
用某個(gè)表達(dá)式單獨(dú)測(cè)試每一個(gè)可能的整數(shù)值常
量,然后做出相應(yīng)的動(dòng)作。
Lswitch語(yǔ)句的一般形式
switch(表達(dá)式){
case常量表達(dá)式1:語(yǔ)句組;break;
case常量表達(dá)式2:語(yǔ)句組;break;
case常量表達(dá)式n:語(yǔ)句組;break;
[default:語(yǔ)句組;[break;]]
4.1switch多路選擇結(jié)構(gòu)
執(zhí)行過(guò)程
———%---------------------------------------.
(1)計(jì)算switch后面“表達(dá)式”的值,當(dāng)其
與某個(gè)case后面的“常量表達(dá)式”的值相同時(shí),就
執(zhí)行該case后面的語(yǔ)句(組);當(dāng)執(zhí)行到break語(yǔ)行
時(shí),跳出switch語(yǔ)句,轉(zhuǎn)向執(zhí)行switch語(yǔ)句后的下一
條語(yǔ)句。
(2)如果沒(méi)有任何一個(gè)case后面的“常量表
達(dá)式”的值與“表達(dá)式”的值匹配,則執(zhí)行default
后面的語(yǔ)句(組)。然后,再執(zhí)行switch語(yǔ)句后的
下一條語(yǔ)句。
7.如果不是判斷表達(dá)式等于某個(gè)值,而是
判斷表達(dá)式的值在某個(gè)范圍內(nèi),如:
if(i>=-10&&i<=10)
main()
printf(nAn);
(
intday;elseif(i>10&&i<=20)
nM
scanf(n%dn,&day);printf(B);
switch(day){elseif(i>20&&i<=30)
case0:printf(nSuprintf(nCM);
case1:printf(nMelse
case2:printf(nTiprintf(nDM);
case3:printf(nW則不能用switch語(yǔ)句。
case4:printf(nTl
case5:printf(nFriuay\uj;ureaK;
case6:printf(nSaturday\nn);break;
default:printf(nInvalidday!\nn);break;
system(npausen);
return0;
4.1switch多路選擇結(jié)構(gòu)
不要忘記break,除當(dāng)輸入為6時(shí),輸出為:
舊你真的是不需要。Saturday
intday;
scanf(n%dn,&day);Invalidday!
switch(day){
當(dāng)輸入為7時(shí),輸出為:
case0:printf(nSunday\nn);
case1:printf(nMonday\nn);Invalidday!
case2:printf(nTuesday\nn);
case3:printf(nWednesday\nn)case后面的常量表達(dá)式僅起語(yǔ)句
case4:printf(nThursday\nn);標(biāo)號(hào)作用,并不進(jìn)行條件判斷。
case5:printf(nFriday\nn);系統(tǒng)一旦找到入口標(biāo)號(hào),就從此
case6:printf(nSaturday\nn);標(biāo)號(hào)開始執(zhí)行,不再進(jìn)行標(biāo)號(hào)判
n
default:printf(Invalidday!\n'斷,直到遇到break,或者到
switch語(yǔ)句結(jié)束。
system(npausen);
4.1switch多路選擇結(jié)構(gòu)
switch(grade){
多個(gè)case子句,可case'A:
共用同一語(yǔ)句
(組),表示這些case'a':printf(“85?100\n");break;
條件有同一組操作ccase'B':
caseb:printf(“70?84'n");break;
當(dāng)grade為'A'或
者時(shí),均輸case'C':
出85/00case'c':printf(u60-69\n,J);break;
case'D':
case'd':printf(ubelow60\n,J);break;
default:printf(uinputerror!\nJ,);
)
節(jié)選教材86頁(yè)例題
while((grade=getchar())!=EOF){/*CTRL+Z組合鍵表示EOF,值為一1*/
switch(grade){
case'Atcase'a,:/*成績(jī)?yōu)?A'或'a'*l.getchar():從鍵盤讀
aCount++;取一個(gè)字符;
break;2.case'A':ca§e'a':
case'B':case'b':/*成績(jī)?yōu)锽'或'b'*aCount++;
bCount++;
break;break;
case,C:caseP:/*成績(jī)?yōu)?C'或*)相當(dāng)于
cCount++;case'A':
break;case'a’:
case'nlcase—:/*輸入為空格或換行刃aCount++;
break;
default:break;
printf(nIncorrectlettergradeentered.0);
printf(nEntereanewgrade.\nn);
}/*switch*/
}/*while*/
4.1switch多路選擇結(jié)構(gòu)
?練習(xí):輸入年份和月份,輸出該年截至該月共
有多少天。要求在判斷某個(gè)月有多少天時(shí)用
switch語(yǔ)句o
閏年的判斷條件:
year能被4整除但不能被100整除;或者能被
400整除。
#include<stdio.h>
#include<stdlib.h>
main()
(
intyear,month,day;
intyearDaysj;
printf(ninputyear-month-day:\nn);
nn
scanf(%d-%d-%d,&year,&month9&day);
yearDays=0;
for(i=1;i<=month-1;i++){
〃求第i月的天數(shù)
switch(i){
casel:case3:case5:case7:case8:case10:case12:
yearDays+=31;break;
case4:case6:case9:case11:
yearDays+=30;break;
case2:
if(year%4==0&&year%100!=0||year%400==0)
yearDays+=29;
else
yearDays+=28;
break;
default:
printf("invalidmonth!");
)
)
printf(Hthedaysare%dH,yearDays+day);
system(HpauseH);
提綱
N4.1switch多路選擇結(jié)構(gòu)
4.2循環(huán)的本質(zhì)
4.3計(jì)數(shù)器控制的循環(huán)
4.4for循環(huán)結(jié)構(gòu)
N4.5break和continue語(yǔ)句()
4.6邏輯運(yùn)算符
4.7相等測(cè)試運(yùn)算符==和賦值運(yùn)算符=
4.8結(jié)構(gòu)化程序設(shè)計(jì)小結(jié)
4.2循環(huán)的本質(zhì)
“循環(huán):在循環(huán)條件為真時(shí)反復(fù)執(zhí)行的一組指令:
循環(huán)分成兩類:
1)計(jì)數(shù)器控制的循環(huán);
2)標(biāo)記控制的循環(huán);
IJ
4.2循環(huán)的本質(zhì)
一、計(jì)數(shù)器控制的循環(huán)
?事先知道循環(huán)次數(shù),又稱“定數(shù)循環(huán)”;
?用控制變量來(lái)計(jì)算循環(huán)的次數(shù)??刂谱兞康闹?/p>
在每次執(zhí)行完一組循環(huán)指令后遞增(或遞減)。
當(dāng)控制變量的值達(dá)到預(yù)定的循環(huán)次數(shù)時(shí),循環(huán)
終止并繼續(xù)執(zhí)行循環(huán)結(jié)構(gòu)后面的語(yǔ)句。
4.2循環(huán)的本質(zhì)
二、標(biāo)記控制的循環(huán)
?事先不知道循環(huán)次數(shù),又稱“不定數(shù)循環(huán)”;
A標(biāo)記值表示獲取數(shù)據(jù)的結(jié)束。標(biāo)記值是在所有
合法數(shù)據(jù)項(xiàng)都提供給程序后鍵入的值,必須不
同于正常的數(shù)據(jù)項(xiàng)。
提綱
74.1switch多路選擇結(jié)構(gòu)
4.2循環(huán)的本質(zhì)
4.3計(jì)數(shù)器控制的循環(huán)
4.4for循環(huán)結(jié)構(gòu)
N4.5break和continue語(yǔ)句
4.6邏輯運(yùn)算符
4.7相等測(cè)試運(yùn)算符==和賦值運(yùn)算符=
4.8結(jié)構(gòu)化程序設(shè)計(jì)小結(jié)
4.3計(jì)數(shù)器控制的循環(huán)
計(jì)數(shù)控制的循環(huán)要有:
1)控制變量(即循環(huán)計(jì)數(shù)器);
2)控制變量的初始值;
3)在每次循環(huán)中用來(lái)修改控制變量的遞增(或
遞減)值;
4)測(cè)試控制變量最終值的條件。
提綱
74.1switch多路選擇結(jié)構(gòu)
4.2循環(huán)的本質(zhì)
4.3計(jì)數(shù)器控制的循環(huán)
4.4for循環(huán)結(jié)構(gòu)
N4.5break和continue語(yǔ)句
4.6邏輯運(yùn)算符
4.7相等測(cè)試運(yùn)算符==和賦值運(yùn)算符=
4.8結(jié)構(gòu)化程序設(shè)計(jì)小結(jié)
4.4for循環(huán)結(jié)構(gòu)
/*使用結(jié)構(gòu)的計(jì)數(shù)器控制的循環(huán)*/
forcounter=1
main()counter<=10
printf(k*%d\n*\countcr)
intcounter;countcr-H-
/*控制變量的初始化、循環(huán)條件、循環(huán)計(jì)數(shù)器*/
/*值的遞增(遞減)都包含在for結(jié)構(gòu)的頭部*/
for(counter=1;counter<=10;counter++)
printf(u%d\n^,counter)
}
for循環(huán)指定了計(jì)數(shù)循環(huán)所需的每一方面的內(nèi)容
4.4for循環(huán)結(jié)構(gòu)
for語(yǔ)句的一般格式:
|fbr(表達(dá)式1;表達(dá)式2;表達(dá)式3)"}表達(dá)式1
表達(dá)式2
表達(dá)式1:初始化循環(huán)控制變量
語(yǔ)句組
表達(dá)式2:循環(huán)條件
表達(dá)式3:遞增(遞減)循環(huán)控制整表達(dá)式3
UJ|±±
大多數(shù)情況下for語(yǔ)句等價(jià)于以下的while語(yǔ)句:
表達(dá)式1;
while(表達(dá)式2){
語(yǔ)句組;例外情況:當(dāng)for循
表達(dá)式3;環(huán)體中有continue語(yǔ)
}句時(shí),以后會(huì)講
4.4for循環(huán)結(jié)構(gòu)
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
>表達(dá)式1和表達(dá)式3可以是用逗號(hào)格開的表達(dá)式列表。
如:for(i=l,j=50;i<=10&&j>=20;i++,j-=5)
A在for結(jié)構(gòu)中,表達(dá)式1和表達(dá)式3部分應(yīng)該只放置包含
控制變量的表達(dá)式。對(duì)其他變量的操作應(yīng)該放在循環(huán)
體之前或循環(huán)體之后;
>循環(huán)控制第件要防止“丟一錯(cuò)誤”,理堇用<=(或>=)
而不用v(或>)o如counterv=l0,而不寫成counter<ll;
Afor結(jié)構(gòu)中的三個(gè)表達(dá)式是可有可無(wú)的:如果在程序的
其他地方初始化了控制變量,則可以省去表達(dá)式1;如
果省略了表達(dá)式2,則假定條件為真,建立了一個(gè)“無(wú)
限循環(huán)”;如果在for結(jié)構(gòu)體中計(jì)算了遞增(遞減)表
達(dá)式或者不需要遞增(遞減)表達(dá)式,則可以省去表
達(dá)式3。
4.4for循環(huán)結(jié)構(gòu)一應(yīng)用舉例
例2:求Fibonacci數(shù)列的前40個(gè)數(shù)。該數(shù)列的生成方
Fibonacci數(shù)列示例:
1,1,2,3,5,8,13,21,34
求Fibonacci數(shù)列
輸出fl和f2的值
3=>i
i<=40
「Hf2二〉f
輸出f的值
f2=>fl
f=>f2
【算法1】每循環(huán)一次,求得一個(gè)值
求Fibonacci數(shù)列
1二:fl:l=>f2:
l=>i
i<=20
輸出門和f2的值
門“2二"2
i+I=>i
【算法2】每循環(huán)一次,求得兩個(gè)值。且比
算法一少用了一個(gè)變量。
求Fibonacci數(shù)歹上【算法2】的源程序
#include<stdio.h>
main()
{
longintfl,f2;/*定義并初始化數(shù)列的頭2個(gè)數(shù)*/
inti;/*定義并初始化循環(huán)控制變量i*/
fl=l,f2=l;
for(i=l;i<=20;i++){/*1組2個(gè),20組40個(gè)數(shù)*/
printf("%151d%151d”輸出當(dāng)前的2個(gè)數(shù)*(
if(i%2==0)printf(“\n”);/*輸出2次(4個(gè)數(shù)),換行*/
fl+=f2;/*計(jì)算下2個(gè)數(shù)*/
f2+=fl;
}
提綱
74.1switch多路選擇結(jié)構(gòu)
4.2循環(huán)的本質(zhì)
4.3計(jì)數(shù)器控制的循環(huán)
4.4for循環(huán)結(jié)構(gòu)
N4.5break和continue語(yǔ)句
4.6邏輯運(yùn)算符
4.7相等測(cè)試運(yùn)算符==和賦值運(yùn)算符=
4.8結(jié)構(gòu)化程序設(shè)計(jì)小結(jié)
4.5break和continue語(yǔ)句
為了使循環(huán)控制更加靈活,C語(yǔ)言提供了break語(yǔ)句和
continue語(yǔ)句。
1.一般格式:break;
continue;
2.功能
(1)break:強(qiáng)行結(jié)束循環(huán),轉(zhuǎn)向執(zhí)行循環(huán)語(yǔ)句的下
一條語(yǔ)句。用于switch語(yǔ)句和循環(huán)語(yǔ)句中。
(2)continue:用于循環(huán)語(yǔ)句中。對(duì)于for循環(huán),跳過(guò)
循環(huán)體其余語(yǔ)句,轉(zhuǎn)向循環(huán)變量增量表達(dá)式3的計(jì)算;對(duì)于
while和do-while循環(huán),跳過(guò)循環(huán)體其余語(yǔ)句,轉(zhuǎn)向繼續(xù)循
環(huán)條件的判定。
4.5break和continue語(yǔ)句
在while結(jié)構(gòu)中使用break語(yǔ)句
#include<stdio.h>
#include<stdlib.h>強(qiáng)行結(jié)束循環(huán),
main()轉(zhuǎn)向執(zhí)行循環(huán)語(yǔ)
句的下一■條語(yǔ)句
intx=l;
輸出結(jié)果:
while(x<=10){
if(x==5)break;
printf(H%dn,x);1234
x++;Brokeoutofloopatx==5
)
printf(n\nBrokeoutofloopatx==%dn,x);
system(HpauseH);
return0;
)
4.5break和continue語(yǔ)句
在for結(jié)構(gòu)中使用break語(yǔ)句
#include<stdio.h>
#include<stdlib.h>
main()
(輸出結(jié)果:
intx;
for(x=l;x<=10;x++){1234
if(x==5)break;Brokeoutofloopatx==5
printf(n%dn,x);
}
printf(n\nBrokeoutofloopatx==%d'\x);
system(npausen);
return0;
4.5break和continue語(yǔ)句
在while結(jié)構(gòu)中使用continue語(yǔ)句
#include<stdio.h>
#include<stdlib.h>
main()跳過(guò)循環(huán)體其余
語(yǔ)句,轉(zhuǎn)向繼續(xù)
intx=l;循環(huán)條件的判定
while(x<=10){
if(x==5)continue;死循環(huán)!
printf(u%dn,x);
x++;
printf(n\nBrokeoutofloopatx==%d”,x);
system(npausen);
return0;
4.5break和continue語(yǔ)句
在for結(jié)構(gòu)中使用continue語(yǔ)句
#include<stdio.h>
#include<stdlib.h>
跳過(guò)循環(huán)體其余語(yǔ)
main()句,轉(zhuǎn)向循環(huán)變量
增量表達(dá)式3的計(jì)算
intx;
輸出結(jié)果:
for(x=l;x<=10;x++){
if(x==5)continue;1234678910
printf(“%d”,x);
}
system(npausen);
return0;
}
當(dāng)for循環(huán)中有continue語(yǔ)句時(shí)
main()
main()
({
intx;intx;
x=l;
for(x=l;x<=10;x++){
while(x<=10){
if(x==5)continue;
if(x==5){
printf("%d”,x);
x++;/*不可少*/
)continue;
system(npausen);
}
printf(n%dM,i);
x++;
4.5break和continue語(yǔ)句
循環(huán)嵌套時(shí),break和continue只影響包
、含它們的最內(nèi)層循環(huán),與外層循環(huán)無(wú)關(guān),
#include<stdio.h>輸出結(jié)果:
#include<stdlib.h>
mainOX:1,y:1
(x:1,y:2
intx,y;x:1,y:3
for(x=1;x<=2;x++){x:1,y:4
for(y=1;y<=10;y++){x:2,y:1
if(y==5)break;x:2,y:2
Hn
printf(x:%2d,y:%2d\n,x,y);x:2,y:3
}x:2,y:4
)請(qǐng)按任意鍵繼續(xù)?.?
system(Hpausen);
return0;
/O
與全部使用標(biāo)準(zhǔn)控制流程編寫的程序相比,使
用break和continue語(yǔ)句的結(jié)構(gòu)較差。
\_________________________________________________________________________
提綱
74.1switch多路選擇結(jié)構(gòu)
4.2循環(huán)的本質(zhì)
4.3計(jì)數(shù)器控制的循環(huán)
4.4for循環(huán)結(jié)構(gòu)
N4.5break和continue語(yǔ)句
4.6邏輯運(yùn)算符
4.7相等測(cè)試運(yùn)算符==和賦值運(yùn)算符=
4.8結(jié)構(gòu)化程序設(shè)計(jì)小結(jié)
4.6邏輯運(yùn)算符
邏輯運(yùn)算符:將簡(jiǎn)單條件組合成復(fù)雜條件
您胃^符TTTTTf定乂.TTTTT例子。,
t度度+t~~t與tt-V-?(nmnl<5)&&.(nmti2<
T||TTTTTT或TTTTT(巾皿1<5川(》11城<10)〃
TITTTTT->fTTTf|(llUItll<5)*,
表3?3,?遢|前稱
包含&&的表達(dá)式如果已經(jīng)知道結(jié)果為假、包含||的表達(dá)
式如果已經(jīng)知道結(jié)果為真就會(huì)停止進(jìn)一步計(jì)算。所以在包
含&&的表達(dá)式中,把最可能為假的條件放在最左邊;在
包含||的表達(dá)式中,把最可能為真的條件放在最左邊,這
樣可以減少程序執(zhí)行的時(shí)間。
4.6邏輯運(yùn)算符
例:假設(shè)a=l,b=2,c=3,d=4,m=l,n=l,經(jīng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 協(xié)同合作行業(yè)月度個(gè)人合作共贏計(jì)劃
- 2025年炭石墨負(fù)極材料項(xiàng)目發(fā)展計(jì)劃
- 2025年羧甲淀粉鈉項(xiàng)目建議書
- 實(shí)施均衡化城鄉(xiāng)醫(yī)療衛(wèi)生服務(wù)
- 加強(qiáng)市場(chǎng)監(jiān)管確保供求信息真實(shí)性
- 公司內(nèi)部事務(wù)處理方案
- 勞動(dòng)合同簽訂與履行協(xié)議
- 電桿運(yùn)輸合同
- 2025年雕刻雕銑設(shè)備控制系統(tǒng)項(xiàng)目建議書
- 公司財(cái)務(wù)管理制度及流程
- 管道開挖施工方案(修復(fù)的)
- 北師大版小學(xué)六年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)教學(xué)設(shè)計(jì)
- 中國(guó)古代宗教課件
- GB/T 36713-2018能源管理體系能源基準(zhǔn)和能源績(jī)效參數(shù)
- GB/T 22919.7-2008水產(chǎn)配合飼料第7部分:刺參配合飼料
- GB/T 20472-2006硫鋁酸鹽水泥
- 《中國(guó)商貿(mào)文化》3.1古代商人
- 公司戰(zhàn)略與風(fēng)險(xiǎn)管理-戰(zhàn)略選擇課件
- 《網(wǎng)絡(luò)設(shè)備安裝與調(diào)試(華為eNSP模擬器)》項(xiàng)目1認(rèn)識(shí)eNSP模擬器及VRP基礎(chǔ)操作
- 民事訴訟法學(xué) 馬工程 課件 第21章 涉外民事訴訟程序的特別規(guī)定
- 鋼結(jié)構(gòu)考試試題(含答案)
評(píng)論
0/150
提交評(píng)論