第一课

本课主题: while,for循环

教学目的: 掌握用while、for语句实现循环的方法及 breakcontinue语句

教学重点: 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);
}

 

回目录