信息发布→ 登录 注册 退出

一篇文章带你了解C语言的选择结构

发布时间:2026-01-11

点击量:
目录
  • 一、if-else语句
    • 1.单选择
    •  2.双选择
    • 3.多选择
  • 二.switch语句
    • 总结

      一、if-else语句

      1.单选择

      单选择通过if语句就可以实现,if语句的语法及执行流程如下:

      if(表达式)
      {
           代码块(表达式返回值为真时执行)
      }

      当程序运行到if语句时,会由表达式进行判定,诺表达式的返回值为真,则进入代码块执行语句,为假便跳过代码块继续执行。(当代码块语句仅有一句时,可以省略大括号。)

      举一个简单的例子

      例:判断10是否为3的倍数

       
      int main()
      {
      	int i = 10;
      		if (i % 3 == 0) //表达式结果为假 
      			printf("是");//代码块内 未执行
      	return 0;
      }

       2.双选择

      双选择通过if-else语句实现,if-else语句的语法及执行流程如下:

      (else的匹配:else是和它相距的最近的if匹配的)

      if(表达式)
      {
         语句一(表达式返回值为真时执行)
      }
      else
      {
         语句二(表达式返回值为假时执行)
      }

       

      当程序运行到if语句时,会由表达式进行判定,表达式的返回值为真,则执行语句1,为假便块执行语句2。

      举一个简单的例子

      例:判断学生分数及格 

      #include<stdio.h>
      int main()
      {
      	int i = 0;
      	scanf("%d", &i);
      	if (i >= 60)
      		printf("及格");
      	else
      		printf("不及格");
      	return 0;
      }

      3.多选择

      通过else if语句实现的多选择,else if语句的语法及执行流程如下:

      if(表达式1)
      {
         语句1 (表达式1返回值为真时执行)
      }
      else if(表达式2)
      {
         语句2 (表达式返回值为真时执行)
      }
      else if(表达式3)
      { 
          语句3(表达式返回值为真时执行)
      }
      else 
      {
         代码块(以上表达式均为假时执行)
      }

       

      当程序运行到if语句时,会由表达式进行判定,表达式1的返回值为真,则进入if下的代码块执行语句1,为假便进入表达式2。当然if-else可以实现的分支不止这四种,通过增加else if 语句的数量便可以实现更多的选择。

      举一个简单的例子

      例:年龄分段

      #include <stdio.h>
      int main()
      {
          int age = 0;
          scanf("%d", &age);
          if (age < 18)
          {
              printf("少年\n");
          }
          else if (age >= 18 && age < 30)
          {
              printf("青年\n");
          }
          else if (age >= 30 && age < 50)
          {
                  printf("中年\n");
          }
          else if (age >= 50 && age < 80)
          {
              printf("老年\n");
          }
          else
          {
              printf("老寿星\n");
          }
          return 0;
      }

      二.switch语句

      switch语句也是一种分支语句。 常常用于多分支的情况。else if 语句也能实现多分支情况,但在某些情况下使用else if来实现,会使代码过于复杂。

      比如:

      输入1,输出星期一

      输入2,输出星期二

      输入3,输出星期三

      输入4,输出星期四

      输入5,输出星期五

      输入6,输出星期六

      输入7,输出星期日

      如果使用else if 

      #include<stdio.h>
      int main()
      {
      	int day = 0;
      	scanf("%d", &day);
      	if (1 == day)
      		printf("星期一");
      	else if (2 == day)
      		printf("星期二");
      	else if (3 == day)
      		printf("星期三");
      	else if (4 == day)
      		printf("星期四");
      	else if (5 == day)
      		printf("星期五");
      	else if (6 == day)
      		printf("星期六");
      	else
      		printf("星期日");
      	return 0;
      }

       那么这个代码便会太过复杂,而使用switch就会很多

      switch语句的语法及执行流程如下:

      switch(整型表达式)
      {
          //在一个 switch 中可以有任意数量的 case 语句。
          case 整形常量表达式:
          语句;
      }

      case  是一个入口,按照输入整型表达式的值进入,后按照顺序依次运行。

      单使用switch语句是无法实现分支的,需要搭配break使用才能实现真正的分支。

      举一个例子:

      #include <stdio.h>
      int main()
      {
          int day = 0;
          scanf("%d", &day);
          switch (day)
          {
          case 1:
              printf("星期一\n");
          case 2:
              printf("星期二\n");
          case 3:
              printf("星期三\n");
          case 4:
              printf("星期四\n");
          case 5:
              printf("星期五\n");
          case 6:
              printf("星期六\n");
          case 7:
              printf("星期天\n");
          }
          return 0;
      }

      输入值分别为2 4时,输出结果如下:

       与想要实现的效果相差甚远,而搭配break使用就能解决这个问题。

      #include <stdio.h>
      int main()
      {
          int day = 0;
          scanf("%d", &day);
          switch (day)
          {
          case 1:
              printf("星期一\n");
              break;
          case 2:
              printf("星期二\n");
              break;
          case 3:
              printf("星期三\n");
              break;
          case 4:
              printf("星期四\n");
              break;
          case 5:
              printf("星期五\n");
              break;
          case 6:
              printf("星期六\n");
              break;
          case 7:
              printf("星期天\n");
              break;
          }
          return 0;
      }

       

       break语句 的实际效果是把语句列表划分为不同的分支部分。

       switch除了搭配break语句使用,往往也会搭配 default语句

      如果表达的值与所有的case标签的值都不匹配时,所有的语句都会被跳过。程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。

      诺并不想忽略不匹配所有标签的表达式的值时,可以在语句列表中增加一条default子句。

      当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

       例如:

      #include <stdio.h>
      int main()
      {
          int day = 0;
          scanf("%d", &day);
          switch (day)
          {
          case 1:
              printf("星期一\n");
              break;
          case 2:
              printf("星期二\n");
              break;
          case 3:
              printf("星期三\n");
              break;
          case 4:
              printf("星期四\n");
              break;
          case 5:
              printf("星期五\n");
              break;
          case 6:
              printf("星期六\n");
              break;
          case 7:
              printf("星期天\n");
              break;
          default:
              printf("输入错误");
          }
          return 0;
      }

       switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。

      总结

      本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

      在线客服
      服务热线

      服务热线

      4008888355

      微信咨询
      二维码
      返回顶部
      ×二维码

      截屏,微信识别二维码

      打开微信

      微信号已复制,请打开微信添加咨询详情!