第一课
本课主题: while,for循环
教学目的: 掌握用while、for语句实现循环的方法及 break、continue语句
教学重点: while,for语句格式
教学难点: while,for语句的应用
授课内容:
一、循环结构
有时我们需要重复地作同一件事情,这时我们可以用循环结构。循环结构包括 for、while、do-while 语句。 我们先来学习用while来实现循环。
假设我们要计算1到100以内所有自然数的和。
main()
{
int i,sum=0;
for (i=0;i<100;i++)
{
sum=sum+i;
}
}
二、while 语句格式
有时我们不知道要循环的次数,但我们知道循环结束条件,这时我们可以用while 语句。
(1) while 语句原型:
while (表达式)
一个语句;
while 语句首先计算表达式,如果表达式的值为真,执行“一个语句”;然后再执行表达式,如果表达式的值为真,再执行“一个语句”;直到表达式的值为假时,结束 while 语句,执行 while 语句后面的语句。例:求 S = 1 - 1/2 + 1/4 - 1/8 + 1/16 + ... 直到项的值<0.0001
main()
{
int i;
float sum,a;
sum = 0;
a = 1;
while (!(a<0.0001))
{
sum+=a;
a*=-1/2.0; }
printf("sum=%%f",sum);
}
三、do-while 语句
while 语句是先判断,后执行,有时我们先执行,后判断,用do-while 语句。
(1) do-while 语句原型:
do
一个语句;
while (表达式)
do-while 语句首先执行“一个语句”,然后计算表达式,如果表达式的值为真,继续执行“一个语句”,然后再计算表达式,如果表达式的值为真,再执行“一个语句”;直到表达式的值为假时,结束 do-while 语句,执行 do-while 语句后面的语句。
四、for 语句
(1) for 语句原型:
for (表达式1; 表达式2; 表达式3)
一个语句;
for 语句首先执行表达式1,然后执行表达式2,如果表达式2的值为真,执行for的“一个语句”;然后执行表达式3,然后执行表达式2,如果表达式2的值为真,再执行for的“一个语句”;然后执行表达式3,然后执行表达式2,如果表达式2的值为真,再执行for的“一个语句”;当表达式2的值为假时,结束for 语句,执行for 语句后面的语句。例如,
for (i=10; i<20; i++)
line(100,i,200,i);
首先执行 i=10,然后执行 i<20,i 等于10,显然 i<20 值为真,执行line(100,i,200,i),既line(100,10,200,10);然后i++,i 变为11,显然 i<20 值为真,执行line(100,i,200,i),既line(100,11,200,11);然后i++,i 变为12,等等,...,直到 i 变为 20,i<20 值为假,结束 for 语句,执行 for 语句后面的语句。i 叫循环变量,反复执行的部分叫循环体。
提问:for 语句中的三个表达式中,哪个只执行一次?哪个执行的次数最多?
(2) 复合 for 语句与嵌套 for 语句
像 if 语句一样,for 语句也可以复合与嵌套,意义也一样,见 if 语句。
五、for 语句的例子
(1) 最简单的 for 语句的例子:循环体内不涉及循环变量。
本课的第一个例子,就是最简单的 for 语句的例子,它循环体内不涉及循环变量。
(2) 较复杂的 for 语句的例子:循环体内引用循环变量。
例:求 S = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n + ... (求前一百项的和)
main()
{
int i;
float sum;
sum=0;
for (i=1;i<=100;i++)
{
sum+=1/i;
}
printf("sum=%f",sum);
}
(3) 更复杂的 for 语句的例子:每次循环依赖上次循环的结果。
例:求 S = 1 - 1/2 + 1/4 - 1/8 + 1/16 + ... (求前一百项的和)
main()
{
int i;
float sum,a;
sum = 0;
a = 1;
for (i=0;i<100;i++)
{
sum+=a;
a*=-1/2;
}
printf("sum=%f",sum);
}