哈工大c语言教学PPT6 循环控制结构

上传人:l**** 文档编号:136307617 上传时间:2020-06-27 格式:PPT 页数:76 大小:2.71MB
返回 下载 相关 举报
哈工大c语言教学PPT6 循环控制结构_第1页
第1页 / 共76页
哈工大c语言教学PPT6 循环控制结构_第2页
第2页 / 共76页
哈工大c语言教学PPT6 循环控制结构_第3页
第3页 / 共76页
哈工大c语言教学PPT6 循环控制结构_第4页
第4页 / 共76页
哈工大c语言教学PPT6 循环控制结构_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《哈工大c语言教学PPT6 循环控制结构》由会员分享,可在线阅读,更多相关《哈工大c语言教学PPT6 循环控制结构(76页珍藏版)》请在金锄头文库上搜索。

1、第6章 循环控制结构,本章学习内容, 计数控制的循环 条件控制的循环 for语句,while语句,do-while语句 continue语句,break语句 嵌套循环 程序调试与排错,Example:,如何确定程序的输入和输出呢?,Draw a flowchart for the following problem: 读入5个整数,计算并显示它们的和.,Input : 5 个整数n1, n2, n3, n4, n5 Output: n1, n2, n3, n4, n5的和 Input example: 2 3 4 5 6 Output example: 20,问题的提出,Input n1,In

2、put n2,Input n3,input n4,input n5,output sum,sum n1+n2+n3+n4+n5,Assume input example: 2 3 4 5 6,end,使用了6个不同的变量,start,问题的提出,读入1000个整数,计算并显示它们的和.?,6.1循环控制结构与循环语句,如何对循环进行控制呢?,counter 1, sum 0,counter6,sum sum + n,false,true,counter+,output sum,input n,1,counter,sum,0,1 6 true,2,n,0 + 2,2,2,2 6 true,3,2

3、 + 3,5,3,3 6 true,4,5 + 4,9,4,4 6 true,5,9 + 5,14,5,5 6 true,6,14 + 6,20,6,6 6 false,counter-controlled,计数器每次增1,使用了3个变量,Assume input example: 2 3 4 5 6,6.2计数控制的循环,end,6.2计数控制的循环,counter initialValue,test counter,Step n,Step x,false,true,Update counter,循环体 (Body of Loop),当型循环Condition is tested first

4、 计数控制Loop is controlled by a counter Syntax for (initial value ; condition; update counter) statement; Or for (initial value ; condition; update counter) statement; statement; ,for循环语句,循环起始条件,循环结束条件,循环变量增值,i 0, sum 0,i 5,sumsum+ n,false,true,i+,output sum,input n,int i, sum, n; sum = 0; for (i = 0;

5、i 5; i+) scanf(“%d”, ,printf(“%d”, sum);,for循环语句,A,条 件P,直 到 型 循 环,假,真,6.3条件控制的循环,A,当 型 循 环,真,假,假,条 件P,当型循环Condition is tested first 条件或计数控制 Loop is controlled by condition or a counter 语法 while (condition) statement; Or while (condition) statement; statement; ,No semicolon!,while循环语句,直到型循环Statements

6、 in the loop are executed first (at least once), and condition is tested last 条件或计数控制 Loop is controlled by condition or a counter 语法 do statement; statement; while (condition) ; statement;,do-while循环语句,【例6.1】计算并输出1+2+3+n的值,循环次数已知,计数控制的循环,循环次数已知,计数控制的循环,【例6.1】计算并输出1+2+3+n的值,循环次数已知,计数控制的循环,【例6.1】计算并输

7、出1+2+3+n的值,循环条件第一次就为假(如输入-1)时会怎样?,【例6.1】计算并输出1+2+3+n的值,A,当型循环,真,假,假,条 件P,假,条 件P,Testing Condition First,【例6.1】计算并输出1+2+3+n的值,条 件P,直到 型循环,A,假,真,条 件P,A,假,Testing condition last,【例6.1】计算并输出1+2+3+n的值,注意,在for和while语句之后一般没有分号 有分号表示循环体就是分号之前的内容 空语句表示循环体内什么都不做 while (i 100); i+; 死循环 for (i = 0; i 100; i+);

8、printf(%d, i); 用于延时,注意!,如何减少循环的次数?,【例6.1】计算并输出1+2+3+n的值,【例6.1】计算并输出1+2+3+n的值,逗号运算符(Comma Operator),多数情况下,并不使用整个逗号表达式的值,更常见的情况是要分别得到各表达式的值 主要用在循环语句中,同时对多个变量赋初值等 for (i = 1 , j = 100; i j; i+, j-),【例6.3】计算并输出 n! = 1 2 3 n,【例6.4】计算并输出 1!, 2!, 3!, , n!,若用户不慎输入了非法字符,那么先清除输入缓冲区中的内容,然后提示用户重新输入数据直到输入正确为止,【例

9、6.5】输入两个整型数,计算并输出两个整数的最大值,循环次数未知,标记控制的循环,标记值(Sentinel Value),【例6.2】输入数据,显示每次累加的结果,直到输入0时为止,循环次数未知,标记控制的循环,【例6.2】输入数据,显示每次累加的结果,直到输入0时为止,选择三种循环的一般原则,如果循环次数已知,计数控制的循环 用for 如果循环次数未知,条件控制的循环 用while 如果循环体至少要执行一次 用do-while 这只是“一般”原则,不是“原则”,转移控制语句goto语句、break和continue语句,break语句的作用:循环体中使用break语句可以提前结束整个循环。,

10、Continue语句的作用:循环体中使用continue语句可以提前结束本次循环。,return语句 标准库函数exit(),6.5流程的转移控制,break语句 和 continue语句 对for、while、do-while循环进行内部手术,Break?退出一层循环或switch,Continue?中断此次循环,开始下一次,6.5流程的转移控制,n,?,10,Please enter n:10 n = 10 Please enter n: -10 Program is over!,【例6.14】 演示break与continue,-10,#include main() int i, n;

11、for (i=1; i=5; i+) printf(Please enter n:); scanf(%d, ,n,?,10,Please enter n:10 n = 10 Please enter n: -10 Please enter n:20 n = 20 Please enter n: -20 Please enter n:30 n = 30 Program is over!,【例6.14】 演示break与continue,-10,20,-20,30,#include main() int i, n; for (i=1; ib) a=a-2; goto kk; ,此结构构成的是“当型

12、”循环。,功能:无条件转去执行语句标号所指语句行。,Exit() 函数,exit(0) 作用是终止整个程序的执行,强制返回操作系统 调用该函数需要嵌入头文件,【例6.9】输入n值,计算并输出 1! + 2! + 3! + + n!,利用前项 计算后项,【例6.9】输入n值,计算并输出 1! + 2! + 3! + + n!,每次单独计算累加项,使用嵌套循环的注意事项,使用复合语句,以保证逻辑上的正确性 即用一对花括号将各层循环体语句括起来 内层和外层循环控制变量不能同名,以免造成混乱 采用右缩进格式书写,以保证层次的清晰性,注意!,例:输出图形 1.编程实现输出四行“*”号,每行输出5个“*”

13、号 main() int i,j; for(i=1;i=4;i+) for(j=1;j=5;j+) printf(“* ”); printf(“n”); ,* * * * * * * * * * * * * * * * * * * *,2.如何修改程序使其输出直角三角形?,* * * * * * * * * * * * * * *,#include main() int i,j,m; scanf(%d, ,#include main() int i, j, k,m; scanf(%d, ,3.如何修改程序使其输出正三角形?,* * * * * * * * * * * * * * *,马克思手稿

14、中有一道趣味数学题:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭共花了50先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,问男人、女人和小孩各有几人? 解方程组 穷举法,方法1:穷举x,y,z的所有组合,#include main() int x,y,z; printf(Man t Women t Childernn); for (x=0; x=30; x+) for (y=0; y=30; y+) for (z=0; z=30; z+) if (x+y+z=30 ,方法2:改进算法,#include main() int x,y,z; printf(Man t Wo

15、men t Childernn); for (x=0; x=16; x+) for (y=0; y=25; y+) z = 30 x - y; if (3 * x + 2 * y + z = 50) printf(%3d t %5d t %8dn,x,y,z); ,水仙花数,打印出所有的“水仙花数”,所谓“水仙花数” 是指一个三位数,其各位数字立方和等于该数字 本身。 例如: 153=13+53+33,水仙花数解法1-程序,#include main() int l1, l2, l3, l4; for (l1=1; l1=9; l1+) for (l2=0; l2=9; l2+) for (l3=0; l3=9; l3+) l4=l1*100+l2*10+l3; if (l4=l1*l1*l1+l2*l2*l2+l3*l3*l3) printf(Daffodils num

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作范文

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