zoukankan      html  css  js  c++  java
  • 第五章 循环控制

    5.1 while语句

    while语句实现的循环称为当型循环。

    1.语法

      while(表达式) 语句

    2.功能

      计算表达式的值,当值为真(非0)时,执行循环体语句。

    3.说明

    1)表达式称为循环控制条件表达式,一般为关系表达式或逻辑表达式,必须用一对圆括号()括起来。

    2)语句称为循环体,可以是单个语句也可以是{ }括起来的复合语句。不加{ } ,循环体执行的是一条语句。

    3)循环体内必须有改变循环体结束条件的语句。

    例题1.用while语句求10!的值。

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 
     5 void main()
     6 {
     7     int i = 1, mul = 1;
     8     while (i<=10)
     9     {
    10         mul = mul*i;
    11         i++;
    12     }
    13     printf("%d", mul);
    14 
    15     system("pause");
    16 }

    例题2.统计从键盘输入一行字符的个数。

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 
     5 void main()
     6 {
     7     char ch; int x = 0;
     8     ch = getchar();
     9     while (ch != '
    ')
    10     {
    11         x++;
    12         ch = getchar();
    13     }
    14     printf("%d", x);15     system("pause");
    16 }

     

    5.2 do-while 语句

    do - while语句与while循环语句相差不大,因为它把判断循环条件的的位置放在了循环体后,所以又称直到型循环。

    1.语法

       do

          语句

       while(表达式);

    2.功能

      先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环,如果为假则终止循环。

    3.说明

      1)do - while 先执行循环体,然后判断条件,即循环体至少要被执行1次,这是与while语句的典型区别。

      2)与while一样,也要避免死循环,即循环体内必须有改变循环体结束条件的语句。

      3)语句部分可以是单个语句也可以是{ }括起来的复合语句。不加{ } ,循环体执行的是一条语句

     

    例题1.口令程序。用户进入某系统,从键盘回答口令有3次机会。3次中任何一次回答正确均可进入系统(显示:You are welcome),否则不能进入系统(显示:No Access).

     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 
     5 #define PS 666666
     6 void main()
     7 {
     8     long password;
     9     int i = 0, flag = 0;
    10     
    11     do {
    12         i++;    printf("第%d次回答口令【只能是数字】", i);
    13         scanf("%ld", &password);
    14         if (password == PS) 
    15         {
    16             flag = 1; break;
    17         }
    18     } while (i < 3);
    19 
    20     if (flag == 1)printf("You are welcome!!!");
    21     else printf("No Access");
    22 
    23     system("pause");
    24 }

     

    5.4 for 语句

    1.语法

       for(表达式1;表达式2;表达式3) 语句      可以简化为for(循环初始化;循环条件;循环增量)

    2.功能

      1)计算表达式1的值。

      2)计算表达式2的值,若表达式2为true,则转到步骤3),若为false,则结束循环。

      3)执行循环体语句。

      4)计算表达式3的值,返回步骤2)继续执行。

    3.说明

      1)圆括号内的三个表达式用分号;隔开。

      2)表达式1称为循环初始化表达式,通常为赋值表达式。

      3)表达式2称为循环条件表达式,通常为关系或逻辑表达式。

      4)表达式3称为循环增量表达式,通常为赋值表达式。

      5)语句称为循环体,可以是单个语句,也可以是多个语句。

      6)表达式1可以省略;  for(;表达式2;表达式3)

      7)表达式1和表达式3可以省略;  for(;表达式2;)  只有表达式2时完全等于while语句

      8)如果表达式3省略,则在循环体内应该有改变循环条件的语句。

      9)表达式1和3可以是简单表达式,也可以是逗号表达式:  for(i = 0,j = 100;i <= j;i++,j--) k = i + j;

     

    例题1.用for循环计算10的阶乘。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
        int i;
        long  mul;
        
        for (i = 1, mul = 1; i <= 10; i++)
        {
            mul = mul*i;
        }
    
        printf("%ld", mul);
    
        system("pause");
    }

     

    例题2.Fibonacci数列:数列前两项是1和1,以后每项均为前相邻两项之和。

        用数学语言描述即:F(1) = 1; F(2) = 2; F(n) = F(n - 1) + F(n - 2)  (当n >= 2时)  编程输出该数列前40项。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
        long  F1 = 1, F2 = 1;
        int i;
    
        for (i = 1; i <= 20; i++)
        {
            printf("%12ld%12ld", F1, F2);
            if (i % 2 == 0) putchar('
    ');//一行输出4个数
    
            F1 = F1 + F2;
            F2 = F2 + F1;
        }
    
        system("pause");
    }

     

    例题3.求1--200中能被3整除,且至少有一位数字为5的所有整数。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
        int i, a, b, c;
        for (i = 1; i < 200; i++)
        {
            c = i / 100;
            b = i % 100 / 10;
            a = i % 100 % 10;
            if (i % 3 == 0 && (a == 5 || b == 5 || c == 5))
                printf("%d能被3整除且包含5
    ", i);
        }
    
        system("pause");
    }

     

    5.5 goto语句以及goto语句构成的循环

      goto语句是一种无条件转移语句,它与if语句配套使用可以构成循环。

    语法: goto 语句标号;

    goto语句常用于终止程序在某处深度嵌套的结构中的处理过程,例如一次跳出两层或多层循环。

    例题1.用goto语句和if语句构成循环,求sum = 2 + 4 + 6 + …… + 100.

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
        int i = 2, sum = 0;
    
    loop:if (i <= 100)
    {
        sum = sum + i;
        i += 2;
        goto loop;
    }
         printf("%d", sum);
    
        system("pause");
    }

     

    5.7 break和continue语句

    5.7.1 break 语句

    break语句在C语言中只能用于两个地方。一个是循环语句,另一个是在switch语句中。

      当break语句用于switch语句中时,可使程序跳出switch语句。

      当break语句用于循环语句中时,可使程序跳出当前所在的一层循环。

    注意:

      1)break语句对if - else的条件语句不起作用。

      2)在多层循环中,一个break语句只向外跳一层。

    5.7.2 continue 语句

    continue语句只能用于循环语句中,它的作用是跳出循环体中剩余的语句而强行执行下一次循环,常与if语句一起使用,用来加速循环。

     

    例题1.输出九九乘法表。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
        int i, j;
        for (i = 1; i <= 9; i++)
        {
            for (j = 1; j <= 9; j++)
            {
                printf("%d * %d = %2d  ", i, j, i*j);
            }
            putchar('
    ');
        }
    
        system("pause");
    }

    2.右上三角形的乘法表。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
        int i, j;
        for (i = 1; i <= 9; i++)
        {
            for (j = 1; j <= 9; j++)
            {
                if (j < i) printf("        "); //打印12个空格,即"%d * %d = %2d "的长度
                else 
                    printf("%d * %d = %2d  ", i, j, i*j);
            }
            putchar('
    ');
        }
    
        system("pause");
    }

    例题3.左下三角形的乘法表。

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
        int i, j;
        for (i = 1; i <= 9; i++)
        {
            for (j = 1; j <= i; j++)
            {
                    printf("%d * %d = %-4d", i, j, i*j);
            }
            putchar('
    ');
        }
    
        system("pause");
    }

     

     

     

     

     

     

     

     

     

     

     

     


     

     

     

     

  • 相关阅读:
    交互原型设计软件axure rp学习之路(一)
    charles关于手机APP抓包
    Charles常见问题汇总
    转: Charles 从入门到精通
    深度理解《正则表达式》
    monkey无规则压力测试
    go语言几个最快最好运用最广的web框架比较
    html 生成印章
    通过URI协议实现浏览器调用手机app
    基于GitLab+Jenkins的DevOps赋能实践
  • 原文地址:https://www.cnblogs.com/Yang-Xin-Yi/p/13499331.html
Copyright © 2011-2022 走看看