C语言程序设计PPT课件第6章循环控制结构.ppt
《C语言程序设计PPT课件第6章循环控制结构.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计PPT课件第6章循环控制结构.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第6 6 6 6章章章章 循环控制结构循环控制结构循环控制结构循环控制结构2023/1/162/63本章学习内容本章学习内容 计数控制的循环计数控制的循环 条件控制的循环条件控制的循环 for语句,语句,while语句,语句,do-while语句语句 continue语句,语句,break语句语句 嵌套循环嵌套循环 结构化程序设计的基本思想结构化程序设计的基本思想 程序调试与排错程序调试与排错2023/1/163/63Example:Example:如何确定程如何确定程序的序的输输入和入和输输出呢出呢?Draw a flowchart for the following problem:
2、读读入入5个整数,个整数,计计算并算并显显示它示它们们的和的和.Input:5 个整数个整数n1,n2,n3,n4,n5 Output:n1,n2,n3,n4,n5的和的和Input example:2 3 4 5 6Output example:20问题的提出问题的提出问题的提出问题的提出2023/1/164/63Input n1Input n2Input n3input n4input n5output sumsum n1+n2+n3+n4+n52 2n1Assume input example:2 3 4 5 63 3n24 4n35 5n46 6n52020sumend使用了使用了6个
3、不同的个不同的变量量start问题的提出问题的提出问题的提出问题的提出2023/1/165/636.1循环控制结构与循环语句循环控制结构与循环语句标记标记控制控制控制控制Sentinel Sentinel ControlledControlled计计数控制数控制数控制数控制Counter ControlledCounter Controlled1,2,3,4,4,3,2,1条件控制条件控制条件控制条件控制Condition Condition ControlledControlled如何对循环进行控制呢如何对循环进行控制呢如何对循环进行控制呢如何对循环进行控制呢?2023/1/166/63co
4、unter 1,sum 0counter6sum sum+nfalsetruecounter+output suminput n1countersum01 6true2n0+2222 6true32+3533 6true45+4944 6true59+51455 6true614+62066 6falsecounter-controlled 计计数器每次增数器每次增1使用了使用了3个个变变量量Assume input example:2 3 4 5 66.26.2计数控制的循环计数控制的循环计数控制的循环计数控制的循环startend2023/1/167/636.2计数控制的循环计数控制的循环
5、counter initialValuecounter initialValuetest countertest counterStep nStep xfalsetrueUpdate counterUpdate counter循环体循环体循环体循环体(Body of Body of LoopLoop)2023/1/168/63n当型循环当型循环Condition is tested first n计数控制计数控制Loop is controlled by a counternSyntaxforfor(initial value;condition;update counter)statemen
6、t;Orforfor(initial value;condition;update counter)statement;statement;for循环语句循环语句循环起始条件循环起始条件循环起始条件循环起始条件循环结束条件循环结束条件循环结束条件循环结束条件循环变量增值循环变量增值循环变量增值循环变量增值复合语句复合语句compound statement被当作一条语句看待被当作一条语句看待循环变量控制循环次循环变量控制循环次数,不要在循环体内数,不要在循环体内改变这个变量的值改变这个变量的值2023/1/169/63i 0,sum 0i 5sumsum+nfalsetruei+output
7、suminput nint i,sum,n;sum=0;for(i=0;i 5;i+)scanf(“%d”,&n);sum=sum+n;printf(“%d”,sum);for循环语句循环语句startend2023/1/1610/63A直直到到型型循循环环假假真真6.3条件控制的循环条件控制的循环A当当型型循循环环真真假假假2023/1/1611/63 当型循环当型循环Condition is tested first 条件或计数控制条件或计数控制 Loop is controlled by condition or a counter 语法法whilewhile(condition)(co
8、ndition)statement;statement;Orwhilewhile(condition)(condition)statement;statement;statement;statement;No No semicolon!while循环语句循环语句2023/1/1612/63直到型循环直到型循环直到型循环直到型循环Statements in the loop are Statements in the loop are executed first(executed first(at least onceat least once),and condition is),and c
9、ondition is tested tested lastlast条件或计数控制条件或计数控制条件或计数控制条件或计数控制 Loop is controlled by Loop is controlled by conditioncondition or a or a countercounter 语法语法语法语法dodo statement;statement;statement;statement;whilewhile(condition);(condition);statement;statement;Dont forget the Dont forget the semicolon!
10、do-while循环语句循环语句2023/1/1613/63【例例6.1】计算并输出计算并输出1+2+3+n的值的值循环次数已知,计数控制的循环循环次数已知,计数控制的循环循环次数已知,计数控制的循环循环次数已知,计数控制的循环2023/1/1614/63循环次数已知,计数控制的循环循环次数已知,计数控制的循环循环次数已知,计数控制的循环循环次数已知,计数控制的循环【例例6.1】计算并输出计算并输出1+2+3+n的值的值sum=0的作用?的作用?2023/1/1615/63循环次数已知,计数控制的循环循环次数已知,计数控制的循环循环次数已知,计数控制的循环循环次数已知,计数控制的循环【例例6.
11、1】计算并输出计算并输出1+2+3+n的值的值2023/1/1616/63循环条件第一次就为假(如输循环条件第一次就为假(如输入入-1)时会怎样?)时会怎样?【例例6.1】计算并输出计算并输出1+2+3+n的值的值2023/1/1617/63A当当型型循循环环真真假假假假 Testing Condition First【例例6.1】计算并输出计算并输出1+2+3+n的值的值2023/1/1618/63直直到到型型循循环环A假真真A假假Testing condition last【例例6.1】计算并输出计算并输出1+2+3+n的值的值2023/1/1619/63注意注意在在在在forfor和和和
12、和whilewhile语句之后一般没有分号语句之后一般没有分号语句之后一般没有分号语句之后一般没有分号有分号表示循环体就是分号之前的内容有分号表示循环体就是分号之前的内容有分号表示循环体就是分号之前的内容有分号表示循环体就是分号之前的内容空语句空语句空语句空语句表示循环体内什么都不做表示循环体内什么都不做表示循环体内什么都不做表示循环体内什么都不做 while while(i 100)(i 100);i+;i+;死循环死循环死循环死循环 for for(i=0;i 100;i+)(i=0;i 100;i+);printf(%d,i);printf(%d,i);用于延时用于延时用于延时用于延时注
13、意!注意!2023/1/1620/63如何减少循环的次数?如何减少循环的次数?如何减少循环的次数?如何减少循环的次数?【例例6.1】计算并输出计算并输出1+2+3+n的值的值2023/1/1621/63【例例6.1】计算并输出计算并输出1+2+3+n的值的值2023/1/1622/63逗号运算符(逗号运算符(Comma Operator)多数情况下,并不使用整个逗号表达式的值,更多数情况下,并不使用整个逗号表达式的值,更多数情况下,并不使用整个逗号表达式的值,更多数情况下,并不使用整个逗号表达式的值,更常见的情况是要分别得到各表达式的值常见的情况是要分别得到各表达式的值常见的情况是要分别得到各
14、表达式的值常见的情况是要分别得到各表达式的值主要用在循环语句中,同时对多个变量赋初值等主要用在循环语句中,同时对多个变量赋初值等主要用在循环语句中,同时对多个变量赋初值等主要用在循环语句中,同时对多个变量赋初值等 forfor(i=1,j=100;i j;i+,j-)(i=1,j=100;i j;i+,j-)表达式表达式表达式表达式1,1,表达式表达式表达式表达式2,2,表达式表达式表达式表达式n n循环起始条件循环起始条件循环变量增值循环变量增值循环结束条件循环结束条件2023/1/1623/63【例例6.3】计算并输出计算并输出n!=1 2 3 n 2023/1/1624/63【例例6.4
15、】计算并输出计算并输出1!,2!,3!,n!2023/1/1625/63若用户不慎输入了非法字符,那么先清除输入缓冲区中若用户不慎输入了非法字符,那么先清除输入缓冲区中若用户不慎输入了非法字符,那么先清除输入缓冲区中若用户不慎输入了非法字符,那么先清除输入缓冲区中的内容,然后提示用户重新输入数据直到输入正确为止的内容,然后提示用户重新输入数据直到输入正确为止的内容,然后提示用户重新输入数据直到输入正确为止的内容,然后提示用户重新输入数据直到输入正确为止【例例6.5】输入两个整型数,计算并输入两个整型数,计算并输出两个整数的最大值输出两个整数的最大值scanf()返回值为正确读入的数据项数返回值
16、为正确读入的数据项数 清除输入缓冲区中的错误数据清除输入缓冲区中的错误数据 2023/1/1626/63循环次数未知,循环次数未知,循环次数未知,循环次数未知,标记标记标记标记控制的循环控制的循环控制的循环控制的循环标记值(标记值(Sentinel Value)【例例6.2】输入数据,显示每次累加输入数据,显示每次累加的结果,直到输入的结果,直到输入0时为止时为止2023/1/1627/63循环次数未知,循环次数未知,循环次数未知,循环次数未知,标记标记标记标记控制的循环控制的循环控制的循环控制的循环【例例6.2】输入数据,显示每次累加输入数据,显示每次累加的结果,直到输入的结果,直到输入0时
17、为止时为止2023/1/1628/63选择三种循环的一般原则选择三种循环的一般原则如果循环次数已知,计数控制的循环如果循环次数已知,计数控制的循环如果循环次数已知,计数控制的循环如果循环次数已知,计数控制的循环用用用用forfor如果循环次数未知,条件控制的循环如果循环次数未知,条件控制的循环如果循环次数未知,条件控制的循环如果循环次数未知,条件控制的循环用用用用whilewhile如果循环体至少要执行一次如果循环体至少要执行一次如果循环体至少要执行一次如果循环体至少要执行一次用用用用do-whiledo-while这只是这只是这只是这只是“一般一般一般一般”原则,不是原则,不是原则,不是原则
18、,不是“原则原则原则原则”2023/1/1629/63循序渐进式编程循序渐进式编程例例6.6:猜数游戏猜数游戏想一个想一个1100之间的数之间的数猜对猜对:right!猜错猜错:wrong!并提示并提示大小大小2023/1/1630/63只猜1次直到猜对为止最多猜10次猜多个数10次猜不对就猜下一个数循序渐进式编程循序渐进式编程:猜数游戏:猜数游戏例例5.4,例例6.6,例例6.7,例例6.122023/1/1631/63猜数游戏用到的库函数猜数游戏用到的库函数怎样模拟计算机怎样模拟计算机怎样模拟计算机怎样模拟计算机“想想想想”一个数呢?一个数呢?一个数呢?一个数呢?随机函数随机函数随机函数随
19、机函数rand()rand()产生产生产生产生0,RAND_MAX 0,RAND_MAX 之间的随机数之间的随机数之间的随机数之间的随机数magic=rand();magic=rand();#include#include RAND_MAXRAND_MAX在在在在stdlib.hstdlib.h中定义,不大于双字节整数中定义,不大于双字节整数中定义,不大于双字节整数中定义,不大于双字节整数的最大值的最大值的最大值的最大值32767 32767 产生产生产生产生0,b-1 0,b-1 之间的随机数之间的随机数之间的随机数之间的随机数magic=rand()%b;magic=rand()%b;产生
20、产生产生产生a,a+b-1 a,a+b-1 之间的随机数之间的随机数之间的随机数之间的随机数magic=rand()%b+a;magic=rand()%b+a;2023/1/1632/63#includeinclude#includeinclude main()main()intint magic;/*magic;/*计算机计算机计算机计算机 想想想想 的数的数的数的数*/intint guess;/*guess;/*人猜的数人猜的数人猜的数人猜的数*/magic=rand()%100+1;magic=rand()%100+1;/*“/*“想想想想”一个一个一个一个11,100100之间的数之
21、间的数之间的数之间的数magic*/magic*/printf(Please guess a magic number:);printf(Please guess a magic number:);scanf(%d,&guess);scanf(%d,&guess);ifif(guess magic)(guess magic)printf(Wrong!Too high!n);printf(Wrong!Too high!n);else ifelse if(guess magic)(guess magic)printf(Wrong!Too low!n);printf(Wrong!Too low!n)
22、;elseelse printf(Right!n);printf(Right!n);printf(The number is:%d n,magic);printf(The number is:%d n,magic);例例5.4只猜1次2023/1/1633/63#includeinclude#includeinclude main()main()intint magic;magic;intint guess;guess;intint counter;counter;/*/*记录人猜次数的计数器变量记录人猜次数的计数器变量记录人猜次数的计数器变量记录人猜次数的计数器变量*/magic=rand(
23、)%100+1;magic=rand()%100+1;counter=0;counter=0;/*/*计数器变量计数器变量计数器变量计数器变量countcount初始化为初始化为初始化为初始化为0*/0*/dodo printf(Please guess a magic number:);printf(Please guess a magic number:);scanf(%d,&guess);scanf(%d,&guess);counter+;counter+;/*/*计数器变量计数器变量计数器变量计数器变量countcount加加加加1*/1*/ifif(guess magic)(gues
24、s magic)printf(Wrong!Too high!n);printf(Wrong!Too high!n);else ifelse if(guess magic)(guess magic)printf(Wrong!Too low!n);printf(Wrong!Too low!n);else else printf(Right!n);printf(Right!n);whilewhile (guess!=magic);(guess!=magic);printf(counter=%d n,counter);printf(counter=%d n,counter);直到猜对为止例例6.620
25、23/1/1634/63猜数游戏用到的库函数猜数游戏用到的库函数每次运行程序时计算机所每次运行程序时计算机所每次运行程序时计算机所每次运行程序时计算机所“想想想想”的数都是一样的,的数都是一样的,的数都是一样的,的数都是一样的,这是什么原因呢?这是什么原因呢?这是什么原因呢?这是什么原因呢?函数函数函数函数rand()rand()产生的只是伪随机数产生的只是伪随机数产生的只是伪随机数产生的只是伪随机数随机函数随机函数随机函数随机函数srandsrand为函数为函数为函数为函数rand()rand()设置随机数种子来实现对函数设置随机数种子来实现对函数设置随机数种子来实现对函数设置随机数种子来实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 PPT 课件 循环 控制 结构
限制150内