888从从从从从座座从从从8从从幽8从从从从B8从从 G语 程序设计 i制作h刘金连
第一章C语言概述 ·第二章数据类型、运算符与表达式 ·第三章最简单的c程序设计 第四章逻辑运算和判断选取控制 ·第五章循环控制 第六章数组 ·第八章编译预处理 第九章指针 第十章结构体与共用体 第十二章文件的基本操作 第十三章位运算
• 第一章 C语言概述 • 第二章 数据类型、运算符与表达式 • 第三章 最简单的C程序设计 • 第四章 逻辑运算和判断选取控制 • 第五章 循环控制 • 第六章 数组 • 第八章 编译预处理 • 第九章 指针 • 第十章 结构体与共用体 • 第十二章 文件的基本操作 • 第十三章 位运算
s4.4 switch语自一开关语自 可题:当某一表达式有n个取值每一取值执行 语句,则如果用内嵌f十分繁锁,而用 switch简单. 般形式: switch(表达式) case常量表达式1:语句1 case常量表达式2:语句2 case常量表达式n:语句n default 语句n+1 c語醒设计
§4.4 switch 语句–––开关语句 问题: 当某一表达式有n个取值,每一取值执行一 语句,则如果用内嵌if十分繁锁,而用switch简单. 一般形式: switch(表达式) { case 常量表达式1: 语句1 case 常量表达式2: 语句2 case 常量表达式n: 语句n default : 语句n+1 }
例:根据成绩等级打印百分数段 switch(grade) i case A': printf("85-100n); case B: printf( 70-84n") case 'C: printf( 60-69n") case D: printf("<60n default: printf("errorin") c語醒设计
例: 根据成绩等级打印百分数段. 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"); }
功能 根据表达式的取值,判断其与哪一个 常量表达式相等。如=表达式i,则自语 句于始执行,直到语句n+1止 若与所有常量表达式值不相等,则从 default后的语句开始执行 c語醒设计
根据表达式的取值, 判断其与哪一个 常量表达式相等。如=表达式i,则自语 句i开始执行,直到语句n+1止。 若与所有常量表达式值不相等,则从 default后的语句开始执行。 功能:
例如: /*exp55c*/ #include 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 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 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 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不可,有时几种情况合并 执行一组语句。 注意