课程首页 › 第3部分 › 第31课

第31课 不睡觉的计算机

第3部分 不辞辛苦 · 循环结构· 知识点:while循环

不睡觉的计算机(while循环)

插图

计算机的强大在于超强的计算能力和无休止的运算,当我们给程序赋予循环力量的时候,它们的实力将更加凸显。

温故知新

用“*”组装一个吃豆人张嘴闭嘴的小图案。

张嘴:

闭嘴:

吃豆人不断地交替张嘴、闭嘴,并且向前移动。

插图

(1)int i=3:声明了一个整数变量i,并初始化为3。这个变量i将用于控制图案的宽度,初始宽度为3个字符。随着不断地进行i++增加字符宽度,左边不断用空格补充,于是就实现了吃豆人向前移动的效果。

●i=3

插图

●i=6

插图

●i=12

插图

(2)while(true){}:这是一个无限循环,也叫作死循环。因为循环条件永远为真,所以循环会一直执行下去。

插图

(3)i++:每循环一次,i自增1,于是setw(i)函数使得输出字符的宽度也增加1。*图案靠右对齐,于是就有了前进的效果。

划重点

while(true){

执行指令

①while是C++中的一个关键字,表示一个循环结构。

②(true)是循环的条件部分,括号内的条件表达式负责判断循环是否继续执行。当条件表达式直接写成true时,意味着条件永远为真,因此循环会无限制地执行下去。

插图

无限循环通常用于需要一直运行的任务,例如游戏循环、服务器监听等,它们需要不间断地运行。

插图
插图

数字宝藏

有一座神秘的岛屿,埋藏着传说中的数字宝藏。这个宝藏由一系列数字组成,只有找到了所有数字的总和,才能揭示宝藏的真正位置。

作为数字宝藏寻找者中的一员,你的任务是输入岛上的每个人所知道的数字,然后计算这些数字的总和。只有当你找到了所有数字并计算出总和,才能揭示宝藏的位置。

每个居民都知道且只知道一个数字,他们愿意与你分享,你需要不断地询问岛上居民。当你不再想继续输入数字时,可以输入-1来结束。

现在,你将使用程序来记录和计算这些数字,以找到宝藏。开始你的数字冒险吧!

通过while循环实现数字的连续输入,并且累加求和。

插图

运行程序:

请输入要相加的数字:1

请输入要相加的数字:2

请输入要相加的数字:3

请输入要相加的数字:4

请输入要相加的数字:5

请输入要相加的数字:6

请输入要相加的数字:7

请输入要相加的数字:8

请输入要相加的数字:9

请输入要相加的数字:-1

最终的计算结果是:44

(1)声明两个变量:一个num用于数字输入,一个sum用于求和。

(2)每次进入while循环前都需要进行圆括号里的条件判断,条件为真才能进入循环。

插图

(3)如果条件不成立(false),则跳出循环,执行下一条语句。

插图

(4)通过流程图来看循环。

插图

敲黑板

while(){}与if(){}的比较:

插图
插图

提出思考

为什么最终的计算结果出现错误了呢,明明相加是45,但是输出却是44?

一探究竟

第一次循环输入1,此时sum为0,num为1,sum=sum + num=0 + 1=1。

第二次循环输入2,此时sum为1,num为2,sum=1 + 2=3。

第八次循环输入8,此时sum为28,num为8,sum=28 + 8=36。

第九次循环输入9,此时sum为36,num为9,sum=36 + 9=45。

问题出在哪呢?

此时num为9,循环还没有结束,然后输入-1。

第十次循环输入-1,在判断之前还进行了一次求和。

插图

如何才能解决呢?

调换一下输入数字和求和的顺序?

插图

这会导致还没输入数字就先进行一次求和,会有问题吗?

其实不会,一开始sum为0,num为0,0+0=0,不影响结果。

插图

巩固练习

(1)下面哪段代码会输出数字1~10(包括1和10)?()

A.

int i=0;

while(i<=10){
cout<<i<<""; i++;}

B.

int i=0;

while(i<10){
cout<<i<<""; i++;}

C.

int i=1;

while(i<=10){
cout<<i<<""; i--;}

D.

int i=10;

while(i>0){
cout<<i<<""; i--;}

(2)阅读以下代码,填写输出结果。

#include
using namespace std;
int main(){

int i=0; while(i<5){

cout<<i<<""; i +=2;}
return 0;}

输出:

(3)编写一个C++程序,将班级中学生的考试成绩逐一输入,直到输入一个-1才停止,使用while循环计算并输出学生考试成绩的平均值。