- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 循环结构
在程序设计中,如果需要重复执行的某些操作,就要用到循环结构。使用循环结构编程时,首先要明确2个问题,哪些操作需要重复执行?这些操作在什么情况下重复执行?它们分别对应循环体和循环条件,然后就可以选用C语言提供的3种循环语句: while、do-while 、for实现循环,这写循环语句我们在第一章“1、2 C语言程序设计语法”和第二章“2.6字符类型”中也都见过,而第二章2、4节的用if语句和goto语句构成“直到型(无条件转移)”也叫循环结构。
3.1 while 语句
while是用来实现循环的语句,而且它的适用面很广。其一般格式为:
while (表达式)
循环语句;
其执行的流程如图3.1所示。当表达式的值为“真”时,循环执行,直到表达式的值为“假”,循环终止并继续执行while的下一条语句。
while语句的用法: 假
(1)while语句中的表达式可以是任意合法的表达式, 表达式
循环体语句只能是一条语句。 真
(2)while语句的构成简单,只有一个表达式和一条 循环体语句
循环体语句,分别对应循环的两个核心要素:循
环条件和循环体,可以直接把循环问题的分析设
计转换为语句实现。 While的下一条语句
(3)循环的实现一般包括4部分,即初始化、条件控 图3.1 while语句的执行流程
制、重复的操作以及通过改变循环变量的值最终
改变条件的真假性,使循环能正常结束。当使用while语句时,由于它只有2个
成分(表达式和循环体语句),就需要另加初始化部分,第4部分while的循环体
语句中必须包含能最终改变循环条件真假性的操作。
例3.1 从键盘输入一批学生的成绩,计算平均分,并统计不及格学生的人数。
这是一个累加求和的问题,将输入的成绩先累加,最后再除以学生的数量,算出平均分。本题的难点在于确定循环条件,由于题目中没有给出学生的数量,不知道输入数据的个数,所以无法事先确定循环次数,这时需要自己设计循环条件,可以用一个特殊的数据作为正常输入数据的结束标志,由于成绩都是正数,就选用一个负数作为结束标志,因此,循环条件就是输入的数据grade=0 。
#include stdio.h
int main()
{ int num=0,fai=0; //num记录输入数据的个数,以便统计平均分;fai记录不及格人数
double grade , total=0; //grade存放输入的成绩,total保存成绩之和
printf(Enter grades:\n); //输入提示
scanf(%lf,grade); // 输入第一个学生成绩
while( grade = 0 )
{ total = total + grade; //累加成绩
num ++; // 计数
if(grade60) fai++; // 不及格人数统计
scanf(%lf,grade); //再读入一个新数据,为下次循环做准备
}
if(num!=0)
{ printf(Grade verage is %.2f\n,total/num); //total/num是累加成绩/成绩个数=平均分
printf(“不及格学生的人数为(failures):%d\n”,fai);
}
else
printf(Grade average is 0\n);
return 0;
}
例3.2 猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半多一个。以后每天早上都吃了前一天剩下的一半多一个,到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘下多少桃子。程序编写如下:
#include stdio.h // 第10天是1,因为4的1半是2,多1个是3,第10天是1了
main() // 第9天是(1+1)*2=4 (1+1)*2=4是第9天的4
{ int day=9,x1,x2=1; //x1前1天数,x2后1天数 // 第8天是(4+1)*2=10 第8天1
文档评论(0)