C语言程序设计-第5章 循环结构程序设计

循环结构是程序设计中最为复杂、也是最能体现计算机运算效果的结构。在具体程序设计中,使用好了循环结构,可以使问题的解决事半功倍。下面通过几个具体的实例来了解怎样使用循环结构解决现实中的一些问题。

5.2 用while语句实现循环

1.使用辗转相除法求两个数的最大公约数和最小公倍数。

while(表达式) 语句

什么是辗转相除法呢?比如求X、Y的最大公约数,先讨论的余数B是否等于0,如果是,则Y为最大公约数;否则将Y的值赋给X,把B的值赋给Y然后再继续对B讨论,一直循环下去直到B=0时,Y值就是所求的最大公约数了。

只要当循环条件表达式为真(即给定的条件成立),就执行循环体语句.

澳门新葡亰手机版,上述程序首先使用了if选择语句,将两个数中较大的数放在num2变量中。在采用while循环语句实现辗转相除法,得出最大公约数,放在变量a中。编译并运行程序,输入测试数据。

while循环的特点是:先判断条件表达式,后执行循环体语句.

2.求1000以内的所有水仙花数。

例5.1 求1+2+3+…+100.

所谓水仙花数,是指一个n位数,它的每个位上的数字的几次幂之和等于该数字本身。对于三位数的水仙花数,需要分开一个数的百位、十位和个位,然后求出其立方和是否与该数字本身相等,如相等则输出,否则继续寻找下一个数。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i=1,sum=0;
    while(i<=100)
    {
        sum=sum+i;
        i++;
    }
    printf("sum=%dn",sum);
    return 0;
}

5.3 用do…while语句实现循环

do…while语句执行过程是:先执行循环体,然后再检查条件是否成立,若成立再执行循环体.这是和while语句不同的.

do…while语句的特点是:先无条件地执行循环体,然后判断循环条件是否成立.

用do…while求上面求和.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i=1,sum=0;
    do
    {
        sum=sum+i;
        i++;
    }while(i<=100);
    printf("sum=%dn",sum);
    return 0;
}

while和do…while,当while后面的表达式的第1次的值为”真”时,两种循环得到的结果相同,否则,二者结果不同.

5.4 用for语句实现循环

for(循环变量赋初值;循环条件;循环变量增值)

语句

从终端键盘向计算机输入时,是在按enter键以后才将一批数据一起送到内存缓冲中去的.

5.5 循环的嵌套

一个循环体内又包含另一个完整的循环结构,称为循环的嵌套.内嵌的循环中还可以嵌套循环,这就是多层循环.

5.6 几种循环的比较

while循环,do…while循环和for循环,都可以用break语句跳出循环,用continue语句结束本次循环.

5.7 改变循环执行的状态

用break语句提前终止循环.

break的作用是使流程跳到循环体之外,接着执行循环体下面的语句.

break语句只能用于循环语句和switch语句之中,而不能单独使用.

用continue语句提前结束本次循环

continue提前结束本次循环,即跳过循环体中下面尚未执行的语句,转到循环体结束点之前,接着执行for语句中的”表达式3″,然后进行下一次是否执行循环的判定.

例5.5 要求输出100~200之间的不能被3整除的数.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    for(n=100;n<=200;n++)
    {
        if(n%3==0)
            continue;
        printf("%d",n);
    }
    printf("n");
    return 0;
}

continue语句只是结束本次循环,而break语句则是结束整个循环过程.

5.8 循环程序举例

例5.8
求Fibonacci数列的前40个数.这个数列有如下特点:第1,2两个数为1,1.从第3个数开始,该数是其前面两个数之和.