C语言-控制语句

C语言中有三大结构,分别是顺序结构、选择结构和循环结构(分支结构)。

一、C 判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。

1、if语句

if 语句:一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。

基本语法:

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

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 10;

    /* 使用 if 语句检查布尔条件 */
    if (a < 20) {
        /* 如果条件为真,则输出下面的语句 */
        printf("a 小于 20\n");
    }
    printf("a 的值是 %d\n", a);

    return 0;
}

2、if…else 语句

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

基本语法:

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

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 100;

    /* 检查布尔条件 */
    if (a < 20) {
        /* 如果条件为真,则输出下面的语句 */
        printf("a 小于 20\n");
    } else {
        /* 如果条件为假,则输出下面的语句 */
        printf("a 大于 20\n");
    }
    printf("a 的值是 %d\n", a);

    return 0;
}

在这里插入图片描述

3、嵌套 if 语句

嵌套 if 语句:你可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。

基本语法:

if( boolean_expression 1)
{
   /* 当布尔表达式 1 为真时执行 */
   if(boolean_expression 2)
   {
      /* 当布尔表达式 2 为真时执行 */
   }
}

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 100;
    int b = 200;

    /* 检查布尔条件 */
    if (a == 100) {
        /* 如果条件为真,则检查下面的条件 */
        if (b == 200) {
            /* 如果条件为真,则输出下面的语句 */
            printf("a 的值是 100,且 b 的值是 200\n");
        }
    }
    printf("a 的准确值是 %d\n", a);
    printf("b 的准确值是 %d\n", b);

    return 0;
}

在这里插入图片描述

4、switch case语句

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

基本语法:

switch(expression){
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
    case constant-expression  :
       statement(s);
       break; /* 可选的 */
  
    /* 您可以有任意数量的 case 语句 */
    default : /* 可选的 */
       statement(s);
}

注意:

  • 1)break 关键字,专门用于跳出 switch 语句。一旦遇到 break,就不再执行 switch 中的任何语句,包括当前分支中的语句和其他分支中的语句。
    1. default 不是必须的。当没有 default 时,如果所有 case 都匹配失败,那么就什么都不执行。

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    char grade = 'B';

    switch (grade) {
        case 'A' :
            printf("很棒!\n");
            break;
        case 'B' :
        case 'C' :
            printf("做得好\n");
            break;
        case 'D' :
            printf("您通过了\n");
            break;
        case 'F' :
            printf("最好再试一下\n");
            break;
        default :
            printf("无效的成绩\n");
    }
    printf("您的成绩是 %c\n", grade);

    return 0;
}

5、嵌套 switch 语句

嵌套 switch 语句:可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值,也没有矛盾。

基本语法:

switch(ch1) {
   case 'A': 
      printf("这个 A 是外部 switch 的一部分" );
      switch(ch2) {
         case 'A':
            printf("这个 A 是内部 switch 的一部分" );
            break;
         case 'B': /* 内部 B case 代码 */
      }
      break;
   case 'B': /* 外部 B case 代码 */
}

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 100;
    int b = 200;

    switch (a) {
        case 100:
            printf("这是外部 switch 的一部分\n");
            switch (b) {
                case 200:
                    printf("这是内部 switch 的一部分\n");
            }
    }
    printf("a 的准确值是 %d\n", a);
    printf("b 的准确值是 %d\n", b);

    return 0;
}

C语言-控制语句_第1张图片

6、三元运算符

基本语法:Exp1 ? Exp2 : Exp3;

  • ? 表达式的值是由 Exp1 决定的。
  • 如果 Exp1 为真,则计算 Exp2 的值,结果即为整个表达式的值。
  • 如果 Exp1 为假,则计算 Exp3 的值,结果即为整个表达式的值。

示例如下:

#include

int main() {
    int num;

    printf("输入一个数字 : ");
    scanf("%d", &num);

    (num % 2 == 0) ? printf("偶数") : printf("奇数");
}

二、C 循环语句

1、for 循环

for 循环:多次执行一个语句序列,简化管理循环变量的代码。

基本语法:

for ( init; condition; increment )
{
   statement(s);
}

示例如下:

#include 

int main() {
    /* for 循环执行 */
    for (int a = 10; a < 20; a = a + 1) {
        printf("a 的值: %d\n", a);
    }

    return 0;
}

2、while 循环

while 循环:当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。

基本语法:

while(condition)
{
   statement(s);
}

condition 可以是任意的表达式,当为任意非零值时都为 true。

  • 当条件为 true 时执行循环。
  • 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 10;

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

    return 0;
}

3、do…while 循环

do…while 循环:do…while 循环是在循环的尾部检查它的条件。

基本语法:

do
{
   statement(s);

}while( condition );

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 10;

    /* do 循环执行,在条件被测试之前至少执行一次 */
    do {
        printf("a 的值: %d\n", a);
        a = a + 1;
    } while (a < 20);

    return 0;
}

do…while 循环与 while 循环类似,两者的区别在于:

  • do…while 循环会确保至少执行一次循环体。
  • while 循环可能一次都不会执行循环体。

4、嵌套循环

嵌套循环允许我们可以在 while、for 或 do…while 循环内使用一个或多个循环。

示例如下:

#include 

int main()
{
    int i=1,j;
    while (i <= 5)
    {
        j=1;
        while (j <= i )
        {
            printf("%d ",j);
            j++;
        }
        printf("\n");
        i++;
    }
    return 0;
}

C语言-控制语句_第2张图片

5、循环控制语句

循环控制语句改变你代码的执行顺序。通过它你可以实现代码的跳转。

5.1 break 语句

break 语句:终止循环或 switch 语句。

break 语句有下面两种用法:

  • 当 break 语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。
  • 它可用于终止 switch 语句中的一个 case。

如果您使用的是嵌套循环(即一个循环内嵌套另一个循环),break 语句会停止执行最内层的循环,然后开始执行该块之后的下一行代码。

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 10;

    /* while 循环执行 */
    while (a < 20) {
        printf("a 的值: %d\n", a);
        a++;
        if (a > 15) {
            /* 使用 break 语句终止循环 */
            break;
        }
    }

    return 0;
}

5.2 continue 语句

continue语句:告诉一个循环体立刻停止本次循环迭代(跳过当前循环),重新开始下次循环迭代。

  • 对于 for 循环,continue 语句执行后自增语句仍然会执行。
  • 对于 while 和 do…while 循环,continue 语句会重新执行条件判断语句。

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 10;

    /* do 循环执行 */
    do {
        if (a == 15) {
            /* 跳过迭代 */
            a = a + 1;
            continue;
        }
        printf("a 的值: %d\n", a);
        a++;

    } while (a < 20);

    return 0;
}

5.3 goto 语句

goto 语句:允许将控制无条件转移到同一函数内的被标记的语句。但是不建议在程序中使用 goto 语句。

注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。

基本语法:

goto label;
...;
...;
label: statement;

label 可以是任何除 C 关键字以外的纯文本,它可以设置在 C 程序中 goto 语句的前面或者后面。

示例如下:

#include 

int main() {
    /* 局部变量定义 */
    int a = 10;

    /* do 循环执行 */
    LOOP:
    do {
        if (a == 15) {
            /* 跳过迭代 */
            a = a + 1;
            goto LOOP;
        }
        printf("a 的值: %d\n", a);
        a++;

    } while (a < 20);

    return 0;
}

– 求知若饥,虚心若愚。

你可能感兴趣的:(C语言系列,C语言-控制语句)