For循环语句 课件

文档属性

名称 For循环语句 课件
格式 zip
文件大小 65.1KB
资源类型 教案
版本资源 沪教版
科目 信息技术(信息科技)
更新时间 2017-12-29 14:49:13

图片预览

文档简介

课件13张PPT。For循环语句For循环语句的使用及和其他循环语句的比较 5.3 for循环语句 for(表达式1;表达式2;表达式3) 循环体语句一般形式:1.计算表达式1,通常用于循环开始前设置变量初值。
2.计算表达式2,值为0则结束循环,否则执行第3步。
3.执行循环体语句。
4.计算表达式3,返回第2步。执行流程例: 求 1+2 +…+99#include
main( )
{ int i,s=0;
for(i=1;i<=99;i++)
s=s+i;
printf(“s=%d”,s);
}分析:用变量i从1到99循环,把i的值累加到变量s中,最后输出s的值。程序如下:从上面的程序我们看到,for语句中:
表达式1:通常是给循环变量赋初值
表达式2:循环是否继续执行的判别表达式,这个表达式通常与某一个(或多个)变量的值有关,随着这个(些)变量的值的改变,表达式的结果发生变化,这个(些)变量被称为循环因变量。
表达式3:通常用于改变循环因变量的值。 在某些情况下,for语句中的表达式1、2、3都可以省略,而改用其他的方式来实现这些功能。我们还用上面的例子说明for语句省略表达式的情形。1.省略表达式1:#include
main( )
{ int i=1,s=0;
for(;i<=99;i++)
s=s+i;
printf(“s=%d”,s);
}2.省略表达式3:#include
main( )
{ int i,s=0;
for(i=1;i<=99;)
{s=s+i;i++;}
printf(“s=%d”,s);
}3. 同时省略表达式1、3#include
main( )
{ int i=1,s=0;
for(;i<=99;)
{s=s+i;i++;}
printf(“s=%d”,s);
}表达式2也可以省略
但在循环体中要借助
break;语句来实现循
环的结束,我们将在
后面介绍。注意:表达
式省略,分
号不省略。 for语句中的表达式可以是一切形式的表达式,逗号运算符参与的表达式也可以运用在for语句中,通常运用于表达式1和表达式3。
如上面的例子可以改写为:#include
main( )
{ int i,s;
for(s=0,i=1;i<=99;s=s+i,i++) ;
printf(“s=%d”,s);
}注意此处
的分号。 此处,表达式1用逗号表达式的形式,给多个变量赋初值。表达式3用逗号表达式把循环体也写入其中。注意表达式3书写顺序不能交换。例:求 1/100+2/99+…+1分析:用变量i从1开始循环,每次增加1;用变量j从100开始循环,每次减少1。累加i/j的值到s中。当i>j时结束循环(即i<=j时继续循环)。最后输出s。程序如下:#include
main( )
{ int i,j;
float s=0;
for( i=1,j=100 ; i<=j ; i++,j--)
s=s+(float)i/j;
printf(“ns=%f”,s);
}for、while、do-while的比较 所有需要用到循环结构的程序,都可以用for、while、do-while中的任何一个来实现,区别只在于某些问题用哪种语句更方便。 比如求1+2+…+99的问题我们也可以分别用while与do-while语句编写如下:用while:#include
main( )
{ int i=1,s=0;
while(i<=99)
{s=s+i; i++; }
printf(“ns=%d”,s);
}用do-while:#include
main( )
{ int i=1,s=0;
do{s=s+i;
i++; }while(i<=99);
printf(“ns=%d”,s);
}例:任意输入一个自然数,把它反序输出。(如:原数为123,输出321)。分析:此题不确定循环执行的次数,也不涉及一个规律变化的变量,一般用while或do-while来编写。又由于第一次就要判断输入的是否是自然数,通常用while来实现。算法步骤如下:1. 定义整型变量a用于存储输入的自然数,定义t初值为0用于存放a的反序数,定义i用于依次存放求出的a的每一位的数值。
2. 输入一个自然数赋值给变量a
3. 若a>0,执行第4步,否则执行第7步
4. i=a%10
5. t=t*10+i
6. a=a/10,并返回第3步
7. 输出t程序:#include
main( )
{ long a,i,t=0;
scanf(“%ld”,&a);
while(a>0)
{ i=a%10;
t=t*10+i;
a=a/10; }
printf(“n%ld”,t);
}
在这里由于a的值可能
很大所以用到了long型定
义变量a,如果希望取到的
值更大,可以用unsigned
long型。
问:如果a用double型,并
把i=a%10改为i=(long)a%
10;把a=a/10改为a=(long)a
/10 可以吗?答:不可以!!例:有数列2/3、4/5、6/9、10/15……求此数列前30项的和。1. 初值i=2,j=3,s=0;
2. 用n从1到30循环
5.输出s; 3. s=s+ i/j;
4. c=i; i=j+1; j=c+j;算法分析:
对于数列的题,首先要找出通项公式,或前后项的计算关系公式,根据公式求所需。由于数列的题一般执行次数能确定,用for语句来编写比较方便。
此题,前后项的关系是:后一项的分子是前一项的分母加1,后一项的分母是前一项的分子加分母。解题思路是用循环语句求各项,并把值累加,因为是求前30项的和,循环执行30次。程序:#include
main( )
{ int i=2,j=3,n,c;
float s=0;
for(n=1;n<=30;n++)
{ s=s+(float)i/j;
c=i;
i=j+1;
j=c+j;
}
printf(“n%f”,s);
} 此题中的n与循
环体中的执行语句
没有数值上的联系
,仅仅用做决定循
环执行的次数。
分组完成课后练习再见!