c语言中实现循环结构的控制语句有哪些?


本文摘自PHP中文网,作者青灯夜游,侵删。

c语言中实现循环结构的控制语句有:while语句、do-while语句和for语句,一般形式为“while(表达式){语句块}”,“do{语句块}while(表达式);”,“for(表达式1; 表达式2; 表达式3){语句块}”。

所谓循环(Loop),就是重复地执行同一段代码,例如要计算 1+2+3+……+99+100 的值,就要重复进行99次加法运算。

while循环

while循环的一般形式为:

1

2

3

while(表达式){

    语句块

}

意思是,先计算“表达式”的值,当值为真(非0)时, 执行“语句块”;执行完“语句块”,再次计算表达式的值,如果为真,继续执行“语句块”……这个过程会一直重复,直到表达式的值为假(0),就退出循环,执行 while 后面的代码。

我们通常将“表达式”称为循环条件,把“语句块”称为循环体,整个循环的过程就是不停判断循环条件、并执行循环体代码的过程。

用 while 循环计算1加到100的值:

1

2

3

4

5

6

7

8

9

10

#include <stdio.h>

int main(){

    int i=1, sum=0;

    while(i<=100){

        sum+=i;

        i++;

    }

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

    return 0;

}

运行结果:

1

5050

代码分析:

1) 程序运行到 while 时,因为 i=1,i<=100 成立,所以会执行循环体;执行结束后 i 的值变为 2,sum 的值变为 1。

2) 接下来会继续判断 i<=100是否成立,因为此时 i=2,i<=100 成立,所以继续执行循环体;执行结束后 i 的值变为 3,sum 的值变为3。

3) 重复执行步骤 2)。

4) 当循环进行到第100次,i 的值变为 101,sum 的值变为5050;因为此时 i<=100 不再成立,所以就退出循环,不再执行循环体,转而执行while循环后面的代码。

while 循环的整体思路是这样的:设置一个带有变量的循环条件,也即一个带有变量的表达式;在循环体中额外添加一条语句,让它能够改变循环条件中变量的值。这样,随着循环的不断执行,循环条件中变量的值也会不断变化,终有一个时刻,循环条件不再成立,整个循环就结束了。

如果循环条件中不包含变量,会发生什么情况呢?

1) 循环条件成立时的话,while 循环会一直执行下去,永不结束,成为“死循环”。例如:

1

2

3

4

5

6

7

#include <stdio.h>

int main(){

    while(1){

        printf("1");

    }

    return 0;

}

运行程序,会不停地输出“1”,直到用户强制关闭。

2) 循环条件不成立的话,while 循环就一次也不会执行。例如:

1

2

3

4

5

6

7

#include <stdio.h>

int main(){

    while(0){

        printf("1");

    }

    return 0;

}

运行程序,什么也不会输出。

再看一个例子,统计从键盘输入的一行字符的个数:

1

2

3

4

5

6

7

8

#include <stdio.h>

int main(){

    int n=0;

    printf("Input a string:");

    while(getchar()!='\n') n++;

    printf("Number of characters: %d\n", n);

    return 0;

}

运行结果:

1

2

Input a string:c.biancheng.net?L

Number of characters: 15

本例程序中的循环条件为getchar()!='\n',其意义是,只要从键盘输入的字符不是回车就继续循环。循环体n++;完成对输入字符个数计数。

do-while循环

除了while循环,在C语言中还有一种 do-while 循环。

do-while循环的一般形式为:

1

2

3

do{

    语句块

}while(表达式);

do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“语句块”。

用do-while计算1加到100的值:

1

2

3

4

5

6

7

8

9

10

#include <stdio.h>

int main(){

    int i=1, sum=0;

    do{

        sum+=i;

        i++;

    }while(i<=100);

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

    return 0;

}

运行结果:

1

5050

注意while(i<=100);最后的分号;,这个必须要有。

while循环和do-while各有特点,大家可以适当选择,实际编程中使用while循环较多。

除了while循环,C语言中还有 for 循环,它的使用更加灵活,完全可以取代 while 循环。

for循环

上面我们使用 while 循环来计算1加到100的值,代码如下:

1

2

3

4

5

6

7

8

9

10

11

#include <stdio.h>

int main(){

    int i, sum=0;

    i = 1;  //语句①

    while(i<=100 /*语句②*/ ){

        sum+=i;

        i++;  //语句③

    }

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

    return 0;

}

可以看到,语句①②③被放到了不同的地方,代码结构较为松散。为了让程序更加紧凑,可以使用 for 循环来代替,如下所示:

阅读剩余部分

相关阅读 >>

C语言中undeclared identifier是什么意思?

C语言函数类型有几种

putchar在C语言中是什么意思

C语言中do while语句怎么使用

C语言中允许的基本数据类型包括哪些?

C语言中sizeof和strlen的区别是什么

零基础学C语言看什么书

C语言中“||”是什么意思

“\n\n”在C语言中是什么意思?

C语言中的关键字有哪些类型?

更多相关阅读请进入《C语言》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...