在本教程中,您將在示例的幫助下學(xué)習(xí)在C語(yǔ)言編程中創(chuàng)建while和do ... while循環(huán)。
在編程中,循環(huán)用于重復(fù)代碼塊,直到滿足指定條件為止。
C語(yǔ)言編程具有三種類型的循環(huán)。
while循環(huán)
do... while循環(huán)
在上一教程中,我們了解了for循環(huán)。在本教程中,我們將學(xué)習(xí)while和do..while循環(huán)。
while循環(huán)的語(yǔ)法為:
while (testExpression)
{
// 循環(huán)體中的語(yǔ)句
}while循環(huán)計(jì)算在括號(hào)內(nèi)測(cè)試表達(dá)式(testExpression)。
如果測(cè)試表達(dá)式(testExpression)為true,則執(zhí)行while循環(huán)體內(nèi)的語(yǔ)句。然后,再次評(píng)估測(cè)試表達(dá)式(testExpression)。
該過(guò)程一直進(jìn)行到測(cè)試表達(dá)式(testExpression)被評(píng)估為false為止。
如果測(cè)試表達(dá)式為假(false),則循環(huán)終止(結(jié)束)。
要了解有關(guān)測(cè)試表達(dá)式的更多信息(當(dāng)測(cè)試表達(dá)式被評(píng)估為true和false時(shí)),請(qǐng)查看關(guān)系運(yùn)算符和邏輯運(yùn)算符。

//打印從1到5的數(shù)字
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 5)
{
printf("%d\n", i);
++i;
}
return 0;
}輸出結(jié)果
1 2 3 4 5
在這里,我們已初始化i為1。
當(dāng)i為1時(shí),測(cè)試表達(dá)式 i <= 5 為true。因此,while執(zhí)行循環(huán)的主體。在屏幕上打印1,并將i其值增加到2。
現(xiàn)在i是2,測(cè)試表達(dá)式 i <= 5 再次為true。while循環(huán)主體將再次執(zhí)行。在屏幕上打印2,并將i其值增加到3。
該過(guò)程一直進(jìn)行到i為6時(shí),此時(shí)測(cè)試表達(dá)式 i <= 5 為false,循環(huán)終止。
do..while循環(huán)類似于while循環(huán),但有一個(gè)重要區(qū)別。do...while循環(huán)主體至少執(zhí)行一次。執(zhí)行一次后,才對(duì)測(cè)試表達(dá)式求值。
do...while循環(huán)的語(yǔ)法為:
do
{
//循環(huán)體內(nèi)的語(yǔ)句
}
while (testExpression);do ... while循環(huán)的主體執(zhí)行一次。只有這樣執(zhí)行一次后,才對(duì)測(cè)試表達(dá)式求值。
如果測(cè)試表達(dá)式(testExpression)為true,則再次執(zhí)行循環(huán)主體并評(píng)估測(cè)試表達(dá)式(testExpression)。
這個(gè)過(guò)程一直進(jìn)行到測(cè)試表達(dá)式變?yōu)閒alse。
如果測(cè)試表達(dá)式為false,則循環(huán)結(jié)束。

//程序添加數(shù)字,直到用戶輸入零
#include <stdio.h>
int main()
{
double number, sum = 0;
//循環(huán)的主體至少執(zhí)行一次
do
{
printf("輸入一個(gè)數(shù)字: ");
scanf("%lf", &number);
sum += number;
}
while(number != 0.0);
printf("總和 = %.2lf",sum);
return 0;
}輸出結(jié)果
輸入一個(gè)數(shù)字: 1.5 輸入一個(gè)數(shù)字: 2.4 輸入一個(gè)數(shù)字: -3.4 輸入一個(gè)數(shù)字: 4.2 輸入一個(gè)數(shù)字: 0 總和 = 4.70