c语言入门11,循环语句一大家和它的管家,其他循环语句和break,continue

上一节介绍了 C 语言的 while 循环语句,可以很方便的让计算机执行很多次数的迭代,事实上,while 循环语句还有很多兄弟语句也能实现循环操作,可以视实际情况选择合适的语句。此外,C 语言还提供了 break 和 continue 关键字用于控制循环。下面我们一一介绍。

C 语言的 break 和 continue 关键字

当循环语句遇到 break 时,直接跳出循环,而遇到 continue 时,则结束本次循环,开始一次新的循环。这么说有点虚,还是来看几个例子吧:

int cnt = 0;
while(1)
{
    cnt = cnt +1;
    if(cnt ==3)
        break;
    printf("cnt=%d\n", cnt);
}

以上代码,while(1) 本应是个死循环,按理说,程序应该永远停在 while 循环语句里了。但是在 cnt 等于 3 的时候,程序遇到 break 了,于是跳出循环体,执行了 printf 语句,程序最后输出 “cnt=3”。再来看看 continue 关键字:

int cnt = 0;
while(cnt < 4)
{
    cnt = cnt +1;
    if(cnt ==2)
        continue;
    printf("cnt=%d, ", cnt);
}

代码很简单,就是把 cnt 依次从 0 加一加到 4,然后打印出它的值。程序最后输出:"1, 3, 4, ",少了 2 对不?这是因为在 cnt 等于 2 的时候,直接就结束本次循环,跳到程序开头了,也即 cnt 等于 2 的时候,printf 语句被跳过了。现在应该理解“当循环语句遇到 break 时,直接跳出循环,而遇到 continue 时,则结束本次循环,开始一次新的循环。” 这句话了。

break 和 continue 应作为独立的语句,要用 ;结尾。它们让循环更加灵活了。

C 语言的 do/while 循环语句

do/while 循环语句和 while 循环语句非常像,只是 do/while 循环语句把条件表达式放在后面,它的语法如下:

do{
    语句;
}while(条件表达式);

程序遇到 do/while 循环语句后,会先执行循环体里的语句,到末尾才判断条件表达式真假决定是否循环。说到这里,就看出它与 while 循环语句的区别了:如果条件表达式为假,while 循环直接就被跳过了,不会执行;而 do/while 循环语句则至少执行一次循环。例如:

#include <stdio>
int main()
{
    while(1==0){
        printf("while \n");
    }
    do{
        printf("do while\n");
    }while(1==0);
}

编译执行后,程序会输出 “do while”。使用 do/while 语句要注意的事项和 while 语句一致,只是还要确保 do/while 语句的最后 while后一定要有“;”,否则编译器无法判断这是一个do/while循环的结尾还是另一个while循环的开头。

C 语言的 for 语句

先来看看 for 语句的语法:

for(控制表达式1;控制表达式2;控制表达式3)
    语句

如果不考虑 continue(为什么呢,可以思考一下) ,则 for 语句相当于:

控制表达式1;
while(控制表达式2) {
    语句
    控制表达式3;
}

我们用 for 语句来计算 n!,请看如下代码:

int factorial(int n)
{
    int result = 1;
    int i;
    for(i = 1; i <= n; ++i)
        result = result * i;
    return result;
}

++i 的作用和 i+1; i=i+1; 一样,如果 i = 0,那么执行 a = ++i; 语句后,a 等于 1,i 也等于 1。类似还有 --i,表示自减。现在来分析一下 for 语句:“i=1”,表示 for 循环体里的 i 从 1 开始;“i<=n”,表示如果 i<=n 为真,则循环,否则跳出循环;++i 表示每执行一次循环,就把 i 加一。

现在,已经知道 C 语言循环语句一大家子和它的管家们(break,continue)了吧。

阅读更多:   C语言
添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif