1、Teacher teaching designCONTENTS 目 录自主学习 明确考点案例分析 交流提升课后作业 自我提升仿真演练,体验探索自主学习 明确考点PART 02for(;)自主学习 明确考点考点一、for型循环语句格式:(1)首先计算表达式1的值;考点二、for语句的执行过程如下:(2)再计算表达式2的值,若值为真(非0)则执行循环体语句一次,否则跳出循环;(3)循环体语句执行完后,再计算表达式3的值,转(2)步去执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次。【例1】用for语句来计算。程序如下:main()int i,s=0;for(i=1
2、;i=100;i+)s=s+i;printf(s=%d,s);s=5050运行结果 for语句的执行过程如下本例for语句中的表达式3为i+,实际上也是一种赋值语句,相当于i=i+1,以改变循环变量的值1001nn解析n=(int)(终值-初值+步长)/步长)n=(int)(1-100-2)/(-2))=50循环语句for(n=100;n0;n=n-2)(设n为整形变量)控制循环体反复执行的次数为for语句最主要的特点是:特别适合已知循环次数的循环语句,下面介绍一下for语句中循环次数的计算方法。根据for循环的循环变量的变化情况。循环次数的计算可以用公式进行计算:n=(int)(100-1+
3、1)/1)=100循环语句for(n=1;n=100;n+)(设n为整形变量)控制循环体反复执行的次数为for语句循环次数的计算其中,初值指循环变量的初始值,终值指循环变量满足条件的最终值,步长指循环变量每循环一次所变化的量。使用for语句中要注意以下几点1)for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环变量增量)”都是选择项,即可以缺省,但“;”不能缺省。12)省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值。2自主学习 明确考点例如:for(i=1;i=100;)sum=sum+i;i+;4)省略了“表达式3(循环变量增量)”,则不
4、对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。23例如:for(i=1;i+)sum=sum+i;相当于:i=1;while(1)sum=sum+i;i+;3)省略了“表达式2(循环条件)”,则不做其它处理时便成为死循环。1自主学习 明确考点例如:for(;)语句相当于:while(1)语句6)3个表达式都可以省略。for(sum=0;i=100;i+)sum=sum+i;7)表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。例如:for(;i=100;)sum=sum+i;i+;相当于:while(i=100)sum=sum+i;i+;5)省略了“表达式
5、1(循环变量赋初值)”和“表达式3(循环变量增量)”。自主学习 明确考点或:for(i=0,j=100;i=100;i+,j-)k=i+j;for(;(c=getchar()!=n;)printf(“%c”,c);for(sum=0,i=1;i0;)a+;n-;printf(%d,a*2);1自主学习 明确考点【例3】有如下程序:main()int a=0,n;scanf(%d,&n);for(;)a+;n-;printf(%d,a*2);if(n=0)break;程序运行结果:input n:4 0246自主学习 明确考点【解析:】本例中for语句的表达式全部省去。由循环体中的语句实现循环变
6、量的递减和循环条件的判断。当n值为0时,由break语句中止循环,转去执行for以后的程序。案例分析 交流提升PART 03(3)计算待求积数据项fact=fact*i【例1】、计算出n的阶乘,n是一个大于1的正整数,其值由用户输入。算法思路分析:n的阶乘的计算公式是:n!=123(n-1)n,这实质是一个累乘过程(求积过程)。求积算法模板如下:设s为求积结果、i为待求的数据项(1)定义变量和变量类型如:fact=1;i=1;/*置初值*/案例分析 交流提升(2)循环体开始(4)判断满足的条件(5)循环体是否结束(6)输出fact打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位
7、数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。利用for循环控制100-999个数,每个数分解出个位,十位,百位案例分析 交流提升算法分析:“枚举法”按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则舍弃它。对于所列举的值,既不能遗漏也不能重复用09可以组成多少个无重复的三位数main()int a,b,c,n=0,i;for(i=100;i=999;i+)a=i/100;b=i/10%10;c=i%10;if(a!=b&a!=c&b!=c)n+;printf(
8、%5d,i);printf(n=%d,n);#include main()int a,b,c,n=0,i;for(a=1;a=9;a+)for(b=0;b=9;b+)for(c=0;c=9;c+)if(a!=b&a!=c&b!=c)n+;printf(%d%d%d,a,b,c);printf(n=%d,n);案例分析 交流提升 仿真演练 体验探索PART 04此程序只是把累加变成了累乘.程序分析:2.程序源代码:main()float n,s=0,t=1;for(n=1;n=20;n+);printf(1+2!+3!.+20!=%en,s);1、求1!+2!+3!+.+20!的和?仿真演练 体
9、验探索#include stdio.hvoid main()int n,m,r;for(n=1;n=100;n+)m=n*n;if(n10);else ;if(n=r)printf(%dn,n);1、算法分析:同构数的以下性质:设b是a的平方,a与b的低若干位相同。对指定范围内的每一个整数a,求出其平方,判断a是否是其平方的尾部,通常采用“分离法”进行求出其尾数。正整数n若是它平方数的尾部,则称n为同构数。例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数。明确考点 交流提升求同构数(守形数)(指定区间内的同构数100以内)源程序课后作业 自我提升PART 05【1】任意输入一行英文句子,统计其中单词的个数(单词间用空格分隔)【2】使用for循环求Sn=a+aa+aaa+aa.a之值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。课后作业 自我提升【3】求Fibonacci数列前40个数。