今天學(xué)習(xí)學(xué)習(xí)第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)恩商,時間有點(diǎn)來不及了海铆,所以更筆記會有點(diǎn)跟不上窗声,因?yàn)楣P記是我的一個復(fù)習(xí)過程侮穿,所以在考試之前都要把書看完屑彻,不知道有沒有一起要考的這個親徊哑,二級C考試之前硼啤,肯定要把書先過一遍艰猬,整理讀書筆記横堡,只是我自己的一個記憶鞏固和知識整理的過程。所以大家互相鼓勵冠桃,同時希望有考二級C的伙伴能一起共享復(fù)習(xí)資料和練習(xí)命贴。。
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
來由:循環(huán)結(jié)構(gòu)是為了解決需要重復(fù)選擇的問題食听。
循環(huán)結(jié)構(gòu)包括:while 語句胸蛛、for語句以及do…while語句。
while 語句
一般形式:while(表達(dá)式)語句……//語句就是循環(huán)體樱报,也就是復(fù)合語句葬项。
即:只要循環(huán)條件為真(條件表達(dá)式的值為1),就執(zhí)行循環(huán)體語句
特點(diǎn):先判斷條件表達(dá)式肃弟,后執(zhí)行循環(huán)體語句玷室。
如:求1~100的數(shù)的和的程序。
#inculde <stdio.h>
int main(){
int i,sum; ? ? ? ? ? ? ? /*定義變量i和相加的和為sum */
i=1;sum=0; ? ? ? ? ? ?/*給i和sum分別賦初值笤受,否則它們的值是不可預(yù)測的穷缤,結(jié)果不正確 */
while(i<=100) ? ? ? ?/*當(dāng)i大于100時退出循環(huán)*/
{
sum+=i; ? ? ? ? ? ? ? ? /*sum=sum*/
i++; ? ? ? ? ? ? ? ? ? ? ?/*i+1后再循環(huán),這個語句有使循環(huán)趨于結(jié)束*/
}
printf("sum=%d\n",sum);
return 0;}
注:
1箩兽、循環(huán)體中如果包含一個以上的語句津肛,應(yīng)該用花括號括起來,作為復(fù)合語句出現(xiàn)汗贫,如果不括身坐,則while語句的范圍只到其后面第1個分號處秸脱。
2、不要忽略給變量賦初值部蛇,否則它們的值是不可預(yù)測的摊唇,結(jié)果肯定是不正確的
3、在循環(huán)體中應(yīng)有使循環(huán)趨于結(jié)束的語句涯鲁。
思考:求使s=1+2+3+..+n大于1000時n的值巷查。
提示,可參考上面例題抹腿,在其中加上if語句岛请。。if(sum>1000) break;
while語句還有另一種形式警绩。
do……while 語句
一般形式:do
? ? ? ? ? ? ? ? 語句
? ? ? ? ? ? ? ?while(表達(dá)式)崇败;
這里最重要的一點(diǎn)是,這里while( 表達(dá)式)后面一定要加上分號肩祥。
它的執(zhí)行過程:先無條件執(zhí)行循環(huán)體后室,然后再檢查條件是否成立,若成立再執(zhí)行搭幻,這是和while語句不同的咧擂。
/*用do……while語句 ?求1~100的數(shù)的和的程序*/
#include <stdio.h>
int main(){
int i=1,sum=0;
do{
sum+=i;
i++;}
while(i<=1000); ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*這里括號后面一定要加分號*/
printf("sum=%d,i=%d\n",sum,i);
return 0;
}
用for語句實(shí)現(xiàn)循環(huán)
其特點(diǎn):更靈活,不僅可以用于已知的循環(huán)次數(shù)檀蹋,也可以是未知的循環(huán)次數(shù)松申,其完全可以替代while語句。
一般形式:for(表達(dá)式1俯逾;表達(dá)式2贸桶;表達(dá)式3) ? 語句。
表達(dá)式1:設(shè)置初始條件桌肴,只執(zhí)行一次皇筛,可以為零,一個或多個變量設(shè)置初值坠七。
表達(dá)式2:循環(huán)條件表達(dá)式水醋,用來判斷是否繼續(xù)循環(huán),在每次循環(huán)體前先執(zhí)行此表達(dá)式彪置。
表達(dá)式3:作為循環(huán)的調(diào)整拄踪,在執(zhí)行完循環(huán)體后才進(jìn)行的。
簡單的記憶方式:for(循環(huán)變量賦初值拳魁;循環(huán)條件惶桐;循環(huán)變量增值) ? 語句
例:for(i=1;i<=100;i++) ? ? ? ?sum+=i;
for語句是可以和while語句相互轉(zhuǎn)換的。
for語句一般形式:for(表達(dá)式1姚糊;表達(dá)式2贿衍;表達(dá)式3) ? 語句。
改寫成while語句的一般形式為:
while(表達(dá)式2){
語句
表達(dá)式3} ? ? ? ? ? ? ? ? ?/*二者是無條件等價(jià)*/
注意:
1救恨、for(;i<=100贸辈;i++),for語句的表達(dá)式1可以省略忿薇,但分號不能省略裙椭。同時必須在for語句之前加上表達(dá)式1。
2署浩、表達(dá)式2也可以省略,意思就是這個循環(huán)體恒為真(非零)就會一直執(zhí)行下去扫尺。
3筋栋、表達(dá)式3也可以省略,但我們必須設(shè)置一個條件讓其能正常結(jié)束正驻。表達(dá)式3也可以放在語句里面弊攘。
4、表達(dá)式1和表達(dá)式3都沒有姑曙,如果不在其他地方加上的話襟交,程序是無法運(yùn)行的。三個表達(dá)式都沒有的話伤靠,在其他加上他們的話捣域,也不影響,否則就執(zhí)行不了宴合。
5焕梅、表達(dá)式1可以是設(shè)置成循環(huán)變量初值的賦值表達(dá)式,也可以是循環(huán)變量無關(guān)的其他表達(dá)式卦洽。
如:for(sum=0;i<=100;i++) sum+=i;但一定要保證循環(huán)能正常運(yùn)行贞言。
6、表達(dá)式1和表達(dá)式3可以是一個簡單的表達(dá)式阀蒂,也可以是逗號表達(dá)式该窗,即包含一人以上的簡單表達(dá)式,中間用逗號間隔蚤霞。
如:for(sum=0酗失,i=1;i<=100;i++,i--) sum+=i;但一定要保證循環(huán)能正常運(yùn)行。
7争便、表達(dá)式2一般都是關(guān)系表達(dá)式或邏輯表達(dá)式级零,但也可以是數(shù)值表達(dá)式或字符表達(dá)式。只是其值為1(非零),就執(zhí)行循環(huán)體奏纪。
8鉴嗤、C99允許在for語句的表達(dá)式1中定義變量并賦初值。
循環(huán)的嵌套
定義:一個循環(huán)體內(nèi)又包含了另一個完整的循環(huán)結(jié)構(gòu)序调,就是循環(huán)的嵌套醉锅。
三種循環(huán)語句(while語句、do……while 語句发绢、for語句)是可以互相嵌套的硬耍。
改變循環(huán)執(zhí)行的狀態(tài)
用break語句提前終止循環(huán)
在用switch語句的時候就已經(jīng)用過break語句了,
一般形式:break;
break語句只能用于循環(huán)語句和switch語句中边酒,而不能單獨(dú)作用经柴。
用continue語句提前結(jié)束本次循環(huán)
有時不想終止整個循環(huán),但只希望提前結(jié)束本次循環(huán)墩朦,而接著執(zhí)行下個循環(huán)坯认,可以用continue語句
/*要求輸出100~200之間不能3整除的數(shù)。*/
int n;
for(n=100;n<=200;n++)
{
if(n%3==0)
continue;
printf(" %d",n);
}
printf("\n");
循環(huán)結(jié)構(gòu)我一直在找內(nèi)容來讓我理解它氓涣,我現(xiàn)在自己都還有一點(diǎn)懵牛哺,現(xiàn)在也只是有點(diǎn)簡單的理解,所以沒有基礎(chǔ)劳吠,特別是數(shù)學(xué)差或者邏輯思維差的引润,真的熟練應(yīng)用要很難,特別是循環(huán)的嵌套痒玩,多層嵌套繞的頭暈淳附,希望大家可以互相留言說大家對循環(huán)的理解,這個東西我發(fā)現(xiàn)就是死記硬背不行凰荚,不理解就不會用了燃观。