while循环
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while 循环
语法形式:
while(条件)
{
需要循环执行的语句;
}
while 是“当”的意思。
请首先和if语句作一个比较:
if(条件)
{
条件成立时执行的语句;
}
二者除了关键字不一样以外,结构完全一样。但一定要注意,在条件成立时,if语句仅仅执行一遍,而while语句则将反复执行,直到条件不再成立。
请看while循环的流程图:
程序从“前面的语句”开始执行,然后进行条件判断,如果条件成立,则执行一次“每次循环执行
的语句”,再后请特别注意红色部分,这是我们碰上的,第一次会往后走流程:红线就像汽车拐弯,
掉头到条件处(并不包括前面的语句),然后再进行下一次的条件判断……直到某一次判断时条件不
成立了,程序“继续后面的语句”。
我们用while的语法套用生活中的实际例子,可以直观地看出while的用法。
假设有一个爱哭的小娃娃,有一天她要求父母给买一条小红裙,可惜父母不同意,于是她就开始一个循环:
while ( 父母不给买小红裙)
{
我哭;
}
这段“代码”的意思是:当“父母不给买小红裙”,那么,小女孩就一遍一遍地哭。
这就是我们和循环流程的第一个遭遇战。所举的例子看似直观:“小孩一遍遍地哭,直到父母给买裙”,但真正要用程序的语言来正确地表达出来,需要很多方面要考虑到,必竟,程序是严谨的。
首先,一个合适的判断是否继续的条件相当重要。小女孩要继续哭,仅仅“父母不给买小红裙”,这显示不符合事实,想想我们小时候,再会哭,最终也有累的时候,所以,要想继续哭,我们的条件有两个:“父母不给买小红裙”并且“我还没有哭累”。
while ( 父母不给买小红裙&& 我还没有哭累)
{
我哭;
}
其次,大多数情况下,条件需要被恰当地改变。小女孩在不停地哭,那么她如何知道父母是否买了红裙呢?所以,她不能只顾哭,还得在哭的间隙观察大人是否同意买裙。至于是否哭累,我们假设小女孩有一个疲劳度,每哭一次疲劳度加1,当疲劳度到达200时,可怜的小女孩累了……
while(父母不给买小红裙&& 疲劳度< 200)
{
我哭;
我偷看爸妈是否同意买裙;
疲劳度++;
}
例一:用while 语句实现求从1到100的累加和。
求1+2的和,我们可以写a = 1 + 2;求1加到100,我们当然可以这样写a = 1 + 2 + 3 + ... 100.不过这样写显然太累人了,要从1写到100啊!所以聪明如高斯的你,当然也知道这样写:a = (1+100) * 50;这确实是个在任何时候都值得称赞的,又快又简的方法,只是今天我们想让计算机累一点,老老实实地从1加到100。首先用我们先学的while式的循环。
请同学们打开CB,然后新建一空白的控制台程序,在main()函数体加入下面黑体部分代码。然后按F9运行。查看运行结果以加深印象。
//---------------------------------------------------------------------------
#include
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int sum = 0; //变量sum将用于存储累加和,将它初始化为0,这很重要。
int i = 1; //i是每次要加的数,它从1开始。
while ( i<= 100)
{
sum += i;
i++;
}
//输出累加结果:
cout << "1到100的累加和为:" << sum << endl;
getchar();
}
sum 初始为0,然后在每一遍的循环里,它都加上i,而,i则每次都在被加后,增加1。最终,i递增到101,超过100了,这个循环也就完成了任务。
运行上面程序,输出结果为:
11005050
例二:用while循环实现简单的统计功能
统计功能在各行业里都经常用到,比如学校学生成绩总分的统计,商店中每日销售额的统计等。下面我们实现一个学生成绩的统计。
由于成绩中包含有80.5这样的需要小数的部分,所以我们使用实数类型。
保存,然后关闭上面的工程,然后再新建一个控制台工程。在主函数main加入以下黑体部分的代码:
//---------------------------------------------------------------------------
#include
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
float sum,score;
int num; //num 用于存储有几个成绩需要统计。
int i; //i 用于计数
//初始化:
sum = 0;
i = 1;