您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 第三讲-分支结构switch.ppt
选择结构程序设计C语言程序设计2020/6/10switch语句是多分支选择语句,也叫开关语句或者选择语句。switch语句的一般形式switch(表达式){case常量表达式1:语句序列1case常量表达式2:语句序列2……case常量表达式n:语句序列ndefault:语句序列n+1}功能:–计算表达式的值,与常量表达式的值比较,等于第i个值时,顺序执行语句序列i、i+1、…、n+1–若与所有常量表达式值都不相等,执行语句序列n+1。3.2.2开关选择语句(switch)2020/6/10当a等于5,输出:$当a等于2,输出:#$当a是其他值,输出:$3.2.2开关选择语句(switch)例如:switch(a){case5:printf(“&);case2:printf(“#);default:printf($);}2020/6/10switch语句是多分支选择语句,也叫开关语句或者选择语句。switch语句的一般形式switch(表达式){case常量表达式1:语句序列1case常量表达式2:语句序列2……case常量表达式n:语句序列ndefault:语句序列n+1}功能:–计算表达式的值,与常量表达式的值比较,等于第i个值时,顺序执行语句序列i、i+1、…、n+1–若与所有常量表达式值都不相等,执行语句序列n+1。3.2.2开关选择语句(switch)break语句:若执行完其中一个语句组后,加break语句,使其退出;否则会自动执行其后各语句组。2020/6/10当a等于5,输出:$当a等于2,输出:#$当a是其他值,输出:$3.2.2开关选择语句(switch)例如:switch(a){case5:printf(“&);case2:printf(“#);default:printf($);}break;break;break;当a等于5,输出:&当a等于2,输出:#当a是其他值,输出:$加入break以后,case语句出现的次序并不影响执行结果。无break时,case语句出现的次序影响运行结果2020/6/10[例]根据成绩等级打出成绩范围.grade流程图如下:'A''B''C''D'default输出85~100输出70~84输出60~69输出error输出60main(){chargrade;printf(Enteryourgrade\n);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);}}输入为B输出为70~842020/6/10求解简单表达式输入一个形式如“操作数运算符操作数”的四则运算表达式,输出运算结果。例如:输入:3.1+4.8输出:7.9思路:•设运算数x和y为float型变量,运算符op为char型变量;•变量值的输入scanf•根据op的值(为'+'、'-'、'*'、'/')进行x和y的相加、相减、相乘、相除运算(选择分支);•还要考虑到输入字符不是+、-、*或/时的情况2020/6/10源程序#includestdio.hvoidmain(void){charoperator;doublevalue1,value2;printf(Typeinanexpression:);scanf(%lf%c%lf,&value1,&operator,&value2);switch(operator){case'+':printf(=%.2f\n,value1+value2);break;case'-':printf(=%.2f\n,value1-value2);break;case'*':printf(=%.2f\n,value1*value2);break;case'/':printf(=%.2f\n,value1/value2);break;default:printf(Unknownoperator\n);break;}}Typeinanexpression:3.1+4.8=7.9如果除数为0?使用scanf函数应注意:scanf(%d%d,&m,&n);scanf(%c,&ch);错误输入:3228a正确输入:3228ascanf(“%c%c%c“,&c1,&c2,&c3);在执行函数时应该连续输入3个字符,中间不要有空格。空格字符和“转义字符”都作为有效字符输入。如:abc↙(字符间没有空格)若在两个字符间插入空格就不对了。如:abc↙(字符间有空格)注意数值型数据与char型数据的混合输入注意char型数据的输入第3章结构化程序设计——3.1.2数据输入第3章结构化程序设计——3.1.2数据输入double型数据输入时,必须用%lf或%le格式为了减少不必要的输入量,格式控制中尽量不要出现普通字符,也不要使用'\n'、'\t'等转义字符使用scanf函数应注意:输入数据不能规定精度scanf(%7.2f,&a);是错误的指定数据长度时,系统自动截取。scanf(%3d%3d,&a,&b);则当输入123456时,a123,b4562020/6/10注意:break语句可以终止后续:switch(表达式){case常量表达式1:语句序列1case常量表达式2:语句序列2……case常量表达式n:语句序列ndefault:语句序列n+1}条件表达式的类型和常量表达式的类型必须一致。switch语句的书写格式:语句体本身必须用花括号括起;case和default后面有多条语句,可以不必使用花括号;case和常量表达式之间必须有空格;default可以写在语句体的任何位置,也可以省略不写任意两个case的常量表达式值不能相同。基本数据类型——2.7数组和指针初步组成数组的变量称为数组的元素.1.数组的定义:数据类型数组名[元素个数]如:inta[5];5个整型数组成的一维数组floatx[10];chars[12];intarr[2][3];两行三列的二维数组数组元素的下标从0开始,且必须是整型的常量和变量.inta[5];a[0]a[1]a[2]a[3]a[4]intarr[2][3];a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]基本数据类型——2.7.1数组按行存储inta[5];intarr[2][3];数组名代表了数组首地址(第一个元素的地址),是一个常量,用a或&a[0]表示。a[0]a[1]a[2]a[3]a[4]arr[0][0]arr[0][1]arr[0][2]arr[1][0]arr[1][1]arr[1][2]基本数据类型——2.7.1数组(存储方式)在定义的同时,可以对数组进行初始化,一维数组,如:intb[5]={1,2,3,4,5};或intb[]={1,2,3,4,5};二维数组,如:inta[2][3]={{1,3,5},{2,4,6}};或inta[2][3]={1,3,5,2,4,6};基本数据类型——2.7.1数组(初始化)内存单元地址内容变量intx=20,y=1,z=155;printf(%d,x;)直接访问:通过变量名访问间接访问:通过另一个变量访问把变量的地址放到另一变量中使用时先找到后者再从中取出前者的地址100020x10021y1004155z20001000p2002地址指针变量基本数据类型——2.7.2指针1.指针变量的定义类型标识符*变量名;例如:int*p1,*p2;2.指针变量的赋值(指针指向某个对象)&:取变量的地址x的地址表示为&x指针变量=&变量*:间接访问变量的值*p访问指针p所指的变量例如:先定义,后赋值:inta,b,*p1,*p2;p1=&a;p2=&b;定义时赋初值:inta,*prt=&a;基本数据类型——2.7.2指针p&x(1000)102030x[例]利用指针指向两个变量。main(){inta,b;int*p1,*p2;a=100;b=10;p1=&a;p2=&b;printf(%d,%d\n,a,b);printf(%d,%d\n,*p1**p2,*p1+*p2);}基本数据类型——2.7.2指针变量程序举例200b100p1p2amain(){intx,y,*p1=&x,*p2=&y;p2=p1;/*让p2和p1同时指向x*/x=100;y=200;printf(“x=%d\n”,*p1);printf(“y=%d\n”,*p2);}200y100p1p2x指向一般变量的指针inta[10],*p;数组名代表一个地址,它的值是数组首元素的地址p=a;p=&a[0];第i个元素的地址:&a[i]a+i是距数组a的基地址的第i个偏移p+i第i个元素的值:a[i]*(a+i)*(p+i)内容数组元素a[1]a[9]a[i]p基本数据类型——2.7.3指针和数组的简单用法指向一维数组的指针
本文标题:第三讲-分支结构switch.ppt
链接地址:https://www.777doc.com/doc-5814786 .html