1、第五章,循环结构 - I,2,回顾,多重if结构就是在主if块的else部分中还包含其他if块 嵌套if结构是在主if块中还包含另一个if 语句 C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句 switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作 条件运算符是 ifelse 语句的另一种表现形式,3,目标,理解为什么使用循环结构 熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别,4
2、,循环的必要性 2-1,int result1,result2,result3; int result4,result5; result1 = 1 * 10; printf(“1 10 %d n“,result1); result2 = 2 * 10; printf(“2 10 %d n“,result2); result3 = 3 * 10; printf(“3 10 %d n“,result3); result4 = 4 * 10; printf(“4 10 %d n“,result4); result5 = 5 * 10; printf(“5 10 %d n“,result5);,1 1
3、0 10 2 10 20 3 10 30 4 10 40 5 10 50,输出结果,重复语句,5,循环的必要性 2-2,1 10 = 10 2 10 = 20 3 10 = 30 4 10 = 40 5 10 = 50,0 + 1,1 + 1,2 + 1,上个数字 + 1,.,重复(上个数字 +1) 10,6,C 语言中的各种循环,while,do- while,for,需要多次重复执行一个或多个任务的问题考虑使用 循环来解决,7,while 循环 3-1,while (表达式) 语句; ,while 循环的一般语法:,while (index 100) . . . . .index+; ,计
4、算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。,工作原理,示例,8,while 循环 3-2,规则1:,while(循环条件) ,循环条件中使用的变量需要经过初始化,9,while 循环 3-3,规则2:,while (index 100) . . . . .index+; ,while 循环主体中的语句必须修改循环条件的值,否则会形成死循环,while (1),10,#include void main () int num=1,result;while (num=10)result=num*10;
5、printf(“%d 10 %d n“,num,result);num+; ,while 循环示例1,1,null,10,2,输出: 1 10 10,2 10 20 3 10 30 4 10 40 5 10 50 6 10 60 7 10 70 8 10 80 9 10 90 10 10 100,11,100,11,问题描述: 写一个程序,要求它从摄氏温度0 度到250 度,每隔20 度为一项,输出一个摄氏温度与华氏温度的对照表,同时要求对照表中的条目不超过10条。,#include void main () int c=0,count=0;double f;while (c = 250 ,w
6、hile 循环示例2,输出: 1: C = 0, F = 32.00 2: C = 20, F = 68.00 3: C = 40, F = 104.00 4: C = 60, F = 140.00 5: C = 80, F = 176.00 6: C = 100, F = 212.00 7: C = 120, F = 248.00 8: C = 140, F = 284.00 9: C = 160, F = 320.00 10: C = 180, F = 356.00,12,do-while 循环,do 语句; while (表达式);,while 循环的一般语法:,do . . . . .
7、 .scanf(“%c”,它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。,工作原理,示例,13,问题描述: 猜数游戏。要求猜一个介于110之间的数字,根据用户猜测的数与标准值进行对比,并给出提示,以便下次猜测能接近标准值,直到猜中为止。,do-while 循环示例,int number=5,guess;printf (“猜一个介于 1 与 10 之间的数n“);doprintf(“请输入您猜测的数:“);scanf(“%d“,猜一个介于 1 与 10 之间的数 请输入您猜测的数:3 太小 请输入您猜测的数:5 您猜中了! 答案为 5,输入数字 5 后
8、,dowhile 循环中的条件为假, 输出结果消息后,程序终止。,14,嵌套 while 循环,嵌套 while 循环的语法,while(i = 10) . . .while (i = j). . . . . . . ,外循环,内循环,只有在内循环完全结束后,外循环才会进行下一趟。,15,问题描述: 用“*”打印一个直角三角形图案。 图案如下所示:* * * * * * * * * *,嵌套 while 循环示例,void main() int nstars=1,stars;while(nstars = 10)stars=1;while (stars = nstars)printf(“*“);
9、stars+;printf(“n“);nstars+; ,内层循环控制每行打印*号的个数,外层循环控制打印的行数,输出: * * * * * * * * * *,16,嵌套 do-while 循环,嵌套 do-while 循环的语法,do . . .do. . .while( . . .) . . . while( . . . ),外循环,内循环,只有在内循环完全结束后,外循环才会进行下一趟。,17,嵌套 do-while 循环示例,int x; char i, ans; ans=y; do x=0;printf(“n请输入字符序列:“);fflush(stdin);doi=getchar()
10、;x+;while( i !=n );printf(“n输入的字符数为:%d“, -x);printf(“n是否需要输入更多序列 (Y/N) ? “);ans = getch(); while(ans =Y | ans = y);,输出: 请输入字符序列:GOODMORNING 输入的字符数为: 11 是否需要输入更多序列 (Y/N)?N,内存中的变量x i ans 0 y,检查条件判断是否按下回车键。如果否, 循环继续执行后续语句;如果是,循环回到开始处。,如按下 Y/y, 则循环从开始处执行,否则循环停止,18,比较 while 和 do-while循环,while(循环条件) 循环体;
11、,do 循环体;while( 循环条件);,do-while 循环是先执行后判断,所以,即使开始条件为假,循环体也至少会被执行一次。,while循环是先判断后执行,所以,如果条件为假,则循环体一次也不会被执行。,比较 while 和 do-while 循环的工作原理,19,通过示例比较,int value, r_digit; value = 0; do printf(“n请输入一个数:“);scanf(“%d“, ,int value, r_digit; value = 0; while( value = 0 ) printf(“n请输入一个数:“);scanf(“%d“, ,该程序用 do- while 循环将数字左右反转,同样的程序用 while 循环将数字左右反转,20,总结,循环结构的特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止 while 循环用于在给定条件为真的情况下重复执行一组操作,while循环先判断后执行 do-while循环先执行后判断,因此循环将至少执行一次 在循环中,需要修改循环变量的值以改变循环条件,否则有可能形成死循环 循环嵌套必须将内层循环完整的包含在外层循环中,