C语言入门篇(三)下

简介: C语言入门篇(三)下

2. switch语句


switch语句也是一种分支语句。

常常用于多分支的情况,在语法上不强调顺序。

语法结构:


switch (整型表达式)
{
  语句项;
}

什么是语句项?


//由一些case语句组成,如:
case 整型常量表达式:
  语句;

比如:

 输入1,输出星期一

 输入2,输出星期二

 输入3,输出星期三

 输入4,输出星期四

 输入5,输出星期五

 输入6,输出星期六

 输入7,输出星期日

用if语句表示如下:


#include<stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);
  if (1 == day)
    printf("星期1\n");
  else if (2 == day)
    printf("星期2\n");
  else if (3 == day)
    printf("星期3\n");
  else if (4 == day)
    printf("星期4\n");
  else if (5 == day)
    printf("星期5\n");
  else if (6 == day)
    printf("星期6\n");
  else if (7 == day)
    printf("星期天\n");
  else
    printf("输入错误\n");
  return 0;
}

switch语句表示:


#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;
}

如果用if…else if …else的形式表示就太复杂了,而switch语句在书写上就更简洁。


几种switch语句的书写方式:


switch(常量)
{
    case 常量1:
        printf(" ");
        break;
    case 常量2:
        printf(" ");
        break;
}
switch(常量)
{
    case 常量1:
    case 常量2:
        printf(" ");
        break;
    case 常量3:
        printf(" ");
}
witch(常量)
{
    defult:
        printf("输入错误");
        break
    case 常量1:
    case 常量2:
        printf(" ");
        break;
    case 常量3:
        printf(" ");
        break;        
}

2.1 在switch语句中的break

在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。

比如:


要求:输入1-5,输出的是"weekday"

  输入6-7,输出"weekend"


代码实现:


#include<stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);
  switch (day)
  {
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    printf("weekday\n");
    break;
  case 6:
  case 7:
    printf("weekend\n");
    break;
  default:
    printf("输入错误\n");
    break;
  }
  return 0;
}

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


switch语句书写时,最好在最后一个case语句的后面加上一条break语句。

(可以避免出现在以前的最后一个case语句后面忘了添加break语句)


2.2 default子句

如果表达的值与所有的case标签的值都不匹配怎么办?


其实也没什么,结果就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在C语言中并不认为这是个错误。


但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?


你可以在语句列表中增加一条default子句,把下面的标签

 defaut:

写在任何一个case标签可以出现的位置。

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


每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。


2.3 练习

看完上面的内容,你学会使用switch语句了吗?

来看看这段代码的结果是什么呢?


#include <stdio.h>
int main()
{
  int n = 1;
  int m = 2;
  switch (n)
  {
  case 1:
    m++;
  case 2:
    n++;
  case 3:
    switch (n)//switch允许嵌套使用
    {
    case 1:
      n++;
    case 2:
      m++;
      n++;
      break;
    }
  case 4:
    m++;
    break;
  default:
    break;
  }
  printf("m = %d, n = %d\n", m, n);
  return 0;
}

答案:

image.png


结束语


以上就是我对if语句和switch语句的分享,希望对你有所帮助。


相关文章
|
C语言
C语言入门篇(四)上
C语言入门篇(四)上
|
C语言
C语言入门篇(三)上
C语言入门篇(三)上
|
2月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
77 8
|
6月前
|
存储 数据可视化 C语言
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
【C语言】C语言 手机通讯录系统的设计 (源码+数据+论文)【独一无二】
|
自然语言处理 数据库连接
编译原理(五) 语言的定义
编译原理(五) 语言的定义
170 0
|
C语言
C语言入门篇(四)下
C语言入门篇(四)下
|
编译器 数据安全/隐私保护 C语言
C语言之三字棋
这个三字棋看似生活不起眼的小游戏,但是对于像我一样才开始接触C的人来说,实现起来也不是那样轻而易举。实现三字棋的过程,让我明白掌握代码并非最重要的,最重要的是,理清实现功能的逻辑,例如:实现这个游戏时,首先得了解游戏规则,其次需要一个棋盘......只要自己逻辑清晰,写代码也是水到渠成,还有一点,只要自己掌握逻辑,下次想再次实现这个功能或着分析已写的代码就不会犯怵了。最后我们要多善于整理总结,下次我们遇到类似的问题,就可以触类旁通了。
|
存储 程序员 C语言
[C语言学习]C语言程序设计基础(一)
[C语言学习]C语言程序设计基础(一)
252 0
[C语言学习]C语言程序设计基础(一)
|
C语言
[C语言学习]C语言程序设计基础(三)
[C语言学习]C语言程序设计基础(三)
174 0
[C语言学习]C语言程序设计基础(三)
|
Linux C语言 iOS开发
[C语言学习]C语言程序设计基础(二)
[C语言学习]C语言程序设计基础(二)
188 0
[C语言学习]C语言程序设计基础(二)