北京科技大学《C语言》第5章

上传人:宝路 文档编号:4673152 上传时间:2017-08-06 格式:PPT 页数:46 大小:1.41MB
返回 下载 相关 举报
北京科技大学《C语言》第5章_第1页
第1页 / 共46页
北京科技大学《C语言》第5章_第2页
第2页 / 共46页
北京科技大学《C语言》第5章_第3页
第3页 / 共46页
北京科技大学《C语言》第5章_第4页
第4页 / 共46页
北京科技大学《C语言》第5章_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《北京科技大学《C语言》第5章》由会员分享,可在线阅读,更多相关《北京科技大学《C语言》第5章(46页珍藏版)》请在金锄头文库上搜索。

1、第5章 循环结构程序设计,北京科技大学 计算机系,C 语言程序设计,2017/10/13,2,问题1:如何根据收入,确定一个人的纳税比例及纳税额?,当一个公司有多名员工时,如何计算每个人的纳税比例及纳税额?,提出问题:,C语言:循环语句,?,?,问题2如何根据学生的分数判断是否及格?,如何根据全班学生的分数,分别判断他们是否及格?,2017/10/13,3,本章主要内容,while循环控制do-while循环控制for循环控制用goto语句实现循环控制循环结构中的跳转语句循环的嵌套循环结构程序设计举例,2017/10/13,4,5.1 while循环控制,语句一般格式 while (表达式)

2、语句,一般为关系表达式或逻辑表达式,也可以是C语言其他类型的合法表达式 用来控制循环体是否执行,称为内嵌语句,可以是基本语句、控制语句,也可以是复合语句是循环重复执行的部分,2017/10/13,5,功能:,计算表达式的值,为非0(逻辑真)时,重复执行内嵌语句,每执行一次,就判断一次表达式的值,直到表达式的值为0 时结束循环,转去执行while后面的语句。,循环控制条件,循环体,2017/10/13,6,例如:,【例5.1】编写程序,求100个自然数的和即: s=1+2+3+ +100,思路:寻找加数与求和的规律,加数i从1变到100,每循环一次,使i增1,直到i的值超过100。i的初值设为1

3、。求和设变量 sum 存放和,循环求sum=sum+i,直至i超过100。,2017/10/13,7,算法和程序:,main( ) int i,sum; i=1; sum=0; while (i=100) sum=sum+i; i+; printf(sum=%dn,sum);,运行jc5_1,程序输出结果:sum=5050,i: 循环控制变量sum: 累加器,2017/10/13,8,注意:,如果while的 (表达式) 值为0,则循环体一次也不执行 (例如当i的初值=101) 。在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 在循环体中,语句的先后位置必须符合逻辑,否则

4、会影响运算结果。,思考程序段的输出? while (i=100) i+; sum=sum+i; ,运行后,输出:sum=5150原因是什么?,2017/10/13,9, int i=0;while ( +i +i; 判断 i=100 sum += i; int i=0;while ( i+ 判断i100;i+ sum += i; int i=0;while ( i +i; sum+=i,不同的while 语句形式,设:sum=0; int i=1;while ( i sum+=i; +i ;,运行结束后: i、sum = ?,运行结束后:i=101,sum=5050i=101,sum=5050

5、i=101,sum=5050i=100,sum=5050,运行jC5_a,2017/10/13,10,其他的while 语句形式,while (0) . 由于表达式恒等于0,所以循环体永远也不会执行,是一个逻辑错误的语句,while (1) . 由于表达式恒等于1,所以不可能通过循环控制条件来结束循环体的执行,即死循环。为了保证循环正常运行,应该特别注意: 循环控制条件的描述 控制条件的初始状态(初始值) 循环体内部对控制条件的影响,2017/10/13,11,5.2 do-while语句,语句一般格式 do 语句 while (表达式); 功能:先执行内嵌语句(循环体),之后计算表达式的值,

6、不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为 0 结束循环,转去执行while下面的语句。,2017/10/13,12,do-while循环的算法,N-S结构图,main( ) int i=1,sum=0; do sum=sum+i; i+; while (i=100); printf(%dn,sum);,用do-while语句求100个自然数的和,2017/10/13,13,说明:,while和do-while都能实现循环控制,while结构程序通常都可以转换成do-while结构,区别:do- while 语句先执行循环体再判断条件,循环体至少执行一次; while 语句先

7、判断条件再执行循环体,循环体有可能一次也不执行dowhile循环体中一定要有能使表达式值趋于0的操作(如i+),否则会出现死循环。,2017/10/13,14,do-while语句的简单应用,【例5.3】用辗转相除法求m和n的最大公约数,思路:先求m和n相除的余数r然后将mn,将nr,并判断r(或n)如果r0,再重复求余数,直到 r 等于 0 时结束循环此时的m为最大公约数,2017/10/13,15,算法和程序:,main( ) int m,n,r; scanf(%d, %d,&m,&n); if (mn) r=m; m=n; n=r; do r=m%n; m=n; n=r; while(r

8、!=0); printf(%dn,m); ,运行jc5_3,程序运行情况如下:24, 6012,2017/10/13,16,5.3 for语句,语句一般格式 for (表达式1;表达式2;表达式3) 语句,功能:计算表达式1的值,再判断表达式2,如果其值为非0(逻辑真),则执行内嵌语句(循环体),并计算表达式3;之后再去判断表达式2,一直到其值为0时结束循环,执行后续语句。,循环初始条件,循环控制条件,循环体,2017/10/13,17,for语句的算法,例如:main( ) int i,sum; sum=0; for ( i=1; i=100; i+) sum=sum+i; printf(s

9、um=%dn,sum);,可部分或全部省略,但“;”不可省略,2017/10/13,18,省略for语句的表达式, 表达式1、2、3全省略,即: for ( ; ; ) 就等同于:while (1),会无限循环(死循环),注意:在省略某个表达式时,应在适当位置进行循环控制的必要操作,以保证循环的正确执行, 省略表达式1和表达式3,即: for(;表达式2;) 就等同于:while( 表达式2 ) 省略表达式2,即: for(表达式1; ;表达式3) 就等同于:表达式1; while(1)表达式3;,2017/10/13,19,例如:, i=1; for ( ; i100) for (i=1;

10、i100) i+; ,2017/10/13,20,说明:,所有用 while 语句实现的循环都可以用for 语句实现。,等价于:,for(表达式1;表达式2 ;表达式3) 语句;,表达式1;while (表达式2) 语句; 表达式3; ,2017/10/13,21,for语句的简单应用,【例5.4】求n! ,即计算p=123n的值。,思路:求阶乘与求累加的运算处理过程类似,只要将“+”变为“*”。,设置:乘数i ,初值为1,终值为n(n是循环控制终值,需要从键盘输入)累乘器 p ,每次循环令p = p*i,2017/10/13,22,程序:,main( ) int i, n; long p;

11、p=1; printf(Enter n:); scanf(%d,&n); for (i=1; i=n; i+) p = p * i; printf(p = %ld n,p);,思考:如何输出1!, 2!, , n! ?如何求s =1!+ 2!+ + n! ?,运行jc5_4,2017/10/13,23,熟悉几个循环语句,while (!x) x+; 当 x=0 时,执行循环体x+;,while (c=getchar( ) != n) n=n+1; n 称为计数器,作用是统计输入字符的个数while (num+5); 先执行循环体x*=-3,再判断条件(x5) for (n=0; n26; n+

12、) printf(%c , n+A); 作用是输出26个大写字母for (sum=0, i=1; i=100; sum=sum+i, i+=2) ;作用是计算100以内的奇数和,2017/10/13,24,几种循环语句的比较,while和do-while语句的表达式只有一个,for语句有三个。while 和for先判断循环条件后执行循环体,do-while语句先执行循环体后判断循环条件。,while语句多用于循环次数不定的情况do-while语句多用于至少要运行一次的情况for语句多用于要赋初值或循环次数固定的情况,2017/10/13,25,5.4 用goto语句实现循环,有兴趣的同学自学不

13、提倡使用goto语句,注意:goto语句能实现程序无条件转移,为编程提供了便利。但是无限制地使用,会破坏程序的结构化程度。因此应限制使用。,2017/10/13,26,5.5 循环结构中的跳转语句,有如下三种语句实现跳转:continue语句break语句goto语句在循环语句的循环体中使用,可以进行循环的流程控制,2017/10/13,27,5.5.1 continue语句及应用,功能:中断循环体的本次执行(即跳过循环体中尚未执行的语句),立即开始执行下一次循环。,continue;,while语句,continue;,do-while语句,continue;,for语句,2017/10/13,28,例如:, int x,n=0,s=0;while (n10) scanf(%d,&x); if (x0) continue; s+=x; n+; ;, int x,n=0,s=0;do scanf(%d,&x); if (x0) continue; s+=x; n+; while (n10);, for (n=0,s=0; n10; ) scanf(%d,&x); if (x0) continue; s+=x; n+; ,2017/10/13,29,应用举例,【例5.7】把100200之间能被7整除的数,以十个数为一行的形式输出,最后输出一共有多少个这样的数。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号