第三章 循环结构
一、while循环
可以简单理解为循环版的if语句。If语句是判断一次,如果条件成立,则执行后面的语句;while是每次判断,如果成立,则执行循环体中的语句,否则停止。
先判断while括号里面的条件,再执行循环体里面的循环。
-
实例
#include<iostream> #include <cstdio> using namespace std; int main () { int i = 0; while (i <10) { cout << i << endl; i++; } return 0; }
-
输出
0 1 2 3 4 5 6 7 8 9
**tips :**while(1) ——实用的死循环
二、do while 循环
do while语句与while语句非常相似。唯一的区别是,do while语句限制性循环体后检查条件。不管条件的值如何,我们都要至少执行一次循环。
-
实例
#include<iostream> #include <cstdio> using namespace std; int main () { int y = 1; do { cout << "y!" << endl; y++; } while (y < 1); return 0; }
-
输出
y!
//先do进去执行完,然后再判断while里面的条件,若为真则回去再do,为假则跳出循环
三、for循环
基本思想:把控制循环次数的变量从循环体中剥离。
for (init-statement; condition; expression)
{
statement
}
init-statement可以是声明语句、表达式、空语句,一般用来初始化循环变量;condition 是条件表达式,和while中的条件表达式作用一样,可以为空,空语句表示true
expression 一般负责修改循环变量,可以为空
init-statement可以定义多个变量,expression也可以修改多个变量。
#include<iostream>
using namespace std;
int main ()
{
int sum = 0;
for (int i = 1, j = 10; i < j; i ++, j --)
{
sum += i * j;
}
cout << sum << endl;
return 0;
}
四、跳转语句
-
break
可以提前从循环中退出,一般与if语句搭配。
例题:判断一个大于1的数是否是质数:#include<iostream> using namespace std; int main () { int n ; cin >> n; bool is_prime = true; for (int i = 2; i < n; i++) if (n % i == 0) //判断是否时质数,是就break出来 { is_prime = false; break; } if (is_prime) cout << "yes" << endl; else cout << "no" << endl; return 0; }
-
continue
可以直接跳到当前循环体的结尾。作用与if语句类似。
例题:求1~100中所有偶数的和。#include<iostream> using namespace std; int main () { int sum =0; for (int i = 1; i <= 100; i++) { if (i % 2 == 1) continue; // 如果if为真则相当于跳过这一个i sum += 1; } cout << sum << endl; return 0; }
五、多重循环
菱形——曼哈顿距离