C语言:while与do while循环语句
while?
執(zhí)行流程:先判斷循環(huán)控制表達(dá)式 Exp_cntrl 的值,當(dāng)該表達(dá)式的值為邏輯真(非 0)時(shí),會(huì)一直執(zhí)行循環(huán)體,直到表達(dá)式的值為邏輯假(0)才結(jié)束循環(huán)。
?
通常把循環(huán)控制表達(dá)式 ExP_cntrl 中含有的變量,稱為循環(huán)控制變量。為了避免程序陷入死循環(huán),必須要有能改變循環(huán)控制變量的語(yǔ)句,使循環(huán)控制表達(dá)式 Exp_cntrl 的值趨于邏輯假,以便使循環(huán)趨于終止。
【例 1】統(tǒng)計(jì)輸出 100 以內(nèi)的所有奇數(shù)之和。
分析:本題是重復(fù)執(zhí)行“把 100 以內(nèi)的當(dāng)前奇數(shù) 1、3、5、7,… 累加求和”的相似操作,故采用循環(huán)結(jié)構(gòu)。循環(huán)算法的關(guān)鍵是要確定循環(huán)條件表達(dá)式和循環(huán)體。
循環(huán)控制變量及初始條件確定:由題意可知,奇數(shù) i 作為循環(huán)控制變量,初值為第一個(gè)奇數(shù),即 i=1。另外,還有求和變量 sum=0。
循環(huán)條件表達(dá)式的確定:循環(huán)控制變量 i 為 [1,100] 間的奇數(shù)。故循環(huán)條件表達(dá)式為 i<=100。
循環(huán)體確定:該題循環(huán)體中包含以下兩部分操作。
- 把當(dāng)前奇數(shù)變量 i 累加到求和變量 sum 中,即 sum+=i;
- 為計(jì)算當(dāng)前奇數(shù)的下一個(gè)奇數(shù)做準(zhǔn)備,也就是控制變量的增量部分,即 i+=2。
代碼如下:
?#include<stdio.h>
int main (void){
int sum=0,i=1; //i初始為第一個(gè)素?cái)?shù)
while (i<=100) //循環(huán)執(zhí)行的判斷條件
{
sum+=i;
i+=2; //控制變量的增量
}
printf("sum=%d\n",sum);
return 0;
}
運(yùn)行結(jié)果為:
sum=2500
需要說(shuō)明的是,必須在零的基礎(chǔ)上進(jìn)行累加,故 sum 需要初始化為 0,否則將是無(wú)意義的隨機(jī)值。循環(huán)控制條件不必刻意去思考最后一個(gè)奇數(shù)是否包含 100,讓程序根據(jù)奇數(shù)的定義及相鄰奇數(shù)的差值自行計(jì)算確定 100 以內(nèi)的最后一個(gè)奇數(shù)。
do-while循環(huán)
do-while 循環(huán)的格式如下。
do{
??? Statement _1;
??? Statement _2;
}while(Exp_cntrl);//分號(hào)不可丟
當(dāng)循環(huán)體為一條簡(jiǎn)單語(yǔ)句時(shí),可以省略?{},即:
do
??? Simp1e_Statement;//循環(huán)體
while(Exp_cntrl);
注意,在 do-while 結(jié)構(gòu)中,while 括號(hào)后的分號(hào)不能丟。
do-while 循環(huán)的執(zhí)行流程是:首先無(wú)條件地執(zhí)行一次循環(huán)體,然后再根據(jù)循環(huán)控制表達(dá)式的值來(lái)判斷是否繼續(xù)執(zhí)行循環(huán)體。若為真,則繼續(xù)執(zhí)行;若為假,則停止執(zhí)行,退出 do-while 循環(huán)。也就是說(shuō),do-while 循環(huán)至少執(zhí)行一次循環(huán)體。
do-while 循環(huán)和 while 循環(huán)的主要差別是:前者至少執(zhí)行一次循環(huán)體,后者有可能一次也不執(zhí)行循環(huán)體。
do-while 循環(huán)的執(zhí)行流程圖
do-while 循環(huán)主要用在一直進(jìn)行嘗試性的操作,直到滿足條件為止的情景。
【例 2】編程實(shí)現(xiàn)猜數(shù)字游戲,假設(shè)謎底為 0?10 的整數(shù),猜謎者每次輸入一個(gè)整數(shù),直到猜對(duì)為止。
分析:本題屬于先輸入所猜數(shù)字才能判斷是否猜中,如果猜中,游戲結(jié)束,如果沒猜中,繼續(xù)猜,直到猜中為止。故該題符合 do-while 循環(huán)的使用場(chǎng)景。
代碼如下:
#include<stdio.h>
int main (void){
int pwd=7,gs; //pwd:謎底
printf ("\tGames Begin\n");
do{
printf("Please guess (0~10):");
scanf("%d",&gs);
}while(gs!=pwd);
printf ("\tSucceed!\n");
printf ("\tGaines over\n");
return 0;
}
運(yùn)行結(jié)果:
??????? Games Begin
Please guess (0~10):3
Please guess (0~10):5
Please guess (0~10):8
Please guess (0~10):7
??????? Succeed!
??????? Gaines over
總結(jié)
以上是生活随笔為你收集整理的C语言:while与do while循环语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 惠普服务器是什么芯片,惠普将首次在服务器
- 下一篇: c语言用指针分离字符串数字与字符,c语言