Hi!這里是漁火。今天我們來講用while語句和do-while語句實現(xiàn)循環(huán)結(jié)構(gòu)。
在C語言中,使用while語句完成不定次數(shù)的循環(huán),如果滿足循環(huán)條件,則反復(fù)執(zhí)行循環(huán)體語句,當(dāng)循環(huán)條件不滿足時退出循環(huán)。while語句在使用時,總是先要判斷一個條件,使用可以用while語句實現(xiàn)“當(dāng)型”循環(huán)。while語句的一般形式如下:while(表達(dá)式)循環(huán)體;。接下來我們來看一個例子。
【由鍵盤輸入一串字符,分別統(tǒng)計輸入字符中數(shù)字字符、字母字符以及其他字符的個數(shù)。】
#include運行結(jié)果如下://隨便輸入字母字符數(shù)字//2023.2.5漁火 Linux迷 www.linuxmi.com int main() { int d,l,o; char ch; d=l=o=0; printf("請輸入一串字符:"); 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個,字母%d個,其他%d個 ",d,l,o); //2023.2.5漁火 Linux迷 www.linuxmi.com return 0; }
分析:按照題意,由鍵盤輸入一行字符是一個重復(fù)的動作,每輸入一個字符都需要判斷屬于哪種字符,分別進(jìn)行統(tǒng)計。若輸入的是一個回車符時,程序運行結(jié)束。(ch=getchar())!=' ' 不能寫成ch=getchar()!=' ' 兩者不等價。循環(huán)體為為一條完整的if語句,若有多條語句時,必須使用復(fù)合語句的形式。while后面的括號“()”不可省略。
在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á)式);。接下來我們來看兩個例子。
【求自然數(shù)的最大公約數(shù)和最小公倍數(shù)】
#include//2023.2.5漁火 Linux迷 www.linuxmi.com int main() { int a,b,r,n,m; printf("請輸入兩個整數(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; }
運行結(jié)果如下://輸入12 72
【輸入一個整數(shù),統(tǒng)計該數(shù)的位數(shù)】
#include運行結(jié)果如下://輸入1235698//2023.2.5漁火 Linux迷 www.linuxmi.com int main() { long n,m; int count=0; printf("請輸入一個整數(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; }
許多時候當(dāng)循環(huán)結(jié)構(gòu)中出現(xiàn)多個循環(huán)條件時,要求當(dāng)某個條件滿足時會立即結(jié)束循環(huán),或者循環(huán)結(jié)構(gòu)中根據(jù)條件會跳過某些語句繼續(xù)循環(huán),這就要在循環(huán)結(jié)構(gòu)中配合使用break語句和continue語句。
break語句的一般形式如下:break;。當(dāng)break語句用于循環(huán)語句中時,可使程序終止循環(huán)而轉(zhuǎn)去執(zhí)行循環(huán)語句的后繼語句。通常break語句總是與if語句一起配合使用,即滿足條件時便跳出循環(huán)。
continue語句的作用是跳過循環(huán)體continue后面的語句,繼續(xù)下一次循環(huán)。continue語句只能用在循環(huán)語句中,常與if語句一起使用。continue語句的一般形式如下:continue;。我們來看一個用到continue語句的程序設(shè)計。
【把1~100之間能被7整除的數(shù),以每行5個的形式在屏幕上輸出。】
#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語言中,還有一種可以實現(xiàn)循環(huán)控制的語句,即goto語句。goto語句的一般形式如下:goto語句標(biāo)號;。
說明:語句標(biāo)號是一個有效的標(biāo)識符,使用時在語句的后面跟一個“;”出現(xiàn)在函數(shù)中某語句的前面。程序執(zhí)行到goto語句時,會控制跳轉(zhuǎn)到該語句標(biāo)號處,達(dá)到控制循環(huán)的目的。語句標(biāo)號必須與goto語句處于同一個函數(shù)中。通常goto語句與if語句連用實現(xiàn)循環(huán)控制。大型程序中由于goto語句可能存在不合理的使用,會使程序結(jié)構(gòu)變壞,所以結(jié)構(gòu)化程序設(shè)計中,不建議使用goto語句。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11316瀏覽量
209814 -
C語言
+關(guān)注
關(guān)注
180文章
7608瀏覽量
137084 -
程序
+關(guān)注
關(guān)注
117文章
3791瀏覽量
81153 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4338瀏覽量
62734 -
循環(huán)結(jié)構(gòu)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7725
原文標(biāo)題:從零開始跟我學(xué) C 語言之循環(huán)結(jié)構(gòu)(下)
文章出處:【微信號:Linux迷,微信公眾號:Linux迷】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論