C语言提供了另一种用于多分支选择的switch语句(常用于开关),一般形式为:

switch ( 常量表达式 )
{
case 常量1 :语句;
case 常量2 :语句;
case 常量3 :语句;
...
case 常量n:语句;
default :语句;
}
语义:计算常量表达式的值,并逐个与其后的常量值相比较,当表达式的值与某个常量值相等时,即执行其后语句,然后不再进行判断,继续执行后面所有case后的语句。若表达式的值与所有case后的常量值均不同时,则执行default语句。
错例:

#include<stdio.h>

void main()
{
int a;
printf("input integer number:");
scanf("%d",&a);
switch(a)
{
case :printf("Monday\n");
case :printf("Tuesday\n");
case :printf("Wednesday\n");
case :printf("Thursday\n");
case :printf("Friday\n");
case :printf("Saturday\n");
case :printf("Sunday\n");
default:printf("error\n");
}
}

为避免上述输出时出现的情况,C语言提供了一种break语句,专用于跳出switch语句,break语句只有关键字break,没有参数。

正例:

#include<stdio.h>

void main()
{
int a;
printf("input integer number:");
scanf("%d",&a);
switch(a)
{
case :printf("Monday\n");break;
case :printf("Tuesday\n");break;
case :printf("Wednesday\n");break;
case :printf("Thursday\n");break;
case :printf("Friday\n");break;
case :printf("Saturday\n");break;
case :printf("Sunday\n");break;
default:printf("error\n");break;
}
}

注意:(1)在case后的各常量表达式的值不能相同,否则会出现错误。

(2)在case后允许有多个语句,可以不用{}括起来。

(3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。

(4)default子句可以省略不用。

(5)只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。

(6)switch()的参数类型不能为实型 。
(7)case标签必须是常量表达式(constantExpression),如42或者"42"。
例:

#include<stdio.h>
int main()
{
char rank;
printf("请输入分数等级:(A、B、C、D、E)\n");
scanf("%c",&rank);
switch(rank)
{
case'A':printf("A(90~100)\n");break;
case'B':printf("B(80~89)\n");break;
case'C':printf("C(70~79)\n");break;
case'D':printf("D(60~69)\n");break;
case'E':printf("E(0~59)\n");break;
default:printf("error!\n");break;
}
 

switch语句(初学者)的更多相关文章

  1. 选择结构-穿透的switch语句和循环结构-循环概述

     case的穿透性 在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运 行,直到遇到break,或者整体switch结束 publi ...

  2. switch语句的妙用

    switch语句的普通用法很简单,如下: var a = 3; switch (a) { case 1: console.log(a); break; case 2: case 3: console. ...

  3. 106运用SWITCH语句打印星期几的单词

    package com.chongrui.test;/*运用SWITCH语句打印星期几的单词 * */ public class TypeConvertion { public static void ...

  4. 通过goto语句学习if...else、switch语句并简单优化

    goto语句在C语言中实现的就是无条件跳转,第二章一上来就介绍goto语句就是要通过goto语句来更加清楚直观的了解控制结构. 我理解的goto语句其实跟switch语句有相似之处,都是进行跳转.不同 ...

  5. Java中简单的操作(if语句、常用操作符、switch语句、变量赋值等)

    ---------------------if语句介绍--------------------------------------------------- class IfDemo { public ...

  6. Switch语句的case穿透

    Switch语句的case穿透 一 switch语句几点说明: 1. case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的. 2.case后面表达式可以接受: 基本数据类型,b ...

  7. ECMA中的switch语句

    switch借鉴自其他语言,但也有自己的特色. 1.可以在switch语句中使用任何数据类型(数值.字符串.对象等),很多其他语言中只能使用数值. 2.每个case的值不一定是常量,可以是变量或者表达 ...

  8. switch语句下的变量声明和定义

    switch语句下的变量声明和定义的问题: switch...case...语句中存在声明和定义会出现一些问题.这个由switch语法特性决定的, switch中每个case都是平等的层次,区别于一般 ...

  9. 透过IL看C#:switch语句(转)

    透过IL看C# switch语句(上) 摘要: switch语句是 C#中常用的跳转语句,可以根据一个参数的不同取值执行不同的代码.本文介绍了当向 switch语句中传入不同类型的参数时,编译器为其生 ...

随机推荐

  1. 第一篇:SpringBoot2.0简单介绍

    距离Spring Boot1.0发布已经4年了,今年3月份SpringBoot2.0正式发布.让我们一起来了解一下它. Spring Boot主要依赖于Spring,整合了很多框架的使用方式,帮助开发 ...

  2. window下安装绿色版5.7

    1. 在mysql的安装目录下创建my.ini,并配置必要参数. 2. 执行命令mysqld --initialize-insecure --basedir=/opt/mysql/mysql  --d ...

  3. Java并发编程笔记之Timer源码分析

    timer在JDK里面,是很早的一个API了.具有延时的,并具有周期性的任务,在newScheduledThreadPool出来之前我们一般会用Timer和TimerTask来做,但是Timer存在一 ...

  4. 深入理解L1、L2正则化

    过节福利,我们来深入理解下L1与L2正则化. 1 正则化的概念 正则化(Regularization) 是机器学习中对原始损失函数引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称.也就是 ...

  5. 常见注入手法第四讲,SetWindowsHookEx全局钩子注入.以及注入QQ32位实战.

    常见注入手法第四讲,SetWindowsHookEx全局钩子注入.以及注入QQ32位实战. PS:上面是操作.最后是原理 一丶需要了解的API 使用全局钩子注入.我们需要了解几个WindowsAPI. ...

  6. Java 容器源码分析之ArrayBlockingQueue和LinkedBlockingQueue

    Java中的阻塞队列接口BlockingQueue继承自Queue接口. BlockingQueue接口提供了3个添加元素方法. add:添加元素到队列里,添加成功返回true,由于容量满了添加失败会 ...

  7. 升级mac Mojave系统,git无法使用

    升级mac Mojave系统后 无法使用git,出现如下问题 xcrun: error: invalid active developer path (/Library/Developer/Comma ...

  8. filezilla通过root账户远程连接管理ubuntu server服务器文件

    前言: 准备重温一下今天在工作中遇见的一个问题,在刚刚安装上的server上测试,做好的文件不是很好传到server项目目录,于是使用了filezilla这个工具,它可以使用ssh来连接,于是乎就引入 ...

  9. ELK(elasticsearch+kibana+logstash)搜索引擎(二): elasticsearch基础教程

    1.elasticsearch的结构 首先elasticsearch目前的结构为 /index/type/id  id对应的就是存储的文档ID,elasticsearch一般将数据以JSON格式存储. ...

  10. [Noip2015PJ] 求和

    Description 一条狭长的纸带被均匀划分出了 \(n\) 个格子,格子编号从 \(1\) 到 \(n\) .每个格子上都染了一种颜色 \(color_i\) 用 \([1,m]\) 当中的一个 ...