欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

switch语句(初学者)

程序员文章站 2022-06-21 13:17:14
C语言提供了另一种用于多分支选择的switch语句(常用于开关),一般形式为: switch ( 常量表达式 ) { case 常量1 :语句; case 常量2 :语句; case 常量3 :语句; ... case 常量n:语句; default :语句; } 语义:计算常量表达式的值,并逐个与 ......

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 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");
    }
}

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

正例:

#include<stdio.h>

void 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");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;
    }