加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言switch结构

(2017-07-22 13:16:44)
分类: 教育教学
switch语句

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

C语言switch结构

 
 
当用某个变量或表达式单独测试每一个可能的整常量时,使用switch开关语句处理多分支选择结构,可以简化程序的结构。 

语句格式: switch (表达式)
                          {
                               case 常量标号1:语句序列1;
                                        break;
                               case 常量标号2:语句序列2;
                                        break;
                               
                               case 常量标号n:语句序列n;
                                        break;
                               default: 语句S;
                          }

其中:switch、case、default均为C的关键字;表达式必须基于同一个整型变量,用以控制程序的执行过程;常量标号i(i=1,2,…,n),其类型应与表达式类型相同,根据表达式计算结果,在常量标号中查找,标号具有唯一性;语句序列允许由一条语句或多条语句组成,但不需要复合语句形式;break作为中断语句,在完成case分支规定的操作后直接跳出switch结构;default用于处理switch结构的条件非正常操作。switch执行过程如图4所示。


switch语句的执行过程:

Step1:计算表达式的值。

Step2:将计算结果值依次与每一个case的常量标号进行比较。如果与某个case标号相等,执行该case标号后的语句序列;语句序列中如有break语句,则退出switch结构,整个switch多分支选择结构处理结束。如果没有break语句,则无条件执行下一条case语句(此时不需要对下一个case标号进行判断);

Step3:如果没有找到与计算结果值匹配的标号,则检查是否存在default标号,若有,则执行default后的语句,并结束switch语句的执行。若没有,则直接结束switch语句的执行。



菜单结构

#include   "stdio.h"
#include   "stolib.h"
 int main  (void)
{
     int    order = -1    
     scanf   (" %d "  ,  &  order   )   ;     
     if   (  1 == order  
     {
     printf   (" 添加一个学生  \n"   )  
     }
     else if   (  2 == order  
     {
     printf   (" 删除一个学生  \n"   )  
     }
     else if   (  3 == order  
     {
     printf   (" 浏览学生信息  \n"   )  
     }
     else if   (  4 == order  
     {
     printf   (" 退出系统  \n"   )  
     }
     else
     {
     printf   (" 系统无该指令  \n"   )  
     }

system (pause) ;

return 0 ;
}

switch结构

#include   "stdio.h"
#include   "stolib.h"
 int main  (void)
{
     int    order =  1    
     scanf   (" %d "  ,  &  order   )   ;  

switch  (  order  )
{
case  1 :  
     printf   (" 添加一个学生  \n"   )  
     break
case  2 :  
     printf   (" 删除一个学生  \n"   )  
     break
case  3 :  
     printf   (" 浏览学生信息  \n"   )  
     break
case  4 :  
     printf   (" 退出系统  \n"   )  
     break
default :  
     printf   (" 系统无该指令  \n"   )  
     break
}

system (pause) ;

return 0 ;
}

执行过程:
发现有匹配的值,就进入标签执行。
没有发现有匹配的值,就进入缺省执行。

 int    order =  1    
switch  (  order  )
{
case  1 :  
     printf   (" 添加一个学生  \n"   )  
     break
case  2 :  
     printf   (" 删除一个学生  \n"   )  
     break

匹配1
屏幕上会显示:
添加一个学生
删除一个学生

 int    order =  1    
switch  (  order  )
{
case  1 :  
     printf   (" 添加一个学生  \n"   )  
     break
case  2 :  
     printf   (" 删除一个学生  \n"   )  
     break

匹配2
屏幕上会显示:
删除一个学生
而不会显示:
添加一个学生
因为指令从匹配2 开始,不管指令1有没有 break,不管指令1  写些什么内容,它都会略过指令1 。

int    order =  2    
switch  (  order  )
{
case  1 :  
     printf   (" 添加一个学生  \n"   )  
case  2 :  
     printf   (" 删除一个学生  \n"   )  
case  3 :  
     printf   (" 浏览学生信息  \n"   )  
case  4 :  
     printf   (" 退出系统  \n"   )  
default :  
     printf   (" 系统无该指令  \n"   )  

如果标签都没有break,则:当

匹配2时
屏幕上会显示:
删除一个学生
浏览学生信息
退出系统
系统无该指令

而不会显示:
添加一个学生
因为指令从匹配2 开始,不管指令1有没有 break,不管指令1  写些什么内容,它都会略过指令1 。    

在循环结构中,如果碰到switch结构的break时,break是跳出switch。而不是跳出循环。
switch结构中的 order  必需是一个整形表达式,也就是说其结果必需是一个整数。不能是浮点型。
而else if  可以是浮点数。

     int    order =  2     ;

switch  (  order  > 1  &&  order <  5  )
{
case  1 :  
     printf   (" 添加一个学生  \n"   )  
     break
case  2 :  
     printf   (" 删除一个学生  \n"   )  
     break
case  3 :  
     printf   (" 浏览学生信息  \n"   )  
     break
case  4 :  
     printf   (" 退出系统  \n"   )  
     break
default :  
     printf   (" 系统无该指令  \n"   )  
     break

屏幕上只会显示:
添加一个学生

order  > 1  &&  order <  
   2     >  1 &&    2      <  5
           1    &&    1
                  1
因此执行标签1  的指令。


传递一个具体的值 用  switch
表示一个范围的值 用   if

case  1   必需是整形常量表达式  case  2 + 3  ,不能是  a  + 3  

浮点型 不能  表示  相等,因为浮点型不是一个精确的值

case 后要有空格  要加冒号。

当case 包含很多  代码时 要加上花括号。
case   1 :
     {
      int  a  =  21  ;
      printf   (" 删除一个学生  \n"  ,  a   )  
      }

如果switch当标签重复时,就会报错
如果if else 当标签重复时,允许条件都一样

drfault 可以不写

总之:
if  else  适合用于  复杂条件,浮点数比较,复合表达式(与或非),用switch就不方便。

灵活性
有无break,switch执行更灵活多变。

用switch  表示范围

int    order =  63    
switch  (  order  )
{
    case  60 :  
    case  61 :  
    case  62 :  
    case  63 :  
    case  64 :  
    case  65 :  
    case  66 :  
    case  67 :  
    case  68 :  
    case  69 :  
        printf   (" 及格  \n"   )  
        break
    case  70 :  
        break
}


C语言switch结构

C语言switch结构


C语言switch结构

C语言switch结构


1、switch语法

Switch(char/int){

       case 1:

          //语句

       break;

       case 2:

         //语句2

       break;

       default:

          //默认语句

       break;

     }

2、switch的注意点

01.小括号中表达式只能取两种类型:intchar

02.case分支的值不能相同

03.casebreak必须成对出现

 04.default的位置不影响运行结果

 05case中没有配置项时,才执行default块的内容

例如:

C语言switch结构

 

3、switch语句的执行步骤

1*计算switch后面的表达式的值

2*将计算结果从上至下一次与case后的常量值比较

3*如果相等就执行该常量后的代码块,遇到break语句就结束

4*如果与任何一个case后的常量值都不匹配,就执行default中的语句

4、switch与if的异同

C语言switch结构


if语句

C语言选择判断的if语句与ifelse语…

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有