- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 熟悉常用的if 表达式形式 例如有定义:int a=3,b=0; 下面哪个表达式执行语句“b=2 ;” ? 1: if (a==0) b=2; 2: if (a==1) b=2; 3: if (a!=0) b=2; 4: if (a=1) b=2; 5: if (a=0) b=2; 6: if (a) b=2; 7: if (!a) b=2; 等价于 等价于 * * 4.4 switch语句 switch语句的一般形式 switch (表达式) { case 常量表达式1: 语句序列1 case 常量表达式2: 语句序列2 …… case 常量表达式n: 语句序列n default : 语句序列n+1 } 功能: 计算表达式的值,与常量表达式的值比较,等于第i个值时,顺序执行语句序列i、i+1、 …、 n+1 若与所有常量表达式值都不相等,执行语句序列n+1。 * * switch语句的算法描述 N-S结构图 计算 表达式 常量表达式1 语句序列1 常量表达式2 语句序列2 …… …… 常量表达式n 语句序列n default 语句序列n+1 例如: switch (a) { case 5: printf(); case 2: printf(#); default:printf($); } 当a等于5,输出:#$ 当a等于2,输出:#$ 当a是其他值,输出:$ * * 说明: “case 常量表达式i:”等价于语句标号,计算出的表达式值等于哪个语句标号,就从哪个位置开始顺序向下执行语句序列。 ∴ 语句位置影响运行结果 例如: switch (a) { case 2: printf(#); default: printf($); case 5: printf(); } switch与break语句结合才能实现 程序的分支 break; break; break; * * switch语句的简单应用 【例4.4】已知x=100,y=15,要求输入一个算术运算符(+、-、* 或 / ),并对x和y进行指定的算术运算。 思路: 设x和y为float型变量并赋初值; 输入的运算符op为char型变量; 根据op的值(为+、-、*、/)进行x和y的相加、相减、相乘、相除运算(选择分支); 还要考虑到输入字符不是+、-、* 或 / 时的情况。 * * 程序: #include stdio.h #include math.h void main( ) { float x=100,y=15,z; char op; op=getchar( ); switch (op) { case +: z=x+y; break; case -: z=x-y; break; case *: z=x*y; break; case /: z=x/y; break; default: z=0; } if((fabs(z))1e-6) printf(%f%c%f=%f\n,x,op,y,z); else printf (%c is not an operator\n,op); } 实型数通常不使用z==0或z!=0的比较 可用fabs(z)ε 代替 * * 注意: switch语句的书写格式:语句体本身必须用花括号括起; case和default后面如果有多条语句,可以不必使用花括号; case和常量表达式之间必须有空格; default可以写在语句体的任何位置,也可以省略不写; break语句可以改变case的语句标号作用,终止后续case语句序列的执行。 switch语句和break语句结合,可以实现程序的选择控制(break语句还可以在循环语句中使用); 允许switch嵌套使用,但同一个switch语句中,任意两个case的常量表达式值不能相同。 * * 4.4 选择结构程序设计举例 【例4.5】求一元二次方程ax2+bx+c=0的根。 思路:一元二次方程的根取决于系数a,b,c 求根公式: 判别式d = b2- 4ac 当 d = 0时,方程有两个相等的实根: x1=x2=-b/(2*a) 当d 0时,方程有两个不相等的实根: x1=(-b+sqrt(d))/(2*a) x2=(-b-sqrt(d))/(2*a) 当d 0时,方程有两个虚根: x1=jp+ipi x2=jp-ipi 实部 jp=-b/(2*a) 虚部 ip=sqrt(-d)/(2*a) * * 算法: 定义变量a、b、c、d
文档评论(0)