版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计,安徽农业大学 信息与计算机学院,循环结构:有规律地重复某些相同的操作。 循环语句: 1)while语句 2)do while 语句 3)for语句,第5章 循环结构程序设计,5.1.1 一般形式 while (表达式) 循环体语句块; ,功能:先计算表达式的值, 若表达式值为真(值非0),继续执行循环; 若表达式的值假(值为0),循环结束。 转向执行while语句之后的语句。,5.1.1 While语句(“当型”循环),有规律重复执行的操作,【例5.2】 编写一个程序,用户从键盘输入20个数,求它们的和并输出结果。,程序设计分析:使用循环结构,每次输入一个数x,将它累加到变量s
2、um上,重复执行20次这样的操作,便得到最后的结果。,float x,sum=0; /*定义并初始化变量*/ int i=1; /*定义并初始化循环控制变量*/ printf (“请输入数据:n”); while(i=20) /*循环条件*/ scanf(“%f”, /*循环控制变量进行更新自增1 */ ,【例5.1】 编写一个程序,用户从键盘输入整数n,计算 s2+4+6+8+2n并输出计算结果s。 假如输入7,s=2+4+6+8+10+12+14 s=2*1+2*2+2*3+2*4+2*5+2*6+2*7 利用循环进行以下操作 (1)求出第i项 (2)累加到总和;,int i=1, x,
3、n, s=0; /*定义并初始化变量*/ scanf(“%d”,/*显示结果*/,1+3+5+2n-1; 1+1/3+1/5+.+1/(2n-1); 1+1/2+1/3+1/4+1/n; 2/1+3/2+5/3+8/5+;前n项之和. 1!+2!+3!+n!,用相似编程方法求以下各多项式之和:,编写一个程序,用户从键盘输入20个数,找出其中的最大值并输出。,5.1.2 while语句使用说明,1、 while语句是先判断条件,然后决定是否执行循环体。 2、为使循环能正常结束,应保证每次执行循环体后,表达式的值会有一种向“假”变化的趋势 。,如 i=5; while(i0) x+; ,3、在进入
4、循环之前应做好有关变量的初始化赋值操作。如上例中,累加变量s初始化为0,i变量初始化为1。,5.1.3 do-while语句(”直到型”循环),一般形式:,do 循环体语句块; while(表达式);,功能:先执行循环体语句,然后计算表达式的值。 若表达式值为真(值非0),继续执行循环; 若表达式的值假(值为0),循环结束。,float x,sum=0; int i=1; printf (“请输入数据:n”); while(i=20) scanf(“%f”, ,float x,sum=0; int i=1; printf (“请输入数据:n”); do scanf(“%f”, while(i=
5、20),【例5.4】用do-while语句完成【例5.2】的要求,用户从键盘输入20个数,求它们的和并输出结果。,#include void main( ) float x , sum=0; int i=1; /*定义并初始化循环控制变量*/ printf ( “请输入数据:” ); do scanf ( “%f”, ,【例5.3】用do-while语句完成【例5.1】的要求;计算s2+4+6+8+2n并输出计算结果s。,void main( ) int i=1, x, n, s=0 ; printf( “请输入n的值:” ); scanf ( “%d”, ,5.1.4 do-while语句使
6、用说明,1、do-while语句与while语句的使用方法相同,都由循环继续条件来决定循环体语句是否继续被重复执行。 2、与while循环一样,为使循环能正常结束,也应保证每次执行循环体后,表达式的值会有一种向“假”变化的趋势,防止不要出现死循环。,5.2 for 循环结构和循环的嵌套,一般形式: for(表达式1;表达式2;表达式3) 循环体语句; 功能:先执行表达式1语句,然后判断表达式2的值是否为真(值非0);如果为真,则执行循环体语句,接着执行表达式3,再判断表达式2的值;如此重复执行,直到表达式2的值为0终止循环,跳转到循环体之后的语句执行。 for ( 循环变量赋初值;循环继续条件
7、;循环变量更新 ) 循环体语句,【例5.6】 使用for循环语句实现例【5.2】的要求,用户从键盘输入20个数,求它们的和并输出结果。,#include void main() float x,sum=0; /*定义并初始化变量*/ int i; /*定义并初始化循环控制变量*/ printf ( “请输入数据:” ); for ( i=1; i=20; i+ ) scanf(“%f, ,【例5.5】用for语句完成【例5.1】的要求,计算s2+4+6+8+2n并输出计算结果s。,#include void main int i, x , n , s=0; /*定义并初始化变量*/ print
8、f ( “请输入n的值:”) ; scanf ( “%d” , ,5.2.2 for循环语句使用说明,1、for语句可以取代while语句或do-while语句,尤其对于确定循环次数的循环,使用for语句让程序结构更加直观和容易理解。 2、for语句中()中的三条表达式语句可以省略,即可以将它们写在程序其他地方,但是它们之间的分号“ ;”不可省略。,如何选择循环语句,需要入口条件循环 涉及到循环控制变量初始化和更新的时候,即循环次数已知的情况( 用for语句) 不涉及循环控制变量的时候使用while循环 (while语句 ) 出口条件循环 do-while语句,5.2.3循环嵌套的形式,在一个
9、循环体内有包含另一个完整的循环结构,这样的循环结构称为循环的嵌套,也就是多层循环。其中包含其他循环、处于外部的循环叫外层循环,被包含在内部的循环也叫内层循环。,(2) for (; ; ) while () (4)for (; ; ) for (; ; ) ,(1)while () for (; ; ) (3)for (; ; ) do while() ,#include void main( ) 定义并初始化变量; 请输入n的值; for( i=1; i= n; i+ ) /*外层循环*/ 计算i!值; /*内层循环计算i!*/ 将i!的值累加到s中;/*累加到s中*/ /*for循环结束*
10、/ 显示计算结果; ,j=1; x=1; while(j=i) x=x*j; j+; ,int i,j,x,s=0;,【例5.7】编写程序,计算s1!+2!+3!+.+n!,其中n是由用户输入的整数(小于8),计算完成后显示结果。,#include void main( ) int i,j,x,n,s=0; printf(“请输入n的值:”); scanf(“%d”, /*显示结果*/ ,内层循环,外层循环,5.3流程转向语句,break语句: break; 作用:强行结束循环,跳出本层循环转向循环体外的下一条语句。 通常与if语句在一起使用: if(条件表达式) break;,#includ
11、e void main ( ) int i=1, s=0; while ( i999 ) break ; /*终止循环*/ printf (“s=%d”, s ); ,例如:,注意:break语句只能跳出一层循环,如果它位于多层嵌套循环的内层,那么只能终止break语句所在的那层循环。,int i, j; for (i=0; i100) break; /*跳出内层循环*/ if (i100 ) break; /*跳出外层循环*/ ,continue语句 continue; 功能:跳过当前循环体剩余语句,直接开始执行下一轮循环。,通常与if语句在一起使用: if(条件表达式) continue;
12、,【例5.9】计算1000以内所有不能被3整数的正整数之和并显示结果。,#include void main ( ) int i, s=0; for (i=1; i1000; i+) if ( i%3 = 0) continue ; /*结束本轮循环*/ s += i ; printf (“s=%d”, s ); ,【例5.11】编写一个程序,接收用户从键盘输入的字符,当用户输入回车时表示确认输入,统计用户输入了多少个字符(不含回车符)。,程序设计分析: 1)无法预知循环的执行次数; 2) 使用循环来接收用户的输入,每次接收一个字符都判断以下是否是回车符,如不是则把计数变量的值增加1。,5.4
13、 循环结构程序举例,#include void main ( ) char c; int i=0; /*计数变量初始化*/ printf (“请输入字符串(以回车确认):n”); c=getchar( ); /*接收字符*/ while (c != n) /*判断是否是结尾*/ i+; /*计数增加1*/ c=getchar( ); /*继续接收字符*/ printf(“字符串中共%d个字符!”, i ); ,【例5.12】编写程序完成功能:输入一个大于或等于0的整数,计算它是一个几位数(0算一位整数)。,#include void main ( ) int x , n; printf (“请
14、输入一个整数:”); scanf (“%d”, ,* * * * * * * * * * * * * * *,* * * * * * * * * * * * * * * * * * * * * * * * *,* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *,1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1,1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 3 2 1 1 2 3 2 1 1 2 1 1,a a b a b c a b z,图1,图2,图3,图4,图5,图6,输出图形,方法:主要是找规律 1、图形总共有几行并寻找其变化规律用循环控制实现 2、寻找每行符号的变化规律 每一行的空格个数与行数之间的关系(用一个内循环实现) 如果每行显示相同字符但字符个数不同,则按其规律找出显示的字符个数与行数之间的关系(用一个内循环实现) 如果每行显示不同的字符,则找到这些字符的变化规律与行数之间的关系(用一个或几个内循环实现)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 稀硝酸工进度管理能力考核试卷含答案
- 弹簧制作工岗前深度考核试卷含答案
- 电子商务师岗前岗位适应能力考核试卷含答案
- 保卫管理员岗位工艺规程考核试卷含答案
- 硝酸铵结晶造粒工岗位标准化考核试卷含答案
- 船舶修理工岗位趋势考核试卷含答案
- 设计院消防安全评估报告
- 高危孕产妇专案管理制度
- 2026年山西工程职业技术学院高职单招笔试职业技能测验历年参考题库含答案解析
- 2026年宣化科技职业学院高职单招笔试化学历年参考题库含答案解析
- 浙江省强基联盟2026-2027学年高二上学期10月阶段检测英语试卷(含解析)
- 校园欺凌事件分析调研报告(2026版)
- 2026年基本公共卫生服务项目考试试卷附答案(高血压患者健康管理)
- 2026年中石化重型起重运输工程公司人员招聘考试备考试题及答案
- 8.1 贯彻新发展理念 课件(内嵌视频)2026-2027学年统编版道德与法治九年级上册
- 2026中国联通校园招聘考试(通信技术)历年参考题库含答案详解
- 2026年部编新修订版道德与法治四年级上册第四单元测试题(含答案)
- 地下水污染溯源调查实施方案
- 2026年中国电信校园招聘考试笔试试题及答案
- 水库大坝除险加固设计导则(2026版)
- 《内科学》课件-1.消化性溃疡
评论
0/150
提交评论