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语言入门篇(三)上
|
C语言
C语言入门篇(四)下
C语言入门篇(四)下
|
Rust 算法 安全
【RUST学习日记】第5课 变量和常量
【RUST学习日记】第5课 变量和常量
|
存储 程序员 编译器
程序环境和预处理 C语言入门到入土(进阶篇)(一)
程序环境和预处理 C语言入门到入土(进阶篇)(一)
程序环境和预处理 C语言入门到入土(进阶篇)(一)
|
编译器 Linux C语言
程序环境和预处理 C语言入门到入土(进阶篇)(二)
程序环境和预处理 C语言入门到入土(进阶篇)(二)
程序环境和预处理 C语言入门到入土(进阶篇)(二)
|
C语言 C++
《C语言深度剖析》第二章 符号详解 p1 C语言从入门到入土(进阶篇)(一)
本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为了避免与之前的文章发生赘述,所以就直接讲作者认为的精华部分哈!现在正文开始!
《C语言深度剖析》第二章 符号详解 p1 C语言从入门到入土(进阶篇)(一)
|
Linux C语言 C++
《C语言深度剖析》第二章 符号详解 p1 C语言从入门到入土(进阶篇)(二)
本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为了避免与之前的文章发生赘述,所以就直接讲作者认为的精华部分哈!现在正文开始!
《C语言深度剖析》第二章 符号详解 p1 C语言从入门到入土(进阶篇)(二)
|
程序员 C语言
(函数p1) C语言从入门到入土(入门篇)(一)
1. 函数是什么? 2. C语言中函数的分类: 2.1 库函数: 2.1.1 如何学会使用库函数? 2.2 自定义函数 3. 函数的参数 3.1 实际参数(实参): 3.2 形式参数(形参): 4. 函数的调用: 4.1 传值调用 4.2 传址调用 4.3 练习
(函数p1) C语言从入门到入土(入门篇)(一)
|
编译器 C语言
(函数p2) C语言从入门到入土(入门篇)(一)
5. 函数的嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 6. 函数的声明和定义 6.1 函数声明: 6.2 函数定义: 7. 函数递归 7.1 什么是递归? 7.2 递归的两个必要条件 7.2.1 练习1: 7.2.2 练习2: 7.3 递归与迭代 7.3.1 练习3: 7.3.2 练习4:
(函数p2) C语言从入门到入土(入门篇)(一)