《c语言大学教材循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《c语言大学教材循环结构程序设计.ppt(42页珍藏版)》请在优知文库上搜索。
1、本章教学内容本章教学内容n引例引例nfor循环循环nwhile循环循环ndo - while循环循环nbreak语句和语句和continue语句语句n循环语句的嵌套循环语句的嵌套n*用循环实现通讯录实例的部分功能用循环实现通讯录实例的部分功能教学目标、重点和难点教学目标、重点和难点n教学目标教学目标u了解三种循环形式的异同和应用场合了解三种循环形式的异同和应用场合u掌握用循环实现常见掌握用循环实现常见问题的求解问题的求解u熟悉熟悉breakbreak、continuecontinue语句在循环中的作用语句在循环中的作用u掌握循环的嵌套(掌握循环的嵌套(2 2层)层)u进一步熟悉单步执行、断点跟
2、踪等程序调试方法进一步熟悉单步执行、断点跟踪等程序调试方法n教学重点教学重点uFor、while、do-while循环的使用;涉及循环的常用循环的使用;涉及循环的常用算法算法n教学难点教学难点u循环的嵌套;经典算法循环的嵌套;经典算法引例引例1输出一行10个星号“*” 语句是? printf(“*n”); 输出两行10个星号“*” 语句是? printf(“*n”); printf(“*n”); 输出100行10个星号“*” 语句是? 重复语句重复语句for(i=1;i=100;i+)printf(“*”);引例引例2 2 :从键盘依次输入若干个圆的半径值,分:从键盘依次输入若干个圆的半径值,
3、分别输出对应的圆面积。别输出对应的圆面积。#include#define PI 3.1416main()float r,area;scanf(“%f”,&r);printf(“area= %f n,PI*r*r); scanf(“%f”,&r);printf(“area= %f n,PI*r*r);scanf(“%f”,&r);printf(“area= %f n,PI*r*r);scanf(“%f”,&r);printf(“area= %f n,PI*r*r);重复语句如果对不定个数的多如果对不定个数的多个圆求其面积该如何个圆求其面积该如何处理?处理?scanf(“%f”,&r);while
4、(r0)printf(“area=%f”,PI*r*r); scanf(“%f”,&r);C 语言中的各种循环语言中的各种循环需要多次重复执行一个或多个任务的问题考虑使用循环来解决for( 表达式1 ; 表达式2 ; 表达式3 ) 循环体; for 循环的一般语法:1、for 循环循环counter = 0;inum = 100;i = 1;counter = 10;inum 25;i =100counter +;inum = inum + 1;i+;分号用于分隔 for 循环的三个表达式1、计算表达式1的值,通常为循环变量赋初值;2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行循
5、环体一次, 否则跳出循环;3、计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第2步重复执行;工作原理1234P120表达式表达式2处理表达式处理表达式1执行循环体执行循环体非非00处理表达式处理表达式3流程示意流程示意for(i=1;i=100;i+)sum=sum+2;sum=sum+1;sum=0;不确定不确定sum0 1 3sum=sum+3;6 sum=sum+100;5050sum=sum+i;规律是:规律是:表示为:表示为:for(i=1;i=100;i+) sum=sum+i;是是for语句!语句!计算并输出计算并输出1+2+3+100的值的值sumP120#in
6、clude main( ) int i=0, sum=0; ( i=1; i=100; i+ ) sum=sum+i; printf(1+2+3+.+100=%dn,sum); 运行结果:运行结果:1+2+3+.+100=50501+2+3+.+100=5050循环体循环体关关键键字字for完整代码:完整代码:求任意输入的一个整数求任意输入的一个整数n的阶乘的阶乘 n! #include void main() int n,i,fac=1; printf(n 请输入任意一个正整数:); scanf(%d,&n); for( i= 1; i =n; i+)fac=fac*i; printf(n
7、%d的阶乘 = %dn,n,fac);请输入任意一个正整数:5内存内存nifac51121206循环执行五次5的阶乘 = 120注意注意阶乘变量阶乘变量fac的值的溢出问题的值的溢出问题键盘输入键盘输入10个学生的成绩,输出各成绩及个学生的成绩,输出各成绩及平均成绩。平均成绩。 编程点拨:确定两件事情编程点拨:确定两件事情输入输入10个,重复个,重复10次次P114 printf(n); ave=(float)sum/10; printf(ave=%fn,ave); 用用复复合合语语句句for( i=1; i=10; i+) scanf(%d,&score); printf(%d ,score
8、); sum=sum+score; main( ) int i,score, sum=0; float ave=0; printf(Input score:n);不必放在循环体内不必放在循环体内#include main( ) int a=0,max=0,i=0; printf(nmax=%dn,max); scanf(%d,&a); printf(%d ,a);printf(Input data:);max=a;for ( i=1; i=9; i+ ) scanf(%d,&a); printf(%d ,a); if ( maxa )max=a;例题例题 从键盘输入从键盘输入10个数,求其中最
9、大值个数,求其中最大值10014131211先思考:如何求先思考:如何求10014131211求 10014131211 for ( i=1; i=100; i+ ) sum=sum+(float) 1 / i; sign=1; sign=-sign;signsign=1sum=sum+1/1i=1sign=-1sum=sum-1/2i=2sign=1sum=sum+1/3i=3 for ( i=1; i=100; i+ ) sum=sum+(float) sign/ i; sign=-sign; printf(sum=%fn,sum); #include main( ) int i=0,si
10、gn=1; float sum=0.0; 运行结果运行结果sum=0.688172关于关于for 循环的几点说明:循环的几点说明:nfor循环用于循环次数已知或循环次数确定的情况循环用于循环次数已知或循环次数确定的情况(否则通常常用(否则通常常用while 或或do-while循环结构)循环结构)nfor 循环中有三个表达式循环中有三个表达式nfor 语句中的各个表达式都可以省略(不提倡!)语句中的各个表达式都可以省略(不提倡!)n分号分隔符不能省略分号分隔符不能省略for( ; ; ) ;可省略不能省略2、while 循环循环while (表达式表达式) 循环体循环体;while 循环的一般
11、语法循环的一般语法:while (index 100) . . . . . . index+; 计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。 工作原理工作原理示例表达式表达式循环体循环体非非00P97流程示意流程示意#include #include main( )main( ) int a,sum=0; int a,sum=0; printf(Input data:n); printf(Input data:n); scanf(%d,&a);scanf(%d,&a); while ( while
12、 ( a!=0a!=0 ) ) printf(%4d,a); printf(%4d,a); sum=sum+a; sum=sum+a; scanf(%d,&a);scanf(%d,&a); printf(nsum=%dn,sum); printf(nsum=%dn,sum); whilewhile关关键键字字 从键盘输入若干个非0数据,求它们的和,用0结束循环的执行。P97用用while循环求循环求 1+2+3+100#include main( ) int ,sum=0; printf(sum=%dn,sum); while ( i=100 ) sum=sum+i;i=1i+; 不同循环语句
13、之间不同循环语句之间可以相互转换可以相互转换 while ( i=100 ) sum=sum+i;i+; P99关于关于while 循环循环 的几点说明:的几点说明: while(循环条件) 循环条件中使用的变循环条件中使用的变量需要经过初始化量需要经过初始化while (index number) printf(太大太大n); else if (guess number) printf(太小太小n); while (guess != number); printf(您猜中了!您猜中了! 答案为答案为 %dn,number);猜一个介于猜一个介于 1 与与 10 之间的数之间的数请输入您猜测的
14、数:请输入您猜测的数:3太小太小请输入您猜测的数:请输入您猜测的数:5您猜中了您猜中了! 答案为答案为 5输入数字 5 后,dowhile 循环中的条件为假, 输出结果消息后,程序终止。4、break 语句语句 和和continue语句语句nbreak语句:可以用在循环体内,也可以用在语句:可以用在循环体内,也可以用在switch结构中,用于改变程序的控制流结构中,用于改变程序的控制流ubreak语句用于语句用于do-while、while、for循环中时,可循环中时,可使程序使程序终止循环终止循环而执行循环外面的语句而执行循环外面的语句 ubreak语句通常在循环中与条件语句一起使用。若语句
15、通常在循环中与条件语句一起使用。若条件值为真,将跳出循环,控制流转向循环后面的条件值为真,将跳出循环,控制流转向循环后面的语句语句u如果已执行如果已执行break语句,就不会执行循环体中位于语句,就不会执行循环体中位于 break 语句后的语句语句后的语句u在多层循环中,一个在多层循环中,一个break语句只向外跳一层语句只向外跳一层P103break 语句示例语句示例跳出跳出 for 循环循环for( ; ; ) printf(这将一直进行下去这将一直进行下去); i = getchar(); if(i = X | i = x)break; 跳出跳出 while 循环循环while(1) i
16、f(x = 10)break; 跳出跳出 do-while 循环循环do if (x = 10)break; while (x 15);问题描述:问题描述:统计从键盘输入的若干个字符中有效字符的个数,统计从键盘输入的若干个字符中有效字符的个数,以换行符作为输入结束。有效字符是指第一个空以换行符作为输入结束。有效字符是指第一个空格符前面的字符,若输入字符中没有空格符,则格符前面的字符,若输入字符中没有空格符,则有效字符为除了换行符之外的所有字符。有效字符为除了换行符之外的所有字符。 #includevoid main()int count=0,ch;printf(n 请输入一行字符:);while(ch=getchar()!=n)if(ch= )break;count+;printf(n 共有 %d 个有效字符。n,count);break 语句应用举例语句应用举例内存内存chcountH0_ 请输入一行字符:Hello world 共有 5 个 有效字符1循环执行 5 次5ncontinue 语句语句ucontinue 语句只能用在循环里语句只能用在循环里ucontinue 语句的作用