switch语句

*

switch语句的语法结构如图,括号内的控制表达式必须是整数类型

 switch语句  ----switch-----(--------表达式-------)---------语句--------------

使用switch语句修改后的程序代码如下:

/*
    显示所输入的整数除以3 的余数
*/

#include <stdio.h>

int main(void)
{
    int no;
    
    printf("请输入一个整数:");
    scanf("%d",&no);
    
    switch(no % 3){
        case 0 : puts("该数能被3整除。");            break;
        case 1 : puts("该数除以3的余数是1。");        break;
        case 2 : puts("该数除以3的余数是2。");        break;     
    }
    
    return 0;
 } 

如果 no % 3 的值为1,则程序会转向  "case 1 : "

 

"case 1 : " 这样用来表示程序跳转的标识称为标签(label)。

PS:1和 :之间有没有空格都可以。但是case和1之间必须有空格,不可不加空格写成case1。

标签的值必须为常量,不可为变量。另外,不允许多个标签同为一个值。程序跳到该标签会按顺序执行其后的语句,因此画面中会显示”该数除以3的余数是1。“。

当程序执行到break语句时,switch语句执行结束。如下:

break语句:  ------break-------;----------

 


 

复杂的switch语句  

 

/*
     确认switch语句动作的程序
*/
#include <stdio.h> 

int main(void)
{
    int sw;
    
    printf("整数:");
    scanf("%d",&sw);
    
    switch (sw){
        case 1  :    puts("A");        puts("B");        break;
        case 2  :    puts("C");
        case 5  :    puts("D");        break;
        case 6  :    
        case 7  :    puts("E");        break;
        default :    puts("F");        break; 
    }
    
    return 0;
}

 

当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到 ”default :“  继续执行。

没有break的时候,程序会移到下一条语句上。

如果改变程序switch语句中标签的顺序,程序的执行结果也会发生改变,所以在使用switch语句的时候,一定要正确书写标签的顺序。

 

如下所示为根据变量sw的值改变颜色名称的switch语句。如果sw的值为4,使其显示”黑色“。为此,仅添加”case 4 : printf("黑色“);"是不够的。因为必须在”case 3 :“

 

 的末尾加上break语句。

switch(sw) {
        case 1 : puts("红色");        break;
        case 2 : puts("蓝色");        break;     
        case 3 : puts("白色");        
        
    }
  • 如果在每一个case的末尾也加上break语句的话,就可以灵活应对case的增加或删除了。
  • 根据某一整数类型的单一表达式的值,需要将程序分为多个分支的时候,可以使用switch语句。根据判断结果,程序会跳转到(整数类型的常量指定的)相应的标签处。如果没有相应的标签,程序则会跳转到default处。
  • 在switch语句中,break语句执行后,switch语句便执行结束。如果没有break语句,程序将落到下一条语句上。

 

posted @ 2019-08-30 19:37  禅主  阅读(462)  评论(0编辑  收藏  举报