第五章 循环控制

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");
}

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

原文地址:https://www.cnblogs.com/Yang-Xin-Yi/p/13499331.html