C语言-流程控制

条件判断

if-else 语句

一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为 false 时执行。

语法:

if(boolean_expression)
{
   /* 如果布尔表达式为真将执行的语句 */
}
else
{
   /* 如果布尔表达式为假将执行的语句 */
}

流程图

代码示例

#include <stdio.h>
int main()
{
    // 定义变量
    short a = 1;
    short b = 2;
    int c = a - b;

    // 条件判断
    if( c > 0 )
    {
        printf("a > b\n");
    }
    else
    {
        printf("a <= b\n");
    }

    return 0;
}

if- else if-else语句

代码示例

#include <stdio.h>

int main()
{
    // 定义且初始化变量
    int x = 0;
    int y = 0;

    printf("请输入两个数:");
	
    // 请输入两个数
    scanf("%d%d", &x, &y);

    if (x > y)
    {
        printf("The bigger is: %d\n", x);
    }
    else if (x < y)
    {
        printf("The bigger is: %d\n", y);
    }
    else
    {
        printf("The 2 integers is equal: x == y\n");
    }

    return 0;
}

switch语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

流程图

代码示例

#include <stdio.h>

int main()
{
    // 定义num变量
    int num = 0;

    printf("Input a number: ");

    scanf("%d", &num);
	
    // 选择分支
    switch( num )
    {
        case 1:
            printf("A\n");
            break;
        case 2:
            printf("B\n");
            break;
        case 3:
            printf("C\n");
            break;
        case 4:
            printf("D\n");
            break;
        case 5:
            printf("E\n");
            break;
        default:
            printf("Invalid Input\n");
    }

    return 0;
}

循环判断

while 循环

只要给定的条件为真,C 语言中的 while 循环语句会重复执行一个目标语句。

语法

while(condition)
{
   statement(s);
}
流程图

代码示例

#include <stdio.h>

int main()
{	// 定义sum变量
    int sum = 0;
    // 定义i变量
    int i = 1;

    while( i <= 100 )
    {
        sum = sum + i;
        i = i + 1;
    }

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

    return 0;
}

编程实战

求2-100以内的所有质数

注意:质数只能被1 和 x整除

#include <stdio.h>

int main()
{
    // 定义变量i
    int i = 2;

    while( i <= 100 )
    {
        // 定义标记
        int flag = 0;
        int j = 2;

        while( j < i )
        {
            if( i%j == 0 )
            {
                flag = flag + 1;
            }

            j = j + 1;
        }

        if( flag == 0 )
        {
            printf("%d, ", i);
        }

        i = i + 1;
    }

    printf("\n");

    return 0;
}

for 循环

for 循环的语法:

for ( init; condition; increment )
{
   statement(s);
}
流程图

代码示例

#include <stdio.h>

int main()
{
    // 初始化两个sum的值
    int esum = 0;
    int osum = 0;
    int i = 0;

    for(i=1; i<=100; i=i+2)
    {
        osum = osum + i;
        esum = esum + (i + 1);
    }

    printf("osum = %d\n", osum);
    printf("esum = %d\n", esum);

    return 0;
}

do...while 循环

  • 在 C 语言中,do...while 循环是在循环的尾部检查它的条件。
  • do...while 循环与 while 循环类似,但是 do...while 循环会确保至少执行一次循环。

语法

do
{
   statement(s);

}while( condition );
流程图

代码示例

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* do 循环执行 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}

break

break能够强制结束当前结构,阻止程序向下执行。

代码示例

#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 1;

    while( 1 )
    {
        sum = sum + i;

        if( i == 100 )
            break;

        i = i + 1;
    }

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

    return 0;
}

continue

  • continue立即结束当前循环体,直接进入下一轮条件判断。
  • continue与break不同,并不会结束整个循环。

代码示例:

#include <stdio.h>

int main()
{
    int i = 0;
    int n = 0;

    for(i=1; i<1000; i=i+1)
    {
        if( i % 7 )
            continue;

        printf("%d ", i);

        n = n + 1;
    }

    printf("\n");
    printf("Count: %d\n", n);

    return 0;
}
posted @ 2020-05-17 14:20  guardwhy  阅读(246)  评论(0编辑  收藏  举报