for (循环变量赋初始值;循环条件;更新循环变量) {
循环体
}
for循环时,【循环变量赋初始值】,【循环条件】,【更新循环变量】这三个表达式都可以省略,变为for ( ; ; ) ,这表示不用给循环变量赋初始值,也不用在每次执行后更新循环变量,同时循环的条件始终为真,也就是说每次都会选择进入循环体。// 输入一个整型变量表示存款总数量
int savings = 0;
// 用循环变量 i 表示现在的天数
// 最开始为1
// 每次循环后都加1天
// 不满足小于等于100天时就跳出循环
for (int i=1; i<=100; i++) {
// 更新存款总数
savings = savings + i;
// 输出存款总数
cout << i << ":总数" << savings << endl;
}
break通常放在循环体中,当执行到这句语句时,跳出整个循环,也就是说整个循环立即终止continue通常也是放在循环体中,当执行到这句语句时,跳过当前循环体,强迫进入下一次循环一个循环结构,但是这时候我们不知道总共要循环几次,也不关心目前循环到了第几次,所以循环变量不关键,我们就可以用到 while语句来解决这个问题。

while循环只关注循环终止的条件和循环体的内容本身。while (循环成立条件) {
循环体
}
// 声明生成的随机数字和猜的数字这两个变量
int num, guess;
// 提供随机种子
srand((unsigned)time(NULL));
// 随机生成一个1-100的数字
num = rand() % 100 + 1;
// 输入猜测的数字
cin >> guess;
// 如果猜的数字和生成的数字不相同就进入循环
while (guess != num) {
// 输出猜大了还是猜小了
if (guess > num)
cout << "猜大了" << endl;
else if (guess < num)
cout << "猜小了" << endl;
// 重新输入猜测的数字
cin >> guess;
}
// 当猜的数字和生成的数字相同时,跳出循环后,输出“猜对了”
cout << "猜对了" << endl;
do {
循环体
} while (循环成立条件);
do while 执行逻辑和while类似。唯一的区别在于:因为条件表达式出现在循环的尾部,所以至少会执行一次循环体,执行完成后,再判断是否进入下一次循环。// 声明生成的随机数字和猜的数字这两个变量
int num, guess;
// 提供随机种子
srand((unsigned)time(NULL));
// 随机生成一个1-100的数字
num = rand() % 100 + 1;
do {
// 输入猜测的数字
cin >> guess;
// 输出猜大了还是猜小了
if (guess > num)
cout << "猜大了" << endl;
else if (guess < num)
cout << "猜小了" << endl;
} while (guess != num);
// 当猜的数字和生成的数字相同时,跳出循环后,输出“猜对了”
cout << "猜对了" << endl;
循环嵌套适用于循环的大操作里有重复的小操作的情景。
假设我们要打印一个九九乘法表:

如果我们用for循环内部嵌套for循环的方式来写,代码是这样实现的:
// 1-9,每个数字打印一行
for (int i = 1; i <= 9; i++) {
// 在第i行中,对于每个小于i的数字,都打印一个等式和tab分隔
for (int j = 1; j <= i ; j++) {
cout << j << "*" << i << "=" << j*i << "\t";
}
// 第i行最后打印换行符
cout << endl;
}
如果我们用for循环内部嵌套while循环的方式来写,代码就是这样的:
// 1-9,每个数字打印一行
for (int i = 1; i <= 9; i++) {
// 在第i行中,对于每个小于i的数字,都打印一个等式和tab分隔
int j = 1;
while (j <= i) {
cout << j << "*" << i << "=" << j*i << "\t";
j++;
}
// 第i行最后打印换行符
cout << endl;
}