开关语句

原文地址:开关语句 作者:HelloWord

8.2.1 开关语句

(2006-10-22 07:19:42)
[转载]开关语句转载

    1.3.3 开关语句
    在编写程序时, 经常会碰到按不同情况分转的多路问题,  这时可用嵌套if
-else-fi语句来实现, 但if-else-if语句使用不方便, 并且容易出错。对这种情
况, Turbo C2.0提供了一个开关语句。开关语句格式为:
          switch(变量)
          {
               case 常量1:
                    语句1或空;
               case 常量2:
                    语句2或空;
                    .
                    .
                    .
               case 常量n;
                    语句n或空;
               default:
                    语句n+1或空;
          }
    执行switch开关语句时, 将变量逐个与case后的常量进行比较, 若与其中一
个相等, 则执行该常量下的语句, 若不与任何一个常量相等, 则执行default 后
面的语句。
    注意:
    1. switch中变量可以是数值, 也可以是字符。
    2. 可以省略一些case和default。
    3. 每个case或default后的语句可以是语句体, 但不需要使用"{"和"}"括起
来。
    下例的switch中变量为整数型。
    例19:
     main()
     {
          int test;
          for(test=0; test<=10; test++)
          {
               switch(test)  
               {
                    case 1:
                         printf("%dn", test);
                         break;   
                    case 2:
                         printf("%dn", test);
                         break;
                    case 3:
                         printf("%dn", test);
                         break;
                    default:
                         puts("Error");
                         break;
               }
          }
     }
    下例的switch中变量为字符型。
    例20:
     #include<stdio.h>
     main()
     {
          char c;
          while(c!=27)                 
          {
               c=getch();              
               switch(c)
               {
                    case 'A':          
                         putchar(c);
                         break;        
                    case 'B':
                         putchar(c);
                         break;
                    default:           
                         puts("Error");
                         break;
               }
          }
     }
 
 

    1.3.4 break、continue和goto语句

    1.3.4.1 break语句
    break语句通常用在循环语句和开关语句中。当break用于开关语句switch中
时, 可使程序跳出switch而执行switch以后的语句; 如果没有break语句,  则将
成为一个死循环而无法退出。break在switch 中的用法已在前面介绍开关语句时
的例子中碰到, 这里不再举例。
    当break语句用于do-while、for、while循环语句中时,  可使程序终止循环
而执行循环后面的语句, 通常break语句总是与if语句联在一起。即满足条件时
便跳出循环。
    例19:
     main()
     {
          int i=0;
          char c;
          while(1)                
          {
               c='';            
               while(c!=13&&c!=27)
               {
                    c=getch();
                    printf("%cn", c);
               }
               if(c==27)
                    break;         
               i++;
               printf("The No. is %dn", i);
          }
          printf("The end");
     }
    注意:
    1. break语句对if-else的条件语句不起作用。
    2. 在多层循环中, 一个break语句只向外跳一层。

    1.3.4.2 continue 语句
    continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。
    continue语句只用在for、while、do-while等循环体中, 常与if条件语句一
起使用, 用来加速循环。
    例20:
     main()
     {
          char c;
          while(c!=0X0D)     
          {
               c=getch();
               if(c==0X1B)
                    continue;
               printf("%cn", c);
          }
     }

    1.3.4.3 goto 语句
    goto语句是一种无条件转移语句, 与BASIC中的goto语句相似。goto 语句的
使用格式为:
    goto  标号;
    其中标号是Turbo C2.0中一个有效的标识符, 这个标识符加上一个":" 一起
出现在函数内某处, 执行goto语句后, 程序将跳转到该标号处并执行其后的语句。
另外标号必须与goto语句同处于一个函数中,  但可以不在一个循环层中。 通常
goto语句与if条件语句连用, 当满足某一条件时, 程序跳到标号处运行。
    goto语句通常不用, 主要因为它将使程序层次不清, 且不易读, 但在多层嵌
套退出时, 用goto语句则比较合理。
    例19用goto语句时变为:
    例21:
     main()
     {
          int i=0;
          char c;
          while(1)
          {
               c='';
               while(c!=13)
               {
                    c=getch();
                    if(c==27)
                      goto quit;
                    printf("%cn", c);
               }
               i++;
               printf("The No. is %dn", i);
          }
          quit:
               printf("The end");

     }

 

 

 

 

 

 

 

3.2.2 开关语句

开关语句的一般的形式是:
switch (<表达式>) {
case <常量表达式1>:<语句序列1>;break;
case <常量表达式2>:<语句序列2>;break;
...
case <常量表达式n>:<语句序列n>;break;
default :<语句序列n+1>;
}
开关语句也称switch语句,是进行多次判断选择,执行常量表达式为真的语句。

比如:一个产品由高到低分为m、p、q共3个等级,其价格分别为:1500元、1000元、500元。根据等级输出相应的产品的价格。
switch (grade){
case 'm': cout<< "1500";break;
case 'p':cout<< "1000"; break;
case 'q':cout<< "500"; break;
defaut :cout<< "没有这个等级";
}
最后一个default语句当常量表达式全假时执行,意思是输入的不是合法的产品等级。
switch语句应该注意以下几点:
① 虽然括号内的表达式可以是任意类型,但最好使用整型、字符型和枚举型的表达式。
② 各常量表达式的值必须不相同,否则不知该执行哪条语句,各常量值出现的次序并不影响执行结果。
③ 每个case 的后面可跟若干条语句,且不必用{ }括起来,因为每个case 是入口的标志,一旦进入某个入口,则一直会被执行下去,并非遇到下一个case就终止。这样,若干个case可以共享语句。为了让每个case 后的语句执行完后终止switch 语句的执行,必须在每个case后的若干条语句的最后加break,break语句的作用就是跳出switch 语句。

【例3.5】根据输入的整数x的值,求函数Y的值:
[转载]开关语句
提示:使用整除运算符。例3.5源程序

#include <iostream.h>   
void main()
{
  int x,y;
  cout<<"x=";cin>>x;
  switch(x/100)
  {
    case 0:y=x+1;break;
    case 1:y=x-1;break; 
    default:y=0;
  }
  cout<<"x="<<x<<" y="<<y<<endl;
}

【例3.6】将月份的阿拉伯数字转换成对应月份的英文单词。

练习3.2:输入分数,输出对应的等级(如输入87,则应输出“良好”),要求使用条件语句和开关语句分别实现。练习3.2源程序

#include <iostream.h>
void main()
{
        int score;
        cout<<"请输入分数:";
        cin>>score;
        switch (score/10)
        {
        case 0: 
        case 1: 
        case 2:
        case 3: 
        case 4:
        case 5:cout<<"不及格";break;
        case 6:cout<<"及格";break;
        case 7:cout<<"中等";break;
        case 8:cout<<"良好";break;
        case 9:
        case 10:cout<<"优秀";break;
        default:cout<<"分数错误";
        }//分数在101~109和-9~-1之间如何识别?
        cout<<endl;
}

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值