在循环结构中,除了for结构,还有while结构,包括了while和do-while两种形式。

while 结构

语句结构

while(条件表达式)
	语句1;
while(条件表达式){
	语句1;
	语句2;
	语句3;
	……
}

注意

1.如果循环体只有一句(语句1),不需要花括号,它将在满足条件的情况下被重复执行。

2.如果循环体部分由多个语句构成,必须由一对花括号括起来,形成一个语句块的形式。

3.写while循环语句时,循环体的语句相对于while缩进一格。

语句执行结构

  1. 判断while后面的条件表达式的值,得到逻辑真或假。
  2. 若为真,则执行了一遍循环体,结束while循环。
  3. 循环体的所有语句执行结束后,自动转向第1步执行。

【题目1】用while循环,计算1到100之和。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include<iostream>
using namespace std;
int main(){
    int s = 0, n = 1;
    while(n <= 100){
        s += n;
        ++n;
    }  
    cout << s <<endl;
    return 0;
}

【题目2】已知,$s = 1+2+3+\dots +n$,求当$s>1000$时,$n$最小值是几?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include<iostream>
using namespace std;
int main(){
    int s = 0, n = 0;
    while( s<= 1000){
        ++n;
        s += n;   
    }  
    cout << n <<endl;
    return 0;
}

do-while 结构

语句结构

do
	语句1;
while(条件表达式);
do{
	语句1;
	语句2;
	语句3;
	……
}while(条件表达式);

注意

1.do-while结构最后要加;

2.do-while和while的不同之处在于执行过程。

语句执行过程

  1. 先执行一遍循环体。
  2. 判断while后面的“条件表达式”的值。
  3. 若为真,则自动转向第1步,否则结束do-while循环,继续执行其后面的语句。
  4. 在while和do-while循环体中也可以使用break语句,用它来非正常结束循环的执行。

【题目】球弹跳高度的计算 一球从某一高度h落下(单位:米),每次落地后反跳回原来高度的一半,再落下。编程计算球在第10次落地时,共经过多少米?第10次反弹多高? 输入球的初始高度h。输出包含两行,第1行:球在第10次落地时,一共经过的距离。第2行:第10次弹跳的高度。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std;
int main(){
    float s = 0, h;
    cin >> h;
	s += h;//第1次落地的距离
	int n = 2;//从第2次落地开始使用do-while循环
    do{
		s += h;//第n-1次弹起到第n次落地的距离
		h /=2.0;
        ++n;
    }while(n < 10);

    cout << s <<endl;
    cout << h <<endl;
    return 0;
}

公众号:格致书院