(教案设计)用for语句实现循环
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用f o r语句实现循环
(教案设计者:武冈职业中专陈小亮)
教学内容:《C程序设计》第五章第四节for循环
课时安排:1学时(内容讲解30分钟,练习10分钟,总结反馈5分钟)教学目的:1、熟练掌握for循环语句的基本语法
2、灵活掌握for循环语句中三个表达的各种变化
3、学会在for循环中使用break语句和continue语句
4、灵活运用for循环解决实际问题
教学重点:1、for循环语句的基本语法
2、break语句和continue语句在for循环中的运用
教学难点:1、for循环语句中三个表达的各种变化的理解
2、使用for循环结构设计程序
教学方法:多媒体讲解、演示、实践操作、实题巩固
板书设计:以多媒体电视为主,黑板只板书知识点与学生的提问
教学过程:
导课:1、提问检验while语句、do-while语句实现循环的基本语法及运行过程。
(根据学生掌握情况适当复习与板书)。
2、再次分析循环结构设计的原理,退出循环的控制条件,while、do-while 实现循环的区别,引入新知识点“for语句实现循环”。
一、for语句实现循环的基本语法
(运用多媒体讲解下列内容,动画强调基本格式及执行过程)
1、for语句格式:
for (表达式1;表达式2;表达式3)
{循环体}
2、语句执行过程:
①先计算表达式1的值。
②再计算表达式2的值,若其值为真,则执行循环体一次;否则跳转第⑤步。
③然后计算表达式3的值。
④回转上面第②步。
⑤结束循环,执行for语句下面一个语句。
说明:(1)、表达式1一般为赋值表达式,用于进入循环之前给循环变量赋初值。
(2)、表达式2一般为关系表达式或逻辑表达式,用于执行循环的条件判定,它与while、do-while循环中的表达式作用完全相同。
(3)、表达式3一般为赋值表达式或自增 (i=i+1 可表示成i++)、自减(i=i-1可表示成i--)表达式,用于修改循环变量的值。
(4)、如果循环体部分是多个语句组成的,则必须用大括号括起来,使其成为一个复合语句。
二、for语句循环中三个表达式的变化
(实例讲解法、实践操作验证法讲解下列内容)
1、for (;表达式2;表达式3)
“表达式1”省略,一般用于不向循环变量赋初值的情况,但“;”不可省略。
2、for (表达式1;;表达式3)
“表达式2”省略,一般用于不判断循环条件的情况,表示条件为永真,但“;”不可省略,为了防止出现死循环的情况要在循环体内设置条件退出语句。
3、for (表达式1;表达式2;)
“表达式3”省略,一般用于不按一定规律修改循环变量的情况,但“表达式2”后的“;”不可省略,在循环体内一般也有修改循环条件的语句。
4、三个表达式缺省2个,或三个全缺省(但两个“;”不可缺少),这类情况也一样需要防止出现死循环。
5、在for语句中,表达式1和表达式3也可以使用逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。
在逗号表达式内按从左至右求解,整个
表达式的值为其中最右边的表达式的值。
例如:
for (i=1;i<=100; i++, sum=sum+i;) 相当于:for (i=1;i<=100;i++)
sum=sum+i;
6、在for语句中,表达式一般为关系表达式(如i<=10)或逻辑表达式(如
x>0‖y<-4),但也可以是其他表达式(如字符表达式、数值表达式)。
例5.4 用for循环结构来计算1+2+3+…+10的值。
{ int i,sum=0;
for (i=1;i<=10;i++)
sum=sum+1;
printf ("1+2+3+…+10=%d\n",sum);
程序运行结果:
1+2+3+…+10=55
显然,用for语句简单、方便、形式多样。
三、for语句与while语句运用比较
(运用对比法讲解)计算5!以下用for语句程序段:
(以下程序分别由两个学生完成,全班同学一起分析,老师再作解释。
)
for (i=1;i<=5;i++)
{a=a*i;
printf ("%d%d\n",a,i);}
完全等价于下面的while语句程序段:
i=1;
while (i<=5)
{ a=a*i;
printf ("%d%d\n",a,i);
i++;
}
四、在for循环中运用break语句和continue语句
(运用实践操作+体验式学习法完成)
1、break语句
格式:break;
功能:该语句可以使程序运行时中途跳出循环体,即强制结束循环
......,接着执行循环下面的语句。
例5.5 求3、5、7、11四个数的最小公倍数。
[分析] 运用逐个数判断的方法进行,找到以后立即终止。
main ( )
{ int r;
for (r=11;r<1000;r++)
if (r%3==0&&r%5==0&&r%7==0&&r%11==0) break;
printf ("r=%d",r);
}
[说明] (1)break语句不能用于循环语句和switch语句之外的任何语句。
(2)在多重循环的情况下,break语句只能跳出一层循环,即从当前循环中跳出。
2、continue语句
格式:continue;
功能:结束本次循环
......,即跳出循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
continue语句和break语句的区别是:continue语句只是结束本次循环,而不终止整个循环的执行;而break语句则是强制终止整个循环过程。
例5.6 打印出1~10之间不能被3整除的数。
main ( )
{ int i;
for (i=1;i<=10;i++)
{if (i%3==0) continue;
printf ("%5d",i); }
}
程序运行结果为:
1 2 4 5 8 10
[说明](1)当i等于3的倍数时执行continue语句,它的作用是终止本次
循环,即跳过printf语句,故不输出3、6、9。
(2)如果程序中不用continue语句,循环体也可以改用一个语句处理:if
(i%3!=0) printf ("%5d",i);
(3)如果在本例中将第7行“continue;”语句,改为“break;”语句,则
输出结果为: 1 2
可以清楚地看出break语句是终止整个循环过程,它与continue语句作用
是截然不同的。
知识点小结:break语句与continue语句的区别?
五、实例运用
例5.7 求两个整数m和n的最大公约数。
[分析] 求两个正数的最大公约数通常是采用“辗转相除法”,具体算法为:
第1步:输入两个正数m和n;
第2步:用m除以n,得余数r (0≤r<n);
第3步:判断余数r是否为0,若为0,输出当前值即为最大公约数,算法
结束;否则,执行下一步;
第4步:当余数r≠0时,更新被除数和除数,再转到第2步执行。
main ( )
{ int m,n,a,b,r;
scanf ("%d,%d",&m,&n);
a=m;b=n;
do
{ r=a%b; a=b;
b=r;}while (r!=0);
printf ("The greatest common divide of %d,%d is %d\n",m,n,a);
}
程序运行结果为:
Please input 2 nonnegative numbers m,n::
45,12↙
The greatest common divide of 45,12 is 3
六、课堂练习:将10--100的全部素数按每行5个的方式输出。
(教师提示算法,学生设计N-S图,编写程序并调试运行。
)
main ( )
{ int m,k,i,n=0;
for (m=10;m<=100;m++)
{ k=sqrt(m);
for (i=2;i<=k;i++)
if (m%i= =0) break;
if (i>=k+1) {printf ("%4d",m);n=n+1;}
if (n%5= =0) printf ("\n");
}
printf ("\n");
}
[说明] (1)除了1和它本身之外不能被任何一个整数整除的数称为素数,又称质数。
判断一个数i是否为素数时,把i被2至i的平方根中的所有整数去除,若能被其中任一个数除尽,则说明i不是素数,反之,则是素数。
(2)n的作用是累计输出素数的个数,控制每行输出10数据。
七、内容小结
1、for循环结构的构成形式、运行流程与使用过程中的注意事项。
2、3种循环结构的比较,以及在结构化程序设计中的灵活运用。
3、break语句、continue 语句的运用。
4、教学反馈:学生根据所学情况提出问题,师生共同讨论解答。
作业:
P140 习题 3,4,10。