1、u课前预习课前预习u将手机调到静音将手机调到静音u认真做笔记认真做笔记u及时完成及时完成作业作业上课要求上课要求u了解循环的概念u掌握while循环的使用方法u掌握do-while循环的使用方法学习学习目标目标u循环结构uwhile语句ud0-while语句uwhile语句与d0-while语句的区别学习内容学习内容 循环的概念顺序结构和选择结构可以解决简单地、不重复出现的问顺序结构和选择结构可以解决简单地、不重复出现的问题,现实生活中许多问题是需要重复题,现实生活中许多问题是需要重复处理的,如:处理的,如: 计算一个班计算一个班5050学生每人的平均成绩学生每人的平均成绩 工厂各车间的生产日
2、报表工厂各车间的生产日报表 全国各省市的人口统计分析全国各省市的人口统计分析 各大学招生情况统计各大学招生情况统计 全校教职工工资全校教职工工资报表报表 霓虹灯的闪烁、摩天轮的转动霓虹灯的闪烁、摩天轮的转动 绝大多数的应用程序都包含重复处理。绝大多数的应用程序都包含重复处理。 循环结构是用来处理需要重复处理的问题。循环结构是用来处理需要重复处理的问题。 循环结构又称为重复结构。循环结构又称为重复结构。 循环结构和顺序结构、选择结构是结构化程序设计循环结构和顺序结构、选择结构是结构化程序设计的三种基本结构,它们是各种复杂程序的基本构造的三种基本结构,它们是各种复杂程序的基本构造单元。单元。循环的
3、分类:循环的分类: 无休止的循环:地球围绕太阳旋转、太阳东升西落。无休止的循环:地球围绕太阳旋转、太阳东升西落。 有终止的循环:达到一定条件循环就结束了,如统计有终止的循环:达到一定条件循环就结束了,如统计5050名学生成绩后,循环就不再继续了。名学生成绩后,循环就不再继续了。计算机程序职能处理有条件的循环,这种循环符合算法计算机程序职能处理有条件的循环,这种循环符合算法的特性即有效性、确定性和有穷性,若程序永不结束,的特性即有效性、确定性和有穷性,若程序永不结束,是不正常的。是不正常的。要构成一个有效的循环,应当指定两个条件:要构成一个有效的循环,应当指定两个条件: 需要重复执行的操作,这称
4、为循环体需要重复执行的操作,这称为循环体 循环结束的条件,即在什么情况下停止重复的操作循环结束的条件,即在什么情况下停止重复的操作 while while语句语句实现实现循环结构的语句有:循环结构的语句有: do-whiledo-while语句语句 forfor语句语句 whilewhile语句的一般形式如下:语句的一般形式如下: while while ( (条件表达式条件表达式) ) 循环体语句循环体语句 当条件当条件表达式为表达式为“真真”时时,执行循环体,执行循环体语句语句,为,为“假假”时时不不执行。执行。whilewhile循环的特点是:先判断条件表达式后执行循环体语句循环的特点是
5、:先判断条件表达式后执行循环体语句while语句whilewhile循环的流程图为:循环的流程图为:intint i=0; i=0;while(i=10) while(i=10) printfprintf(“%d(“%dn”,in”,i);); i+; i+; 例例: :求求1+2+3+1+2+3+100+100,即,即解题思路:解题思路:u这是累加问题,需要先后将这是累加问题,需要先后将100100个数相加个数相加u要重复要重复100100次加法运算,可用循环实现次加法运算,可用循环实现u后一个数是前一个数加后一个数是前一个数加1 1而得而得u加完上一加完上一个数后,加个数后,加1 1可得到
6、下一个数可得到下一个数sum=sum+ii=i+1非非0(真真)i=1000(假假)sum=0i=1i=100sum=0,i=1sum=sum+ii=i+1流程图流程图N-S流程图流程图#include #include void main()void main() intint i,sumi,sum=0; =0; / /sumsum是用来存放累加和的变量,初值为是用来存放累加和的变量,初值为0 0 i=1; i=1; while (i=100) /while (i100i100时循环结束,如果不改变时循环结束,如果不改变i i的值,循环将变为死循环。的值,循环将变为死循环。思考思考:编写程序
7、,用:编写程序,用whilewhile循环求循环求自然数自然数n n的阶的阶乘,其中乘,其中n n由用户通过键盘输入。由用户通过键盘输入。一般一般形式为:形式为: do do 循环体循环体语句语句 while ( while (表达式表达式) ); 先执行循环体,然后判断循环条件是否成立。先执行循环体,然后判断循环条件是否成立。 do-whiledo-while语句的特点:先无条件地执行循环体,然后语句的特点:先无条件地执行循环体,然后判断循环条件是否成立判断循环条件是否成立,循环体至少执行一次。,循环体至少执行一次。do-while语句表达式表达式非非0(真真)0(假假)循环体语句循环体语句
8、当表达式的值为真当表达式的值为真循环体语句循环体语句流程图流程图N-S流程图流程图用用dodowhilewhile循环循环求求:1+2+31+2+3+ +100+100,即,即i =100非非0(真真)0(假假)sum=sum+ii=i+1sum=0,i=1i =100sum=sum+ii=i+1sum=0,i=1 #include #include void main()void main() intint i,sumi,sum=0;=0; i=1; i=1; do do / /在循环开始时不检查条件,先执行一次循环体在循环开始时不检查条件,先执行一次循环体 sum= sum=sum+isu
9、m+i; ; i i+;+; while(i=100); while(i=100); printfprintf(“%d(“%dn”,sumn”,sum);); 募集慈善基金募集慈善基金1000010000元,有若干人捐款,每输入一个元,有若干人捐款,每输入一个人的捐款数后,计算机就输出当时的捐款总和。当人的捐款数后,计算机就输出当时的捐款总和。当某一次输入捐款数后,总和达到或超过某一次输入捐款数后,总和达到或超过1000010000元时,元时,即宣告结束,输出最后的累加值即宣告结束,输出最后的累加值。解题思路解题思路:设计:设计一个循环结构,在其中输入捐款数,一个循环结构,在其中输入捐款数,求
10、出累加值,然后检查此时的累加值是否达到或超求出累加值,然后检查此时的累加值是否达到或超过预定值,如果达到了,就结束循环操作过预定值,如果达到了,就结束循环操作 #include #include void main()void main() float float amount,sumamount,sum=0; =0; do do scanfscanf(%(%f,&amountf,&amount); ); sum= sum=sum+amountsum+amount; ; / /求累加和求累加和 while(sum10000while(sum10000);/);/累加值不到累加值不到100010
11、00时循环时循环 printfprintf(sum=%9.2f(sum=%9.2fn,sumn,sum);); 程序分析:程序分析: 1 1、事先不清楚要执行的循环次数,只给出循环条件。、事先不清楚要执行的循环次数,只给出循环条件。 2 2、每次循环结束时检查循环条件是否满足。、每次循环结束时检查循环条件是否满足。 3 3、当累加值超过、当累加值超过1000010000时,终止循环条件。时,终止循环条件。 思考:编写程序,思考:编写程序,用用do-whiledo-while循环求自然数循环求自然数n n的阶乘,的阶乘,其中其中n n由用户通过键盘输入。由用户通过键盘输入。 凡是能用凡是能用wh
12、ilewhile循环处理循环处理的情况的情况,都能用,都能用dodowhilewhile循环循环处理处理。 dodowhilewhile循环结构可以转换成循环结构可以转换成whilewhile循环循环结构结构。 whilewhile循环有可能一次也不执行,而循环有可能一次也不执行,而do-whiledo-while循环至循环至少执行一次。少执行一次。while语句与do-while语句的区别 思考分别输入思考分别输入1 1和和1111查看两个程序的运行结果?查看两个程序的运行结果? 结论:当结论:当whilewhile后面的表达式的第一次的值为后面的表达式的第一次的值为“真真”时,两种循环得到
13、的结果相同;否则,二者结果不时,两种循环得到的结果相同;否则,二者结果不相同相同( (相同循环体时相同循环体时) ) 例:译密码。为使电文保密,往往按一定规律将其例:译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。转换成密码,收报人再按约定的规律将其译回原文。电文译成密码的规律为:将字母电文译成密码的规律为:将字母A A变成字母变成字母E,aE,a变成变成e e,W W变成变成A,XA,X变成变成B,YB,Y变成变成C,ZC,Z变成变成D D,非字母字符保持原,非字母字符保持原状不变。状不变。 A B C D E F G W X Y Z A B C D 输
14、入一行字符,要求输出其相应的密码输入一行字符,要求输出其相应的密码解题思路:解题思路:(1) (1) 从字母从字母A A到到V V,只需将字母加上,只需将字母加上4 4就行就行 例如,例如,A+4A+4就是就是EE。(2) (2) 从字母从字母W W到到Z Z,将字母加,将字母加4 4,再减去,再减去2626 W+4-26 W+4-26就是就是AA。(3)(3)非字母字符保持原样。非字母字符保持原样。步骤:步骤: 输入一个字符给字符变量输入一个字符给字符变量c c 判定它是否字母判定它是否字母( (包括大小写包括大小写) ),若不是字母,不改,若不是字母,不改变变c c的值;若是字母,则使变量
15、的值;若是字母,则使变量c c的值改变为其后第的值改变为其后第4 4个字母个字母 如果新的如果新的c c值范围不在字母范围内,应减去值范围不在字母范围内,应减去2626。 #include #include void main()void main() char c; char c; while(c= while(c=getchargetchar()!=n)()!=n) if(c=a& c=A& c=a& c=A& cZ & cz) if(cZ & cz) c=c-26; c=c-26; printfprintf(%(%c,cc,c);); printfprintf(n);(n); 1 1、给出一个正整数,求出它是几位数,分别输出每给出一个正整数,求出它是几位数,分别输出每一位数字,并按照逆序输出各位数字。一位数字,并按照逆序输出各位数字。 2 2、用用dodowhilewhile循环求:循环求:1+2+3+1+2+3+100+100。作业