Hi!這里是漁火。今天我們來(lái)講用while語(yǔ)句和do-while語(yǔ)句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。
在C語(yǔ)言中,使用while語(yǔ)句完成不定次數(shù)的循環(huán),如果滿足循環(huán)條件,則反復(fù)執(zhí)行循環(huán)體語(yǔ)句,當(dāng)循環(huán)條件不滿足時(shí)退出循環(huán)。while語(yǔ)句在使用時(shí),總是先要判斷一個(gè)條件,使用可以用while語(yǔ)句實(shí)現(xiàn)“當(dāng)型”循環(huán)。while語(yǔ)句的一般形式如下:while(表達(dá)式)循環(huán)體;。接下來(lái)我們來(lái)看一個(gè)例子。
【由鍵盤(pán)輸入一串字符,分別統(tǒng)計(jì)輸入字符中數(shù)字字符、字母字符以及其他字符的個(gè)數(shù)。】
#include運(yùn)行結(jié)果如下://隨便輸入字母字符數(shù)字//2023.2.5漁火 Linux迷 www.linuxmi.com int main() { int d,l,o; char ch; d=l=o=0; printf("請(qǐng)輸入一串字符:"); while((ch=getchar())!=' ') if((ch>='0')&&(ch<='9')) d++; else if ((ch>='a')&&(ch<='z')||(ch>='A')&&(ch<='Z')) l++; else o++; printf("數(shù)字%d個(gè),字母%d個(gè),其他%d個(gè) ",d,l,o); //2023.2.5漁火 Linux迷 www.linuxmi.com return 0; }

分析:按照題意,由鍵盤(pán)輸入一行字符是一個(gè)重復(fù)的動(dòng)作,每輸入一個(gè)字符都需要判斷屬于哪種字符,分別進(jìn)行統(tǒng)計(jì)。若輸入的是一個(gè)回車符時(shí),程序運(yùn)行結(jié)束。(ch=getchar())!=' ' 不能寫(xiě)成ch=getchar()!=' ' 兩者不等價(jià)。循環(huán)體為為一條完整的if語(yǔ)句,若有多條語(yǔ)句時(shí),必須使用復(fù)合語(yǔ)句的形式。while后面的括號(hào)“()”不可省略。
在C語(yǔ)言中,do-while語(yǔ)句也用于完成不定次數(shù)的循環(huán),與while語(yǔ)句不同的是,do-while語(yǔ)句首先執(zhí)行一次循環(huán)體,然后判斷循環(huán)條件,如果滿足,則反復(fù)執(zhí)行循環(huán)語(yǔ)句,否則結(jié)束循環(huán)。do-while語(yǔ)句的一般形式如下:do 循環(huán)體 while(表達(dá)式);。接下來(lái)我們來(lái)看兩個(gè)例子。
【求自然數(shù)的最大公約數(shù)和最小公倍數(shù)】
#include//2023.2.5漁火 Linux迷 www.linuxmi.com int main() { int a,b,r,n,m; printf("請(qǐng)輸入兩個(gè)整數(shù):"); scanf("%d%d",&a,&b); m=a,n=b; do { r=a%b; a=b; b=r; } while(r!=0); printf("%d和%d的最大公約數(shù)是:%d ",m,n,a); printf("最小公倍數(shù)是:%d",m*n/a); //2023.2.5漁火 Linux迷 www.linuxmi.com return 0; }
運(yùn)行結(jié)果如下://輸入12 72

【輸入一個(gè)整數(shù),統(tǒng)計(jì)該數(shù)的位數(shù)】
#include運(yùn)行結(jié)果如下://輸入1235698//2023.2.5漁火 Linux迷 www.linuxmi.com int main() { long n,m; int count=0; printf("請(qǐng)輸入一個(gè)整數(shù):"); scanf("%ld",&n); m=n; if(n<0)n=-m; do{ n=n/10; count++; } while(n!=0); printf("整數(shù)%ld有%d位數(shù) ",m,count); //2023.2.5漁火 Linux迷 www.linuxmi.com return 0; }

break語(yǔ)句的一般形式如下:break;。當(dāng)break語(yǔ)句用于循環(huán)語(yǔ)句中時(shí),可使程序終止循環(huán)而轉(zhuǎn)去執(zhí)行循環(huán)語(yǔ)句的后繼語(yǔ)句。通常break語(yǔ)句總是與if語(yǔ)句一起配合使用,即滿足條件時(shí)便跳出循環(huán)。
continue語(yǔ)句的作用是跳過(guò)循環(huán)體continue后面的語(yǔ)句,繼續(xù)下一次循環(huán)。continue語(yǔ)句只能用在循環(huán)語(yǔ)句中,常與if語(yǔ)句一起使用。continue語(yǔ)句的一般形式如下:continue;。我們來(lái)看一個(gè)用到continue語(yǔ)句的程序設(shè)計(jì)。
【把1~100之間能被7整除的數(shù),以每行5個(gè)的形式在屏幕上輸出?!?/strong>
#include//2023.2.5漁火 Linux迷 www.linuxmi.com int main() { int i,n=1; for(i=1;i<=100;i++) { if(i%7!=0) continue; printf("%4d",i); if(n++%5==0)printf(" "); } //2023.2.5漁火 Linux迷 www.linuxmi.com return 0; }

在C語(yǔ)言中,還有一種可以實(shí)現(xiàn)循環(huán)控制的語(yǔ)句,即goto語(yǔ)句。goto語(yǔ)句的一般形式如下:goto語(yǔ)句標(biāo)號(hào);。
說(shuō)明:語(yǔ)句標(biāo)號(hào)是一個(gè)有效的標(biāo)識(shí)符,使用時(shí)在語(yǔ)句的后面跟一個(gè)“;”出現(xiàn)在函數(shù)中某語(yǔ)句的前面。程序執(zhí)行到goto語(yǔ)句時(shí),會(huì)控制跳轉(zhuǎn)到該語(yǔ)句標(biāo)號(hào)處,達(dá)到控制循環(huán)的目的。語(yǔ)句標(biāo)號(hào)必須與goto語(yǔ)句處于同一個(gè)函數(shù)中。通常goto語(yǔ)句與if語(yǔ)句連用實(shí)現(xiàn)循環(huán)控制。大型程序中由于goto語(yǔ)句可能存在不合理的使用,會(huì)使程序結(jié)構(gòu)變壞,所以結(jié)構(gòu)化程序設(shè)計(jì)中,不建議使用goto語(yǔ)句。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11432瀏覽量
212479 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7628瀏覽量
139953 -
程序
+關(guān)注
關(guān)注
117文章
3817瀏覽量
82243 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4365瀏覽量
63953 -
循環(huán)結(jié)構(gòu)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7830
原文標(biāo)題:從零開(kāi)始跟我學(xué) C 語(yǔ)言之循環(huán)結(jié)構(gòu)(下)
文章出處:【微信號(hào):Linux迷,微信公眾號(hào):Linux迷】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論