天天看点

循环语句(while、do...while、for)

1 循环语句分析

  • 循环语句的基本工作方式:
    • 通过条件表达式判定是否执行循环体;
    • 条件表达式遵循if语句表达式的原则。
  • do、while、for的区别
    • do语句先执行后判断,循环体至少执行一次;
    • while语句先判断后执行,循环体可能不执行;
    • for语句先判断后执行,相比while更简洁。

2 do…while语句的循环方式

循环语句(while、do...while、for)

3 while语句的循环方式

循环语句(while、do...while、for)

4 for语句的循环方式

循环语句(while、do...while、for)

编程实验:三种循环语句使用对比

#include <stdio.h>

int f1(int n)
{
    int ret = ;

    if( n >  )
    {
        do
        {
            ret += n;
            n--;
        }
        while( n >  );
    }

    return ret;
}

int f2(int n)
{
    int ret = ;

    while( n >  )
    {
        ret += n;
        n--;
    }

    return ret;
}

int f3(int n)
{
    int ret = ;
    int i = ;

    for(i=; i<=n; i++)
    {
        ret += i;
    }

    return ret;
}

int main()
{
    printf("%d\n", f1());
    printf("%d\n", f2());
    printf("%d\n", f3());

    return ;
}
           

5 循环语句分析

  • break和continue的区别:
    • break表示终止循环的执行;
    • continue表示终止本次循环,进入下次循环执行。
  • 思考:switch能否用continue关键字?为什么?
    • switch是分支语句,continue只能用于循环语句。

实例分析:continue和break的区别

#include <stdio.h>

void f1(int n)
{
    int i = ;

    for(i=; i<=n; i++)
    {
        if( (i % ) ==  )
        {
            break;
        }

        printf("%d ", i);
    }

    printf("\n");
}

void f2(int n)
{
    int i = ;

    for(i=; i<=n; i++)
    {
        if( (i % ) ==  )
        {
            continue;
        }

        printf("%d ", i);
    }

    printf("\n");
}

int main()
{
    f1();
    f2();

    return ;
}
           

实例分析:do和break的妙用

#include <stdio.h>
#include <malloc.h>

int func(int n)
{
    int i = ;
    int ret = ;
    int* p = (int*)malloc(sizeof(int) * n);

    do
    {
        if( NULL == p ) break;

        if( n <  ) break;

        if( n > ) break;

        for(i=; i<n; i++)
        {
            p[i] = i;
            printf("%d\n", p[i]);
        }

        ret = ;
    }while(  );

    printf("free(p)\n");

    free(p);

    return ret;
}

int main()
{
    if( func() )
    {
        printf("OK\n");
    }
    else
    {
        printf("ERROR\n");
    }

    return ;
}
           

6 小结

  • for循环先进行判断再进入循环体。
  • for循环适合于循环次数固定的场合。
  • while循环先进行判断再进入循环体执行。
  • while循环体适合于循环次数不定的场合。
  • do…while循环先执行循环体再进行条件判断。
  • do…while循环体至少执行一次循环体。