第三讲分支结构(switch)

上传人:大米 文档编号:590547455 上传时间:2024-09-14 格式:PPT 页数:20 大小:382KB
返回 下载 相关 举报
第三讲分支结构(switch)_第1页
第1页 / 共20页
第三讲分支结构(switch)_第2页
第2页 / 共20页
第三讲分支结构(switch)_第3页
第3页 / 共20页
第三讲分支结构(switch)_第4页
第4页 / 共20页
第三讲分支结构(switch)_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《第三讲分支结构(switch)》由会员分享,可在线阅读,更多相关《第三讲分支结构(switch)(20页珍藏版)》请在金锄头文库上搜索。

1、选择结构程序设计选择结构程序设计 C C 语言程序设计语言程序设计l lswitchswitch语句是多分支选择语句,也叫开关语句或者语句是多分支选择语句,也叫开关语句或者语句是多分支选择语句,也叫开关语句或者语句是多分支选择语句,也叫开关语句或者选择语句。选择语句。选择语句。选择语句。 switchswitch语句的一般形式语句的一般形式语句的一般形式语句的一般形式 switch (表达式表达式) case 常量表达式常量表达式1: 语句序列语句序列1 case 常量表达式常量表达式2: 语句序列语句序列2 case 常量表达式常量表达式n: 语句序列语句序列n default : 语句序列

2、语句序列n+1 l l功能:功能:功能:功能: 计算表达式的值,与常量表达式的值比较,等于第计算表达式的值,与常量表达式的值比较,等于第计算表达式的值,与常量表达式的值比较,等于第计算表达式的值,与常量表达式的值比较,等于第i i个值个值个值个值时,顺序执行语句序列时,顺序执行语句序列时,顺序执行语句序列时,顺序执行语句序列i i、i+1i+1、 、 n+1n+1 若与所有常量表达式值都不相等,执行语句序列若与所有常量表达式值都不相等,执行语句序列若与所有常量表达式值都不相等,执行语句序列若与所有常量表达式值都不相等,执行语句序列n+1n+1。3.2.2 开关选择开关选择语句语句(switch

3、)当当a等于等于5,输出:,输出:&#$当当a等于等于2,输出:,输出:#$当当a是其他值,输出:是其他值,输出:$3.2.2 开关选择开关选择语句语句(switch)例如:例如:switch (a) case 5: printf(“&); case 2: printf(“#); default: printf($);l lswitchswitch语句是多分支选择语句,也叫开关语句或者语句是多分支选择语句,也叫开关语句或者语句是多分支选择语句,也叫开关语句或者语句是多分支选择语句,也叫开关语句或者选择语句。选择语句。选择语句。选择语句。 switchswitch语句的一般形式语句的一般形式语句

4、的一般形式语句的一般形式 switch (表达式表达式) case 常量表达式常量表达式1: 语句序列语句序列1 case 常量表达式常量表达式2: 语句序列语句序列2 case 常量表达式常量表达式n: 语句序列语句序列n default : 语句序列语句序列n+1 l l功能:功能:功能:功能: 计算表达式的值,与常量表达式的值比较,等于第计算表达式的值,与常量表达式的值比较,等于第计算表达式的值,与常量表达式的值比较,等于第计算表达式的值,与常量表达式的值比较,等于第i i个值个值个值个值时,顺序执行语句序列时,顺序执行语句序列时,顺序执行语句序列时,顺序执行语句序列i i、i+1i+1

5、、 、 n+1n+1 若与所有常量表达式值都不相等,执行语句序列若与所有常量表达式值都不相等,执行语句序列若与所有常量表达式值都不相等,执行语句序列若与所有常量表达式值都不相等,执行语句序列n+1n+1。3.2.2 开关选择开关选择语句语句(switch)break break 语句语句语句语句: : 若执行完其中一个语句组后若执行完其中一个语句组后若执行完其中一个语句组后若执行完其中一个语句组后, , 加加加加 break break 语句语句语句语句, , 使其退出使其退出使其退出使其退出; ; 否则会自动执行其后各语句组。否则会自动执行其后各语句组。否则会自动执行其后各语句组。否则会自动

6、执行其后各语句组。当当a等于等于5,输出:,输出:&#$当当a等于等于2,输出:,输出:#$当当a是其他值,输出:是其他值,输出:$3.2.2 开关选择开关选择语句语句(switch)例如:例如:switch (a) case 5: printf(“&); case 2: printf(“#); default: printf($);break;break; break;当当a等于等于5,输出:,输出:&当当a等于等于2,输出:,输出:#当当a是其他值,输出:是其他值,输出:$加入加入加入加入breakbreak以后,以后,以后,以后,casecase语句出现的次序并不影响执行结果。语句出现的

7、次序并不影响执行结果。语句出现的次序并不影响执行结果。语句出现的次序并不影响执行结果。无无无无breakbreak时,时,时,时, casecase语句出现的次序影响运行结果语句出现的次序影响运行结果语句出现的次序影响运行结果语句出现的次序影响运行结果例例 根据成绩等级打出成绩范围根据成绩等级打出成绩范围.gradegradegradegrade流程图如下:流程图如下:流程图如下:流程图如下:AAAABBBBCCCCDDDDdefaultdefaultdefaultdefault输出输出输出输出85858585100100100100输出输出输出输出7070707084848484输出输出输出

8、输出6060606069696969输出输出输出输出errorerrorerrorerror输出输出输出输出60606060main()main() char grade; char grade; printf(Enterprintf(Enter your graden); your graden); scanf(%c,&gradescanf(%c,&grade); ); switch(gradeswitch(grade) ) case A: printf(85 case A: printf(85100n); break;100n); break; case B: printf(70 case

9、 B: printf(7084n); break;84n); break; case C: printf(60 case C: printf(6069n); break;69n); break; case D: case D: printfprintf(60n); break;(60n); break; default: default: printf(errornprintf(errorn);); 输入为输入为输入为输入为 B B B B输出为输出为输出为输出为 7070707084 84 84 84 求解简单表达式求解简单表达式 输入一个形式如输入一个形式如“操作数操作数 运算符运算符 操

10、作数操作数”的四则运算表达式,输出运算结果。的四则运算表达式,输出运算结果。例如:例如:例如:例如:输入:输入:输入:输入:3.1+4.83.1+4.8 输出:输出:输出:输出:7.97.9思路:思路:思路:思路:设设设设运运运运算算算算数数数数x x和和和和y y为为为为floatfloat型型型型变变变变量量量量, , 运运运运算算算算符符符符opop为为为为charchar型型型型变量;变量;变量;变量;变量值的输入变量值的输入变量值的输入变量值的输入scanfscanf根根根根据据据据opop的的的的值值值值(为为为为+、-、*、/ /)进进进进行行行行x x和和和和y y的相加、相减

11、、相乘、相除运算(选择分支);的相加、相减、相乘、相除运算(选择分支);的相加、相减、相乘、相除运算(选择分支);的相加、相减、相乘、相除运算(选择分支);还要考虑到输入字符不是还要考虑到输入字符不是还要考虑到输入字符不是还要考虑到输入字符不是+ +、- -、* * 或或或或 / / 时的情况时的情况时的情况时的情况源程序源程序# include # include void void main(voidmain(void) ) char operator; double value1, value2; char operator; double value1, value2; printf(

12、Typeprintf(Type in an expression: ); in an expression: ); scanf(%lf%c%lfscanf(%lf%c%lf, &value1, &operator, &value2);, &value1, &operator, &value2); switch(operatorswitch(operator) ) case +: case +: printfprintf(=%.2fn, value1+value2); break;(=%.2fn, value1+value2); break; case -: case -: printfprin

13、tf(=%.2fn, value1-value2); break;(=%.2fn, value1-value2); break; case *: case *: printfprintf(=%.2fn, value1*value2); break;(=%.2fn, value1*value2); break; case /: case /: printfprintf(=%.2fn, value1/value2); break;(=%.2fn, value1/value2); break; default: default: printf(Unknownprintf(Unknown operat

14、orn); break; operatorn); break; Type in an expression: 3.1+4.8=7.9如果除数为如果除数为0?使用使用scanf函数应注意:函数应注意: scanf (%d%d, &m, &n);scanf (%c, &ch); 错误输入:错误输入:32 28 a 正确输入:正确输入:32 28a scanf(“%c%c%c“,&c1,&c2,&c3);在执行函数时应该连续输入在执行函数时应该连续输入3个字符,中间不要有空格。个字符,中间不要有空格。空格字符和空格字符和空格字符和空格字符和“ “转义字符转义字符转义字符转义字符” ”都作为有效字符输

15、入。都作为有效字符输入。都作为有效字符输入。都作为有效字符输入。如:如:abc (字符间没有空格)(字符间没有空格)若在两个字符间插入空格就不对了。若在两个字符间插入空格就不对了。如:如:a b c (字符间有空格)(字符间有空格)u注意数值型数据与注意数值型数据与注意数值型数据与注意数值型数据与charchar型数据的混合输入型数据的混合输入型数据的混合输入型数据的混合输入u注意注意注意注意charchar型数据的输入型数据的输入型数据的输入型数据的输入第第3章章 结构化程序设计结构化程序设计3.1.2 3.1.2 数据输入数据输入数据输入数据输入第第3章章 结构化程序设计结构化程序设计3.

16、1.2 3.1.2 数据输入数据输入数据输入数据输入udouble型数据输入时,必须用型数据输入时,必须用%lf或或%le格式格式u为了减少不必要的输入量,格式控制中尽量不要出现普为了减少不必要的输入量,格式控制中尽量不要出现普通字符,也不要使用通字符,也不要使用 n 、t 等转义字符等转义字符使用使用scanf函数应注意:函数应注意: u输入数据不能规定精度输入数据不能规定精度输入数据不能规定精度输入数据不能规定精度scanfscanf ( %7.2f , &a); ( %7.2f , &a);是错误的是错误的是错误的是错误的u指定数据长度时指定数据长度时指定数据长度时指定数据长度时, ,系

17、统自动截取。系统自动截取。系统自动截取。系统自动截取。scanfscanf( %3d%3d , &a, &b);( %3d%3d , &a, &b);则当输入则当输入则当输入则当输入123456123456时时时时, , a a123, b123, b456456注意:注意:breakbreak语句语句可以可以终止后续:终止后续:switch switch (表达式)表达式)表达式)表达式) case case 常量表达式常量表达式常量表达式常量表达式1: 1: 语句序列语句序列语句序列语句序列1 1 case case 常量表达式常量表达式常量表达式常量表达式2: 2: 语句序列语句序列语句

18、序列语句序列2 2 case case 常量表达式常量表达式常量表达式常量表达式n: n: 语句序列语句序列语句序列语句序列n n default : default : 语句序列语句序列语句序列语句序列n+1 n+1 条件表达式的类型条件表达式的类型和常量表达式的类和常量表达式的类型必须一致。型必须一致。switch语句的语句的书写格式书写格式:l l语句体本身必须用语句体本身必须用语句体本身必须用语句体本身必须用花括号花括号花括号花括号括起;括起;括起;括起;l lcasecase和和和和defaultdefault后面有多条语句,可以不必使用花括号;后面有多条语句,可以不必使用花括号;后

19、面有多条语句,可以不必使用花括号;后面有多条语句,可以不必使用花括号;l lcasecase和常量表达式之间必须有和常量表达式之间必须有和常量表达式之间必须有和常量表达式之间必须有空格空格空格空格;l ldefaultdefault可以写在语句体的任何位置,也可以省略不写可以写在语句体的任何位置,也可以省略不写可以写在语句体的任何位置,也可以省略不写可以写在语句体的任何位置,也可以省略不写l任意两个任意两个任意两个任意两个casecase的常量表达式值不能相同。的常量表达式值不能相同。的常量表达式值不能相同。的常量表达式值不能相同。基本数据类型基本数据类型2.7 数组数组和和指针指针初步初步

20、组成数组的变量称为数组的元素组成数组的变量称为数组的元素组成数组的变量称为数组的元素组成数组的变量称为数组的元素. . 1. 1. 数组的定义数组的定义数组的定义数组的定义: : 数据类型数据类型数据类型数据类型 数组名数组名数组名数组名 元素个数元素个数元素个数元素个数 如如如如: : intint a5; 5 a5; 5个整型数组成的一维数组个整型数组成的一维数组个整型数组成的一维数组个整型数组成的一维数组 float x10;float x10; char s12; char s12; intint arr23; arr23; 两行三列的二维数组两行三列的二维数组两行三列的二维数组两行三

21、列的二维数组 数组元素的下标从数组元素的下标从数组元素的下标从数组元素的下标从0 0开始开始开始开始, ,且必须是整型的常量和变量且必须是整型的常量和变量且必须是整型的常量和变量且必须是整型的常量和变量. . intint a5; a0 a1 a2 a3 a4 a5; a0 a1 a2 a3 a4 intint arr23; a00 a01 a02 arr23; a00 a01 a02 a10 a11 a12 a10 a11 a12 基本数据类型基本数据类型2.7.1 数组数组按行存储按行存储按行存储按行存储 intint a5; a5; intint arr23; arr23; 数组名代表了

22、数组首地址数组名代表了数组首地址数组名代表了数组首地址数组名代表了数组首地址( (第一个元素的地址第一个元素的地址第一个元素的地址第一个元素的地址), ),是一是一是一是一个常量个常量个常量个常量, ,用用用用a a 或或或或 &a0&a0表示表示表示表示。a0a0 a1a1 a2a2 a3a3 a4a4 arr00arr00arr01arr01 arr02arr02arr10arr10arr11arr11 arr12arr12基本数据类型基本数据类型2.7.1 数组(存储方式)数组(存储方式) 在定义的同时在定义的同时在定义的同时在定义的同时, , , ,可以对数组进行初始化可以对数组进行初

23、始化可以对数组进行初始化可以对数组进行初始化, , , ,一维一维一维一维数组,数组,数组,数组,如如如如: : : : intintintint b5=1,2,3,4,5; b5=1,2,3,4,5; b5=1,2,3,4,5; b5=1,2,3,4,5;或或或或 intintintint b =1,2,3,4,5; b =1,2,3,4,5; b =1,2,3,4,5; b =1,2,3,4,5;二维二维二维二维数组,如:数组,如:数组,如:数组,如: intintintint a23=1,3,5,2,4,6; a23=1,3,5,2,4,6; a23=1,3,5,2,4,6; a23=1

24、,3,5,2,4,6;或或或或 intintintint a23=1,3,5,2,4,6; a23=1,3,5,2,4,6; a23=1,3,5,2,4,6; a23=1,3,5,2,4,6; 基本数据类型基本数据类型2.7.1 数组(初始化)数组(初始化) 内存单元内存单元内存单元内存单元地址地址地址地址 内容内容内容内容 变量变量变量变量intint x = 20, y = 1, z = 155; x = 20, y = 1, z = 155;printf(%dprintf(%d, x;), x;)直接访问直接访问直接访问直接访问:通过变量名访问通过变量名访问通过变量名访问通过变量名访问间

25、接访问间接访问间接访问间接访问:通过通过通过通过另一个变量访问另一个变量访问另一个变量访问另一个变量访问把变量的地址放到另一变量中把变量的地址放到另一变量中把变量的地址放到另一变量中把变量的地址放到另一变量中使用时先找到后者使用时先找到后者使用时先找到后者使用时先找到后者再再再再从中取出前者的地址从中取出前者的地址从中取出前者的地址从中取出前者的地址1000 20 x1000 20 x1002 1 y1002 1 y1004 155 z1004 155 z2000 1000 p2000 1000 p20022002地址地址地址地址 指针变量指针变量指针变量指针变量基本数据类型基本数据类型2.7

26、.2 指针指针 1. 1. 指针变量的定义指针变量的定义指针变量的定义指针变量的定义 * * ; ; 例如例如例如例如: int *p1, *p2;: int *p1, *p2; 2. 2. 指针变量的赋值(指针指向某个对象)指针变量的赋值(指针指向某个对象)指针变量的赋值(指针指向某个对象)指针变量的赋值(指针指向某个对象)&:取变量的地址:取变量的地址:取变量的地址:取变量的地址x x的地址表示为的地址表示为的地址表示为的地址表示为&x&x 指针变量指针变量指针变量指针变量=&=&变量变量变量变量 * *:间接访问变量的值:间接访问变量的值:间接访问变量的值:间接访问变量的值 * *p p

27、访问指针访问指针访问指针访问指针p p所指的变量所指的变量所指的变量所指的变量 例如例如例如例如: : 先定义先定义先定义先定义, ,后赋值后赋值后赋值后赋值: intint a,b,*p1,*p2; a,b,*p1,*p2; p1=&a; p2=&b; p1=&a; p2=&b; 定义时赋初值定义时赋初值定义时赋初值定义时赋初值: intint a, * a, *prtprt=&a; =&a; 基本数据类型基本数据类型2.7.2 指针指针p&x(1000)&x(1000)1020302030x x例例 利用指针指向两个变量。利用指针指向两个变量。 main( )int a,b;int *p1

28、,*p2;a=100;b=10; p1=&a; p2=&b;printf (%d,%dn,a,b);printf(%d,%dn,*p1*p2,*p1+*p2);基本数据类型基本数据类型2.7.2 指针指针变量程序举例变量程序举例200b100p1p2amain( ) int x,y,*p1=&x ,*p2=&y; p2=p1; /* 让让p2和和 p1同时指向同时指向x */ x=100; y=200; printf(“ x=%dn”,*p1); printf(“ y=%dn”,*p2); 200y100p1p2x指向一般变量的指针指向一般变量的指针int a10, *p;数组名代表一个地址,

29、它的值是数数组名代表一个地址,它的值是数数组名代表一个地址,它的值是数数组名代表一个地址,它的值是数组首元素的地址组首元素的地址组首元素的地址组首元素的地址p=a;p=a;p=&a0;p=&a0;第第i个元素的地址:个元素的地址:&aiai a+ia+i 是距数组是距数组是距数组是距数组a a的基地址的第的基地址的第的基地址的第的基地址的第i i个偏移个偏移个偏移个偏移p+ip+i第第i个元素的值:个元素的值:aiai *(*(a+ia+i) ) *(*(p+ip+i) )内容内容 数组元素数组元素a1a9 ai p基本数据类型基本数据类型2.7.3 指针和数组的简单用法指针和数组的简单用法n指向一维数组的指针指向一维数组的指针

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号