c switch的问题
首先你应该知道这个switch语句的机构是怎么样的吧你问的问题,简单的说就是这样理解 这个语句就是根据switch括号中的数的值(当然由它前面的程序,它应该已经有某个确定的数值)确定到底执行这些选择中的哪一个如果还是看不懂,下面是我们上课是的教案,你参考一下4。 3 switch语句switch语句又称为开关语句,从多种供选择的情况中选择满足条件的一种情况执行的简便而又直观的多分支结构。 if语句是二分支结构,如果要表达两种以上的选择要用嵌套的if 语句。 例如计算: y = 3x 5 1=1)if (x else if (xelse if (xelse ...全部
首先你应该知道这个switch语句的机构是怎么样的吧你问的问题,简单的说就是这样理解 这个语句就是根据switch括号中的数的值(当然由它前面的程序,它应该已经有某个确定的数值)确定到底执行这些选择中的哪一个如果还是看不懂,下面是我们上课是的教案,你参考一下4。
3 switch语句switch语句又称为开关语句,从多种供选择的情况中选择满足条件的一种情况执行的简便而又直观的多分支结构。 if语句是二分支结构,如果要表达两种以上的选择要用嵌套的if 语句。
例如计算: y = 3x 5 1=1)if (x else if (xelse if (xelse if(x如用switch语句实现上述功能:switch((int) x){ case 1: y=3*x 5; break; case 2: y=2*sin(x)-1; break;case 3: y=sqrt(1 x*x); break;case 4: y=x*x-2*x 5; break;}switch语句的一般形式为:switch(表达式){ case 常量表达式1: 语句序列1; case 常量表达式2: 语句序列2; ……case 常量表达式n: 语句序列n;default:语句序列;}说明:(1)switch、case、default是关键字,switch是语句标志,case和default只能在switch中使用。
(2)表达式是选择条件,表达式的值必须为整型、字符型或枚举型,且表达式必须用()括起来。{}括起来的部分是语句体,{}不能省,switch的语句体由多个case和至多一个(可以没有)default组成。
(3)case后面的常量表达式是值为常数的表达式,通常为常量或符号常量。类型必须和选择条件的类型相同;(4)同一switch语句中的所有case常量值必须互不相同。(5)每个case(称为一种情况)下可以有零或多个语句,有多个语句时可以不加{}。
(6)switch执行时,先计算作为选择条件的表达式,并将表达式的值依次和case后面的常量比较,当与某个case的常量值相等时,则执行case后面的语句。若表达式的值与各case的常量值都不相等,在有default的情况下,则执行default后面的语句;否则,不执行switch中的任何语句,此时,switch等价于一个空语句。
注意:switch语句一旦发现表达式的值与某个case的常量值相等,则从该case后面的第一个语句开始依次执行,执行完这个case的语句之后,自动进入下一个case继续执行,直到switch语句体中的最后一个语句被执行为止。
如果希望执行完一种情况的语句后便跳出switch语句,则要利用break语句或return语句。break跳出switch语句之后继续执行switch语句后面的语句(如果有),return则立即返回到函数调用处。
例3.从终端输入两个实数,和一个四则运算符(+、-、*、/)执行相应的运算并输出运算结果。#include “stdio。h”void main(void){ double x,y,result;char op;int flag;printf(“input x,y,op:
”);scanf(“%lf%lf%c”,&x,&y,&op);flag=1;switch(op){ case ‘ ’:result=x y;break;case ‘-’:result=x-y;break;case ‘*’:result=x*y;break;case ‘/’:if (y) result=x/y;else flag=0;break; default:falg=0;}if (flag) printf(“reslt=%f
”,result);else printf(“invalid input y or op
”);}例4:输入某年某月,输出该月的天数。
分析:年year为闰年的条件是:(!(year % 4) &&( year0))||!(year @0)为非0,否则year为平年。#include “stdio。h”main(){ int year ,month,days,flat;printf(“input year,month”
”);scanf(“%d%d”,&year,&month);flag=1;switch(month){case 1: case 3: case 5: case 7: case 8:case 10:case 12:days=31;break;case 4:case 6:case 9:case 11:day=30;break;case 2: if((!(year % 4) && (year0))||!(year @0)) day=29;else days=28; break;default: flag=0;}if (flag) printf(“days=%d
”,days);else printf(“invalid input month
”);}输入:1995 2输出:days=28注意:switch语句允许多情况执行相同的语句,但在语法上与PASCAL有不同之处。
例如4、6、9和11月均执行 days=30;可以写成:case 4: case 6: case 9: case 11:days=30;但不能写成:case 4,6,9,11:days=30;也不能写成:case 4, case 6, case 9,case 11:days=30;。
收起