Hi!這里是漁火。今天我們來講用while語句和do-while語句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。
在C語言中,使用while語句完成不定次數(shù)的循環(huán),如果滿足循環(huán)條件,則反復(fù)執(zhí)行循環(huán)體語句,當(dāng)循環(huán)條件不滿足時(shí)退出循環(huán)。while語句在使用時(shí),總是先要判斷一個(gè)條件,使用可以用while語句實(shí)現(xiàn)“當(dāng)型”循環(huán)。while語句的一般形式如下:while(表達(dá)式)循環(huán)體;。接下來我們來看一個(gè)例子。
【由鍵盤輸入一串字符,分別統(tǒng)計(jì)輸入字符中數(shù)字字符、字母字符以及其他字符的個(gè)數(shù)?!?/strong>
#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; }

分析:按照題意,由鍵盤輸入一行字符是一個(gè)重復(fù)的動(dòng)作,每輸入一個(gè)字符都需要判斷屬于哪種字符,分別進(jìn)行統(tǒng)計(jì)。若輸入的是一個(gè)回車符時(shí),程序運(yùn)行結(jié)束。(ch=getchar())!=' ' 不能寫成ch=getchar()!=' ' 兩者不等價(jià)。循環(huán)體為為一條完整的if語句,若有多條語句時(shí),必須使用復(fù)合語句的形式。while后面的括號(hào)“()”不可省略。
在C語言中,do-while語句也用于完成不定次數(shù)的循環(huán),與while語句不同的是,do-while語句首先執(zhí)行一次循環(huán)體,然后判斷循環(huán)條件,如果滿足,則反復(fù)執(zhí)行循環(huán)語句,否則結(jié)束循環(huán)。do-while語句的一般形式如下:do 循環(huán)體 while(表達(dá)式);。接下來我們來看兩個(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; }
許多時(shí)候當(dāng)循環(huán)結(jié)構(gòu)中出現(xiàn)多個(gè)循環(huán)條件時(shí),要求當(dāng)某個(gè)條件滿足時(shí)會(huì)立即結(jié)束循環(huán),或者循環(huán)結(jié)構(gòu)中根據(jù)條件會(huì)跳過某些語句繼續(xù)循環(huán),這就要在循環(huán)結(jié)構(gòu)中配合使用break語句和continue語句。break語句的一般形式如下:break;。當(dāng)break語句用于循環(huán)語句中時(shí),可使程序終止循環(huán)而轉(zhuǎn)去執(zhí)行循環(huán)語句的后繼語句。通常break語句總是與if語句一起配合使用,即滿足條件時(shí)便跳出循環(huán)。
continue語句的作用是跳過循環(huán)體continue后面的語句,繼續(xù)下一次循環(huán)。continue語句只能用在循環(huán)語句中,常與if語句一起使用。continue語句的一般形式如下:continue;。我們來看一個(gè)用到continue語句的程序設(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語言中,還有一種可以實(shí)現(xiàn)循環(huán)控制的語句,即goto語句。goto語句的一般形式如下:goto語句標(biāo)號(hào);。
說明:語句標(biāo)號(hào)是一個(gè)有效的標(biāo)識(shí)符,使用時(shí)在語句的后面跟一個(gè)“;”出現(xiàn)在函數(shù)中某語句的前面。程序執(zhí)行到goto語句時(shí),會(huì)控制跳轉(zhuǎn)到該語句標(biāo)號(hào)處,達(dá)到控制循環(huán)的目的。語句標(biāo)號(hào)必須與goto語句處于同一個(gè)函數(shù)中。通常goto語句與if語句連用實(shí)現(xiàn)循環(huán)控制。大型程序中由于goto語句可能存在不合理的使用,會(huì)使程序結(jié)構(gòu)變壞,所以結(jié)構(gòu)化程序設(shè)計(jì)中,不建議使用goto語句。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
88文章
11581瀏覽量
217174 -
C語言
+關(guān)注
關(guān)注
183文章
7634瀏覽量
144192 -
程序
+關(guān)注
關(guān)注
117文章
3832瀏覽量
84561 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4401瀏覽量
66545 -
循環(huán)結(jié)構(gòu)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7994
原文標(biāo)題:從零開始跟我學(xué) C 語言之循環(huán)結(jié)構(gòu)(下)
文章出處:【微信號(hào):Linux迷,微信公眾號(hào):Linux迷】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

從零開始跟我學(xué)C語言之循環(huán)結(jié)構(gòu)(下)
評(píng)論