逍遥自在学C语言 | 条件控制的正确使用姿势

打印 上一主题 下一主题

主题 904|帖子 904|积分 2712

前言

在C语言中,有三种条件判断结构:if语句、if-else语句和switch语句。

一、人物简介


  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。


  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

二、if语句


  • 基本语法
  1. if (条件) {
  2.     // 代码块1
  3. }
复制代码

  • 代码示例
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   int num = 5;
  5.   if (num > 0) {
  6.     printf("这个数为正数.\n");
  7.   }
  8.   return 0;
  9. }
复制代码

  • 运行结果

三、if-else语句


  • 基本语法
  1. if (条件) {
  2.     // 代码块1
  3. } else {    // 代码块2}
复制代码

  • 代码示例
  1. #include <stdio.h>
  2. int main()
  3. {
  4.   int num = -2;
  5.   if (num > 0) {
  6.     printf("这个数为正数.\n");
  7.   } else {
  8.     printf("这个数为负数.\n");
  9.   }
  10.   return 0;
  11. }
复制代码

  • 运行结果

if语句嵌套使用


  • 代码示例
  1. #include <stdio.h>
  2. int main() {
  3.     int num = 3;
  4.     if (num > 0) {
  5.         if (num < 5) {
  6.             printf("num在1到4之间\n");
  7.         } else {
  8.             printf("num大于等于5\n");
  9.         }
  10.     } else {
  11.         printf("num小于等于0\n");
  12.     }
  13.     return 0;
  14. }
复制代码
在这个示例中,外层的if语句判断num是否大于0,如果成立,进入内层的if语句继续判断num是否小于5;
如果不成立,执行else语句块,输出"num小于等于0"。
num的值是3,它既符合外层if语句的条件,也符合内层if语句的条件,所以程序输出"num在1到4之间"。

  • 运行结果

if else语句的链式使用


  • 代码示例
  1. #include <stdio.h>
  2. int main() {
  3.     int score = 85;
  4.     if (score >= 90) {
  5.         printf("优秀\n");
  6.     } else if (score >= 80) {
  7.         printf("良好\n");
  8.     } else if (score >= 70) {
  9.         printf("中等\n");
  10.     } else if (score >= 60) {
  11.         printf("及格\n");
  12.     } else {
  13.         printf("不及格\n");
  14.     }
  15.     return 0;
  16. }
复制代码
在这个示例中,if else语句被链式使用,程序从上到下依次判断score的值是否大于等于90、是否大于等于80、是否大于等于70、是否大于等于60,最终输出对应的成绩等级。
score的值是85,它大于等于80,但小于90,所以程序输出"良好"。

  • 运行结果

四、switch语句


  • 基本语法
  1. switch (expression) {
  2.     case constant1:
  3.         statement1;
  4.         break;
  5.     case constant2:
  6.         statement2;
  7.         break;
  8.     ...
  9.     default:
  10.         statementN;
  11.         break;
  12. }
复制代码

  • switch语句的执行过程如下:

  • 表达式的值被计算。
  • 表达式的值被依次与各个case后的常量进行比较,直到找到与之匹配的常量。
  • 如果找到匹配的常量,执行该常量对应的代码块,并跳出switch语句。
  • 如果没有找到匹配的常量,执行default对应的代码块(如果有),并跳出switch语句。
switch语句中的case标签可以是整数、字符或枚举常量。
每个case标签必须是唯一的,且必须以冒号(:)结尾。
在case后面的代码块中可以包含任意数量的语句,用花括号({})来组成代码块。
switch语句的default标签是可选的,它通常放在case标签的最后面。如果没有匹配到任何case标签,那么default标签下的代码块将被执行。
default标签只能出现一次,且必须放在最后一个case标签之后,否则会引发编译错误。
switch基础用法


  • 下面是一个简单的switch语句示例,用于根据输入的数字输出对应的星期几:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int day;
  5.     printf("请输入数字(1-7):");
  6.     scanf("%d", &day);
  7.     switch (day) {
  8.         case 1:
  9.             printf("星期一\n");
  10.             break;
  11.         case 2:
  12.             printf("星期二\n");
  13.             break;
  14.         case 3:
  15.             printf("星期三\n");
  16.             break;
  17.         case 4:
  18.             printf("星期四\n");
  19.             break;
  20.         case 5:
  21.             printf("星期五\n");
  22.             break;
  23.         case 6:
  24.             printf("星期六\n");
  25.             break;
  26.         case 7:
  27.             printf("星期日\n");
  28.             break;
  29.         default:
  30.             printf("输入错误!\n");
  31.             break;
  32.     }
  33.     return 0;
  34. }
复制代码

  • 运行结果

switch高级用法

除了基本用法外,switch语句还有一些高级用法,可以更灵活地使用。
1、case标签穿透

在switch语句中,如果没有在一个case语句块中使用break语句,那么程序会从这个case开始,一直执行到switch语句的结尾,这种现象被称为case标签穿透。

  • 下面是一个case标签穿透的示例:
  1. #include <stdio.h>
  2. int main() {
  3.     int num = 3;
  4.     switch (num) {
  5.         case 1:
  6.         case 2:
  7.             printf("num是1或2\n");
  8.             break;
  9.         case 3:
  10.         case 4:
  11.             printf("num是3或4\n");
  12.             break;
  13.         default:
  14.             printf("num不是1、2、3、4\n");
  15.             break;
  16.     }
  17.     return 0;
  18. }
复制代码
在这个示例中,num的值是3,它既符合case 3的条件,也符合case 4的条件,但是由于case 3的语句块中使用了break语句,所以程序执行完case 3之后就跳出了switch语句,不会继续执行case 4的语句块。

  • 运行结果

2、switch语句嵌套


  • 在C语言中,switch语句可以嵌套使用,例如:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int num = 1;
  5.     switch (num) {
  6.         case 1:
  7.             printf("num是1\n");
  8.             switch (num) {
  9.                 case 2:
  10.                     printf("num是2\n");
  11.                     break;
  12.                 default:
  13.                     printf("num不是2\n");
  14.                     break;
  15.             }
  16.             break;
  17.         case 3:
  18.             printf("num是3\n");
  19.             break;
  20.         default:
  21.             printf("num既不是1也不是3\n");
  22.             break;
  23.     }
  24.     return 0;
  25. }
复制代码
在这个示例中,switch语句被嵌套使用,内层的switch语句只有在外层的case 1被匹配时才会执行。

  • 运行结果

小结

通过这篇文章,我们学会了
1、if语句
2、if-else语句
3、switch语句
<blockquote>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表