循环语句(二)

本文介绍了switch语句的基本概念、一般形式及其执行流程。通过具体示例对比了使用与不使用break语句的区别,并总结了使用switch语句时需要注意的关键点。

引入

·实际生活中我们常需要用到多个分支的选择,如:学生成绩分类、人口统计分类、职称分类
·当问题分支较多时,使用if语句来实现将会使程序冗长且可读性低
·switch语句是多分支条件判断语句,它能够根据表达式的值从多个分支中选择一个执行的分支

switch语句

作用式根据表达式的值,使流程跳转到不同的语句

一般形式

switch(表达式)
{
case 常量表达式1:语句块1
case 常量表达式2:语句块2

case 常量表达式n:语句块n
default:语句块n+1
}

表达式可以是整数、字符、枚举类型

执行流程

1.首先计算表达式的值
2.与各个case后的常量表达式的值比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句
3.如表达式的值与所有case后的常量表达式均不相同,则执行default后的语句

举例

要求输入一个数字后,输出其对应的星期

浅层编译(以输入4为例)

代码演示:

int main()
{
  int a;
  printf("Input integer number:");
  scanf("%d",&a);
  switch(a)
  {
    case 1: printf("Monday\n");
    case 2: printf("Tuesday\n");
    case 3: printf("Wednesday\n");
    case 4: printf("Thursday\n");
    case 5: printf("Friday\n");
    case 6: printf("Saturday\n");
    case 7: printf("Sunday\n");
    default: printf("error\n");
  }
  return 0;
}

输出结果:

Input integer number:4
Thursday
Friday
Saturday
Sunday
error

并不符合我们的要求

拓展编译(break语句)

break语句:使程序执行跳出循环

代码演示:

int main()
{
  int a;
  printf("Input integer number:");
  scanf("%d",&a);
  switch(a)
  {
    case 1: printf("Monday\n");break;
    case 2: printf("Tuesday\n");break;
    case 3: printf("Wednesday\n");break;
    case 4: printf("Thursday\n");break;
    case 5: printf("Friday\n");break;
    case 6: printf("Saturday\n");break;
    case 7: printf("Sunday\n");break;
    default: printf("error\n");
  }
  return 0;
}

输出语句:

Input integer number:4
Thursday

拓展后一般形式

switch(表达式)
{
case 常量表达式1:语句块1;break;
case 常量表达式2:语句块2;break;

case 常量表达式n:语句块n;break;
default:语句块n+1
}

流程演示

E1
E2
En
default
switch
表达式
语句组1
语句组2
......
语句组n
语句组
结束语句

注意点

1.表达式的值为整数、字符、枚举类型
2.常量表达式的值必须互不相同,否则会出现分支矛盾的现象
3.case后面的常量表达式只起标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。一般情况下需用break语句跳出switch语句
4.语句块可以是一条语句,或是复合语句,可以不用花括号{}
5.各个case和default出现的先后次序,并不影响执行结果,习惯上将dafault子句放在switch的末尾
6.多个case标号可共用一组执行语句
例:

switch(表达式)
{
case 常量表达式1:
case 常量表达式2:
case 常量表达式3:语句1; break;
case 常量表达式4:语句2; break;

此时常量表达式1、2、3共用语句1

总结

简单总结switch语句知识点。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值