例如: /*exp55c*/ #include <stdio.h> maino char grade; scanf(%oc", &grade); switch(grade i case 'A: printf(85-100 n); case 'B: printf( 70-84n; case ' C: printf(60-69(n; case D: printf("<60 n); default: printf("ErrorIn") c語醒设计
例如: /*exp55.c*/ #include <stdio.h> main() { char grade; scanf("%c",&grade); switch (grade) { case 'A':printf("85-100\n"); case 'B':printf("70-84\n"); case 'C':printf("60-69\n"); case 'D':printf("<60\n"); default:printf("Error\n"); } }
运行结果: Au 85-100 70-84 60-69 <60 Error 程序运行结果不在预料之中 产生错误的原因:没有完全起到分支作用 c語醒设计
运行结果: A 程序运行结果不在预料之中! 产生错误的原因: 没有完全起到分支作用。 85-100 70-84 60-69 <60 Error
解决办法:增加 break语句,使之跳出 switch结构。 般形式为:|swch(表达式) {case常表1:语句1; re case常表2:语句2; break: case 常表n:语句n; breaks default:语句n+1; 设计
switch (表达式) { case 常表1: 语句1; break; case 常表2 : 语句2; break; … … case 常表n : 语句n; break; default: 语句n+1; } 一般形式为: 解决办法: 增加break语句, 使之跳出switch结构
修改程序为:/exp56C* #include <stdio.h> main (0 i char grade; scanf("%", &grade); switch(grade) i case 'A: printf(85-100 n; break; case 'B: printf( 70-84 n); break; case 'C: printf( 60-69n"); break; case D: printf( <60n); break; default: printf( ErrorIn); c語醒设计
修改程序为: /*exp56.c*/ #include <stdio.h> main() { char grade; scanf("%c",&grade); switch (grade) { case 'A':printf("85-100\n");break; case 'B':printf("70-84\n"); break; case 'C':printf("60-69\n"); break; case 'D':printf("<60\n"); break; default:printf("Error\n"); } }
注意 1.常量表达式的值必须互不相等,否则会有 二异性。 2.case顺序无关紧要。 3.不一定非用 break不可,有时几种情况合并 执行一组语句。 c語醒设计
1. 常量表达式的值必须互不相等,否则会有 二异性。 2. case顺序无关紧要。 3. 不一定非用break不可,有时几种情况合并 执行一组语句。 注意