C++青少年简明教程:While和Do-while循环语句
C++的while和do-while语句都是循环控制语句,用于重复执行一段代码。while语句在循环开始前检查循环条件,而do-while语句在循环结束后检查循环条件。
使用while循环时,如果需要在每次迭代前都检查条件,可以选择while。
使用do-while循环时,如果需要确保循环体至少执行一次,可以选择do-while。
while语句
语法格式:
while(判断表达式)
循环体
执行流程图:
当判断表达式(条件)为真时执行循环体;当条件为假时,程序流将循环语句后的语句。循环体是语句或语句块。
使用while循环计算1到10的累加和:
#include<iostream>
using namespace std;int main(){int n = 10;int sum = 0;int i = 1;while (i <= n) {sum += i;i++;}cout << "1到" << n << "的累加和为:" << sum << endl;
}
其中sum += i; 的意思是将i的值加到sum中,相当于 sum = sum + i;
i++ 的意思是将i的值加1,相当于 i = i + 1;
首先,定义了三个变量:n、sum和i。n的值为10,sum初始化为0,i初始化为1。
然后,使用while循环计算累加和。循环条件是i小于等于n,即只要i的值不大于n,就继续循环。循环体内的语句是累加i到sum中,然后将i的值加1,以便下一次循环累加下一个数。循环结束后,sum中就存储了1到n之间所有整数的和。
前面“if选择语句”一节给出判断一个年份是否为闰年程序,每次运行只能判断一个年份,如何判断多次呢?
如果您想要程序能够多次判断不同的年份是否为闰年,您可以使用一个循环结构,如while循环或for循环,来重复获取用户输入并判断。下面是一个使用while循环的示例代码:
#include <iostream>
using namespace std;int main() { int year; bool keepRunning = true; // 标志位,用于控制循环是否继续 while (keepRunning) { cout << "请输入一个年份(输入数字0退出): "; cin >> year; // 如果用户输入0,则退出循环 if (year == 0) { keepRunning = false; } else { // 判断是否为闰年 if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { cout << year << " 是闰年." << endl; } else { cout << year << " 不是闰年." << endl; } } } return 0;
}
Do-while语句
语法格式:
Do
循环体
while(判断表达式);
执行流程图:
条件表达式出现在循环的尾部,所以循环体会在条件被测试之前就执行了一次,也就是这个语句的循环体中的语句会被至少执行一次。
如果条件为真,就会执行循环体,这个过程会不断重复,直到给定条件变为假为止。
使用Do-while语句计算1到10的累加和:
int sum = 0, i = 1, n = 10;
do {sum += i;i++;
} while (i <= n);cout << "1到" << n << "的整数之和为:" << sum << endl;
while语句在进入循环体之前检查条件,如果条件一开始就为假,则循环体一次也不会执行。当希望在进入循环体之前检查条件时,使用while循环。
do-while语句先执行一次循环体,然后再检查条件,这确保了循环体至少执行一次。当希望至少执行一次循环体,然后再检查条件时,使用do-while循环。
while和do-while循环可以单独嵌套,也可以相互嵌套。
下面是一个示例代码,展示了 while 循环和 do-while 循环的相互嵌套使用:
#include <iostream>
using namespace std;int main() {int i = 1;int j = 1;while (i <= 3) {cout << "外部循环,i = " << i << endl;do {cout << " 内部循环,j = " << j << endl;j++;} while (j <= 2);i++;j = 1;}return 0;
}
在运行上述代码时,你将会看到如下输出:
外部循环,i = 1
内部循环,j = 1
内部循环,j = 2
外部循环,i = 2
内部循环,j = 1
内部循环,j = 2
外部循环,i = 3
内部循环,j = 1
内部循环,j = 2