您当前的位置:《C语言程序设计》听课笔记:09
《C语言程序设计》听课笔记:09

5.continue语句(使用continue语句跳出本次循环体直接进入下一轮循环。continue通常要和if语句一起使用。)

二 . do-while循环

三。for循环 用于定长循环(循环次数确定的循环)。还可以用于变长循环。且完全可以取代while循环。                                              

    最后说下这课视频仅十分钟貌似少了许多内容……

    以下是后来下载了本视频的第九节听完后的笔记,因为这段出现了问题不能看,所以我会尽量把老师讲的每句话都说一下


对于for循环。我们可以用当型循环来描述:

     e1;

    while(e2){语句 e3;}

其中e1 e2 e3分别对应的是for循环中的相应变量,语句等同于for循环中的循环执行语句.

例如:i=1;

   while(i<=10){sum=sum+i;i++}

等价于:for (i=1;i<=10;i++)sum+=i;


例题:编写程序依次写出2到32767之间的所有素数(质数)

分析:2为最小的素数,而32767为常整形中的最大十进制数(现在的编程系统中好像int变量增加至4个字节也就是32位了,最大数远超过了32767)

本程序中我们要完成的任务其实是两个,一是将2到32767之间的所有数字全部列出来,然后对它们挨个分析,依次寻找出素数,并打印出来。

那么我们这里就要引入一个多重循环的思想


对于多重循环我们先看一个程序

对于一般的石英表,是由秒(s)分(m)时(h)三个针组成的,并且最小的s是一直走动,当s转动一周m才动一下.于是我们有以下程序:

for(h=0;h<=23;h++)

   for(m=0;m<=59;m++)

        for(s=0;s<=59;s++)

主意我们这里出现的缩进的处理,可以看到这是一个三重的for循环,由内层s的循环,中层m的,外层h的组成.

那么根据钟表原理我们理解多重循环:最内层的是一直在进行的,当最内层s进行了59次循环达到59的时候,再循环依次达到60不再满足条件,这时候中层循环开始一次,内层循环再次重新开始。从s=0再度开始.而且内部是一直在变化的,这样外部才能持续变化.


那么对于我们的问题我们的程序如下(前面的编号是为了解释的时候容易一点,不是程序里的东西):

1.main()

2.{

3.int i,n;

4.for(n=2;n<=32767;++n)

5.   {for(i=2;n%i;++i);

7.     if(i==n)printf("%d\n",n);

8.    }

9.}

   注意几点:1.本程序用到的是二重循环2.第5行中的n%i等价于n%i!=0 3.第5行中最后的";"相当于空语句,不经行操作,并且内层的循环题就是";"本身

具体的多重循环后面还会讲到的



for循环注意的几点:

1.for循环中部分表达式或者全部的表达式可以省去,但是";"是不可以省的

  如果e2省去了那么循环恒为真

  for(;;);这是一个空语句的死循环

  for(;;)putchar('a')是一个持续输出字符a的死循环

但是下面的循环不会持续经行下去(也是死循环)

for(i=1;;i++)sum=sum+i;它会因为数据太大而溢出终止(整型数据的大小是有限的)

2.for中e1和e2 e3可以是任何有效的表达式或者是逗号表达式

例如:for(i=1,sum=0;i<5;i++,i++)它实际上输出的是5以内的所有奇数

3.for语句中循环体由多条语句组成的时候,那么也要使用复合语句("{}"括起来所有循环语句)

4.也只吃continue和break语句

例如:

main()

{

for(i=1;i<=100;i++)

{if(i==5)continue;

printf("%d\n",i);

if(i==10)break;

}

}本程序输出的是1 2 3 4 6 7 8 9 10(注意转义序列\n这里就不表示出来了)

    



收藏状态
收藏本课程的同学
相关课程