# 【伴隨編程】使用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 。
現在,快來運行一下這個程序,看看結果吧!你可以多試幾個值,進一步了解兩者之間的差別。
- 教材介紹
- 《編程初學入門常識》
- 什么是程序語言
- 【知識精講】編程與編程語言
- 【選擇測試】編程語言分類
- 【知識精講】高級語言分類
- 【選擇測試】編譯與解釋
- 【選擇測試】程序員笑話-Java
- 熟悉鍵盤上用于編程的鍵位
- 【知識精講】認識你的鍵盤
- 【知識精講】中文和英文字符
- 【匹配測試】識別中英文符號
- 【選擇測試】中英文符號的影響
- 【伴隨編程】不要使用中文引號
- 【伴隨編程】不要使用中文分號
- 【伴隨編程】正確地輸入符號
- 【選擇測試】找出程序中的錯誤
- 初始工程師思維
- 【知識精講】二進制思想
- 【選擇測試】程序員笑話-湊整
- 【知識精講】閉合的邏輯
- 【選擇測試】程序員笑話-條件
- 程序員職業與生活
- 【知識精講】程序員的發展方向
- 【知識精講】程序員的裝備
- 【知識精講】程序員的健康
- 【選擇測試】做一名健康的程序員
- 《C++程序設計》
- 前言
- 【知識精講】編程與計算機科學
- 【知識精講】編程與軟件工程
- 【知識精講】如何學習編程
- 你好C++
- 【知識精講】你好,C++
- 【知識精講】C++程序是如何開發的
- 【知識精講】成為一名Power User
- 【伴隨編程】讓我們一起說你好
- 【知識精講】你的第一個C++語言程序
- 【伴隨命令】編譯、運行你的程序
- 【伴隨編程】將變量流式輸出
- 【選擇測試】變量的作用域
- 【知識精講】變量與數據類型
- 【匹配測試】C++語言的入門概念
- 【知識精講】在程序中學會換行
- 【選擇測試】正確地換行
- 簡單數學運算
- 【知識精講】重新認識基本運算
- 【選擇測試】運算符的理解
- 【伴隨編程】做一下簡單的運算
- 【伴隨編程】a 的 n 次方
- 【知識精講】數學函數
- 【伴隨編程】讓C++語言變成計算器
- 【伴隨編程】計算球的體積
- 【匹配測試】數學世界知多少
- 【知識精講】在程序中添加注釋
- 【選擇測試】正確地寫注釋
- 從伴隨輸入到變量地址
- 【伴隨編程】 一個數字復讀機器
- 【選擇測試】理解標準輸入輸出
- 【伴隨編程】一個加法計算器
- 【程序設計】A+B+C問題
- 【伴隨編程】簡單的I/O格式控制
- 【知識精講】地址與取地址符
- 【伴隨編程】看看我們的地址
- 習題一:面積與周長
- 【程序設計】矩形面積與周長
- 【程序設計】三角形面積與周長
- 【程序設計】圓形面積與周長
- 程序中的是與非
- 【知識精講】是非的表示與關系運算
- 【伴隨編程】驗一驗關系運算式
- 【選擇測試】關系運算式求值
- 【知識精講】如果的意義
- 【伴隨編程】分段函數求值
- 【知識精講】如果之后的如果
- 【伴隨編程】五則運算器
- 【選擇測試】分支的嵌套
- 【伴隨編程】問號表達式
- 【知識精講】是非之間的邏輯組合
- 【伴隨編程】判斷閏年
- 【程序設計】日期合法性
- 【知識精講】多路順序結構
- 【知識精講】在程序中學會縮進
- 【選擇測試】正確的縮進
- C++程序中的苦力
- 【知識精講】使用循環結構
- 【選擇測試】對比兩種循環
- 【伴隨編程】使用while循環
- 【填空測試】理解循環結構
- 【知識精講】自減和自增運算符
- 【伴隨編程】使用自增運算符
- 【知識精講】for循環
- 【選擇測試】for循環的使用
- 【程序設計】一大波好玩兒的程序
- 《代碼能力快速提升》
- 《基礎數據結構》
- 《搜索入門》
- 《動態規劃基礎》
- 《數論和基礎數學》
- 《圖和數基礎》