第四章for、while循环

您好!我是小柒,今天咱们一起来学习一下for、while循环。

 

 for、while循环

 生活中有很多事情都是在一定的条件下做循环工作的,比如:从1数到100、嗑瓜子、吃包子。很多软件部分功能也是是反复执行的,比如:循环播放一首歌曲、倒计时显示秒数。大家用现有的计算机知识,如果实现打印1~100?用printf打印是不是要把1~100的数字都写出来,这样是不是很麻烦?

 

 我们说程序的执行顺序有三种:

1、顺序执行语句序列(顺序)。

2、通过进行一个判断在两个可选的语句序列之间选择执行(分支)。 

3、在满足某个条件之前反复执行一个语句序列之间选择执行(循环)。

这节我们通过学习掌握计算机是通过什么语法来控制程序执行循环的。

 

本节内容:

 

二、while循环

三、do{…}while循环

四、for循环

 

一、while循环

 

小柒什么是while循环?

 

答:while循环语句,计算机的一种基本循环模式。当满足条件时进入循环,不满足跳出。

 

格式为:

 

while(循环条件表达式)

 

{   

 

循环体

 

}

小柒提示: 

  1. while语句中的循环条件表达式一般是关系表达式或者逻辑表达式。
  2. while循环直到循环条件为假的时候,循环停止。

 

-----------------------------------------------------------------

 

例题1

打印1~100

   int i = 0;

    while (i < 100) {

        i += 1;

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

    }

打印结果:1~100

 

-----------------------------------------------------------------

 

 例2

//    while1~100的和

 

    int i = 0,sum = 0;

 

    while (i < 100) {

 

        i += 1;

 

        sum = sum + i;

 

    }

 

    printf("循环外部的sum %d\n",sum);

打印结果:

 

循环外部的sum 5050 

 

continue

小柒continue有什么用?

 

其作用是:结束本次循环,即跳过循环体下面尚未执行的语句,接着进行下一次是否执行循环的判断

 

实际案例:嗑瓜子就是个循环动作,遇到坏的瓜子的时候,会把坏瓜子扔掉,继续拿好的瓜子吃。continue就是用来处理迟到坏瓜子的情况的。

continue语句会跳过某次循环的部分内容,继续下一次循环,不会结束循环。

while(循环条件){

       ……

       if(条件表达式){

continue;

}

       语句块

}

如果条件表达式为真,会走continue,会跳过”语句块”,继续下一次循环。 

 

-----------------------------------------------------------------

 

例题:

实现打印不是13的倍数,如果是13的倍数通过continue跳过打印数字的语句。

int i=0;

    while (i<100)

    {

        i++;

        if (i%13==0)

        {

        

printf("%d\n",i%13);//为了观察i的走向,打印结果是将13的倍数都赋值成0

            continue;

//printf("%d\n",i%13);会有警告,内容是代码永远不会被执行

        }

        printf("%d ",i);

    }

打印结果:1~100之间13的倍数都不能显示了 

小柒提示:

continue里面的代码永远不会被执行 

break

小柒什么是break?

 

 答:break在一些计算机语言中是保留字,其作用大多情况下是终止上一层的循环。以C语言来说,break在switch(开关语句)中在执行一条case后跳出语句的作用。

 

实际例子:嗑瓜子的时候,吃够了或者瓜子没有的时候,就会停止嗑瓜子的动作。

       在计算机怎么完成停止某个循环呢?通过break关键字。 

 

-----------------------------------------------------------------

 

例题:

       打印1~100,不通过循环条件结束循环,利用break结束循环。

     int i = 0;

 

    while(i < 100){

        i++;

        printf("%d",i);

        

        if(i == 10){//输入多少就执行多少

            

            break;

        }     

    }

打印结果:

12345678910 

小柒提示

  1. 在switch语句中我们接触过break,break是跳出switch语句块,执行switch语句块下面的语句。
  2. 在循环中,break主要作用是跳出本层循环,执行循环后面的语句。通常break语句总是与if语句联在一起,但是break不能单独用在if语句中。
  3. break是结束本层循环,continue是结束本次循环继续下一次循环。

二、do{…}while循环

小柒什么是do{…}while循环?

答:do/while 循环是 while 循环的变体。在检查条件是否为真之前,该循环首先会执行一次代码块,然后检查条件是否为真,如果条件为真的话,就会重复这个循环。适合用于在循环次数未知的情况下判断是否达到条件并打印最后一位数。

 

 格式:

do{

  循环体

}while(循环表达式); 

执行循环的时候,先执行循环体,再判断循环条件,直到条件不满足的时候,循环结束。

 

-----------------------------------------------------------------

 例题

在c语言中用do-while循环计算1+2+.....+100的和

int i = 1,sum = 0;

    do

    {

        sum +=i++;

        printf("sum = %d",sum);//内部走向

    }while(i <= 100);

    

    printf("1+2+...+100 = %d\n",sum);//外部结果

打印结果:

1+2+...+100 = 5050

执行循环的时候,先执行循环体sum +=i++;,再判断循环条件while(i <= 100)是否满足,如果满足,循环结束;不满足继续执行,直到满足为止。

小柒提示, while和do-while得区别:

  1. while当条件满足执行循环体,即先判断再执行。
  2. do-while先执行循环体得内容,当满足条件时,循环结束,即先执行再判断。

 三、for循环

小柒什么是for循环?

答:for循环编程语言中的语句之一,用于循环执行。for循环是开界的,它的一般形式为: for(循环增量初始化;循环条件;循环增量增加) 语句; 初始化总是一个赋值语句, 它用来给循环控制变量赋初值; 条件表达式是一个关系表达式, 它决定什么时候退出循环; 增量定义循环控制变量每循环一次后 按什么方式变化。这三个部分之间用";"分开。 例如:for(i=1; i<=10; i++) 语句; 上例中先给i赋初值1, 判断i是否小于等于10, 若是则执行语句, 之后值增 加1。再重新判断, 直到条件为假, 即i>10时, 结束循环。

格式:

for(循环增量初始化;循环条件;循环增量增加){

                语句

} 

例题:

使用for循环,实现1-100的循环相加,并将结果输出

 

int sum = 0;

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

        sum += i;

    }

    printf("sum   %d",sum);

打印结果:sum 5050

小柒提示:

循环条件为假的时候,循环结束。通常给循环变量加条件控制循环的结束。

强调for循环的执行顺序:

1、先初始化循环变量,初始化循环变量只执行一次。

2、判断循环条件,如果循环条件为真,执行循环体,否则结束循环

3、执行循环体后,循环增量增加。

for循环嵌套

小柒什么是循环嵌套?

在一个循环体语句中又包含另一个循环语句,称为循环嵌套。
格式如下:

      for(循环增量初始化;循环条件;循环增量增加){

                

     for(循环增量初始化;循环条件;循环增量增加){

                语句

  } 

               语句

  } 

小柒,那么嵌套能干什么呢?

1

1 2

1 2 3

小柒教用嵌套来做

    for (int  j=0; j<3; j++)

    {

        for (int i=0; i<j+1; i++)

        {

            printf("%d",i+1);

        }

        printf("\n");

    }

打印结果:

1

1 2

1 2 3 

 

-----------------------------------------------------------------

 

例题

打印99 乘法口诀

    for (int i=1; i<10; i++) {

        for (int j=1; j<i+1; j++) {

            printf("%d*%d=%d ",j,i,i*j);

        }

        printf("\n");

    }

打印结果:

1*1=1 

1*2=2 2*2=4 

1*3=3 2*3=6 3*3=9 

1*4=4 2*4=8 3*4=12 4*4=16 

1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 

1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 

1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 

1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 

1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

-----------------------------------------------------------------

for循环的其他形式:

(1)、

int i = 10;

for(;i>0;--i)

printf(“%d”,i);

 

(2)、

int i = 0;

for(i = 10; i>0;)

printf(“%d”, --i);

 

(3)、int i= 10;

for(;i>0;)

printf(“%d”, --i);

小柒提示:不要在for()后面加;会导致循环体空。

总结:

循环是程序开发 最重要的组成部分,充分理解循环的执行过程,是学好以后课程的保障。

for最常用,通常用于知道循环次数的循环

while也很常用,通常用于不知道循环次数的循环

do..while不是特别常用,通常用于需要先执行一次的循环。

-----------------------------------------------------------------

 哈哈,今天的课程就这样愉快的结束了。

小柒明天陪大家一起学习数组,加油哦!

 

posted on 2015-12-15 15:00  xxQMYxx  阅读(259)  评论(0编辑  收藏  举报

导航