分类:
2007-09-06 20:36:51
通过前面的讨论我们知道,if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.因此,C语言又提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句.使用switch语句直接处理多个分支(当然包括两个分支).其一般形式为:
引用
switch(表达式) { case 常量表达式1: 语句1; break; case 常量表达式2: 语句2; break;
…… default: |
引用
switch(grade) { case 'A': /*注意,这里是冒号:并不是分号;*/ printf("85-100\n"); break; /*每一个case语句后都要跟一个break用来退出switch语句*/ case 'B': /*每一个case后的常量表达式必须是不同的值以保证分支的唯一性*/ printf("70-84\n"); break; case 'C': printf("60-69\n"); break; case 'D': printf("<60\n"); break; default: printf("error!\n"); } |
引用
{ case 'A': if(grade<=100) printf("85-100\n"); else printf("error\n"); break; …… |
(4) 在switch-case语句中,多个case可以共用一条执行语句,如:
引用
…… case 'A': case 'B': case 'c': printf(">60\n"); break; …… |
(5) 最开始那个例子中,如果把每个case后的break删除掉,则当greak='A'时,程序从printf("85-100\n")开始执行,输出结果为:
引用
85-100 70-84 60-69 <60 error |
引用
main() /*完成两个数简单的四则运算*/ { float a,b; char c1; printf("Please enter a,b and op:"); scanf("%f%c%f",&a,&c1,&b); switch(c1) { case '+': printf("%f+%f=%f\n",a,b,a+b); break; case '-': printf("%f-%f=%f\n",a,b,a-b); break; case '*': printf("%f*%f=%f\n",a,b,a*b); break; case '/': if(b!=0.0) /*分母不能等于0*/ printf("%f/%f=%f\n",a,b,a/b); else printf("error!\n"); break; default: printf("error!\n"); break; } } |