ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 【伴随编程】使用while循环 ``` #include<iostream> using std::cin; using std::cout; using std::endl; int main(){ int i = 1,sum = 0; //请在下面输入代码 cout << sum << endl; return 0; } ``` 刚才我们已经介绍了两种基本的循环结构,现在我们就来实际演练一下这两种循环结构的使用方法吧!现在,我们来执行一个累加算法,求出自然数 111 到 101010 的和——通过循环语句来实现。 正所谓“万事开头难”,所以这一次首先由小蒜来教你怎么实现——我们先试着使用一下`while`循环结构。首先我要有一个用于记录和的变量`sum`,以及一个记录已循环次数的变量i。 累加算法的流程是让 `i` 从 111 增加到 101010 ,并且每增加一次都累加到`sum`变量上,所以我们可以知道:循环体的结构就是每一次都把 `i`的值累加到 `sum` 上,然后让`i`加1,而循环继续执行的条件自然就是`i`不超过要累加的最大数 101010 了。 这里,我们先在已有的程序架构后面写上`while`循环的基本框架: ~~~ while (i<=10) { } ~~~ 很好,现在让我们来添加循环体代码:我们要先把`i`的值累加到`sum`上,然后再让`i`加 1 ——这样当循环执行了十次之后,`i`的值会变成 11,然后循环条件不再满足,循环就会自动终止。 现在请把这两个语句写到循环体中,注意别写错位置了哦! 非常棒!现在我们来运行一下这个程序吧!请点击“运行”,看看输出的结果跟我们的预期是不是一样(根据算术级数求和公式,1 加到 10 的和为 55)。 ``` #include<iostream> using std::cin; using std::cout; using std::endl; int main(){ int i = 1,sum = 0; //请在下面输入代码 while(i<=10){ sum=sum+i; i=i+1; } cout << sum << endl; return 0; } ``` 接下来让我们试一试`do...while`循环的用法——请大家回忆一下`do...while`循环与`while`循环的区别,你会发现这里我们不需要改动已经写好的循环体,,只要把`while`的部分改成`do`,然后在循环体的右花括号外写下`while`和条件表达式就可以了,试着改一下吧! ``` #include<iostream> using std::cin; using std::cout; using std::endl; int main(){ int i = 1,sum = 0; //请在下面输入代码 do{ sum=sum+i; i=i+1; }while(i<=10); cout << sum << endl; return 0; } ``` 很好,接下来让我们运行一下程序,看一下跟之前算出的结果是否一样吧! 这个时候你一定会问——这两者既然算出的结果都一样,那它们又有什么区别呢?接下来让我们来体会一下这两者的差别吧! 首先让我们把i的值改为 11,然后再运行一次`do...while`循环,看看程序会输出什么样的结果。现在请把i的值改为 11 现在请大家运行一下这段代码。 可以看到,`sum`的值输出为 11——也就是说,`i`的值 111111 已经被累加进了`sum`里,说明这个循环执行了一次。那么,`while`循环又有什么区别呢?大家快来试一试吧!现在请把`do...while`循环重新改为`while`循环。 ``` #include<iostream> using std::cin; using std::cout; using std::endl; int main(){ int i = 11,sum = 0; //请在下面输入代码 while(i<=10){ sum=sum+i; i=i+1; } cout << sum << endl; return 0; } ``` 我们已经介绍过,跟`do...while`循环不同,`while`循环在开始执行循环体之前会首先检查表达式条件是否满足——现在i的初始值是 11 ,显然不在`i<=10`的范围内,所以这个循环一次都不会执行,输出的`sum`结果自然就是没有经过累加的初始值 0 。 现在,快来运行一下这个程序,看看结果吧!你可以多试几个值,进一步了解两者之间的差别。