《顺序分支结构》PPT课件.ppt
第,章,4,分 支 结 构,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,语句可以分为五大类:1.表达式语句:表达式的后面加一个分号 赋值语句 自加减运算符构成的表达式语句 逗号表达式语句 2.空语句:只有一个分号,作为语句结束符 3复合语句:由和把一些变量说明和 语句组合在一起,又称语句块。如:int a=0,b=1,sum;sum=a+b;printf(%d,sum);,第,章,4,分 支 结 构,函数调用语句:由一个函数调用加上一 个 分号组成,如:printf(This is a function call);5.控制语句,共有9种,即:if语句 switch语句 while语句 do-while语句 for语句 break语句 continue语句 goto语句 return语句,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.1】有三个电阻并联,其阻值分别为 10、20、50,求并联后的电阻。#include stdio.h main()float r,r1,r2,r3;执行顺序 r1=10;r2=20;r3=50;r=1/(1/r1+1/r2+1/r3);/*注意别忘了括号*/printf(并联电阻r=%8.2fn,r);运行结果:并联电阻r=5.88,执行顺序,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,此结构属于顺序结构,程序自上而下执行时 程序中的每一个语句都被执行一次,而且只能被执行一次。C语言提供两种分支判断语句:If语句 switch语句,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,4.3.1 if语句的一般形式,4.3.2 ifelse中的语句可以是复合语句,4.3 if语句,4.3.3 if语句的缺省形式,4.3.4 条件表达式较复杂的情况,4.3.5 条件表达式未必一定是关系或逻 辑表达式,4.3.6 同一个条件可以有多种表达方式,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,if语句的一般形式:if()else 注:内的表示是可选的。,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.2】请输入两个数a,b,比较a+b和 ab的大小,输出大者。#include main()int a,b,s1,s2;coutab;s1=a+b;/*两个数的和*/s2=a*b;/*两个数的积*/if(s1s2)couta与b的和大于a与b的积 n;/*语句A*/else couta与b的积大于等于a与b的和n;/*语句B*/,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,运行结果为:请输入两个整数:2,3 a与b的积大于等于a与b的和程序执行的过程:比较两数的和与积,如果s1s2,执行语句A,否则,就跳过语句A执行语句B,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.3】已知实数a,b,计算u=(r+s)2,v=(r+s)3的值。#include stdio.h main()float a,b,u,v,s,r;printf(请输入实数a,b:);scanf(%f%f,A,B,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,运行结果:请输入实数a,b:5.0 6.0 u=103.361115,v=-1050.838013若ab条件成立,执行的顺序是 AC,否则执行的顺序是 BC。,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【注意】(1)if后面的一定要有括号(2)if和else同属于一个if语句,程序中不可以没有if而只有else(3)if语句与else语句不可能同时执行(4)如果和是非复合语句 那么该语句一定要以分号结束(5)if语句的表达式可以是任意类型的 C语言的合法的表达式,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,缺省条件语句形式:if()执行过程:如果的值不为零,执行,否则什么也不执行,跳 到if语句的下面,继续执行程序中的其 它语句。缺省else时的条件分支语句,也 经常使用。,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.4】输入三角形的三个边长,求出三角形的面积。#include math.h main()float a,b,c;float area,s;/*s为三角形的半周长*/printf(请输入三角形的三边a,b,c:);scanf(%f%f%f,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,运行结果:请输入三角形的三边a,b,c:3 4 5 三角形面积area=6.000000三角形构成条件:任意两边之和大于第三边,由if语句判断条件的成立,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.5】判断某一年是否为闰年。判断闰年的条件:能被4整除,但不能被100整除 或 能被400整除程序:#include stdio.h main()int year;scanf(%d,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.6】#include stdio.h main()int s;if(s=2)printf(hello);else printf(error);相当于if(2)printf(hello);,这是合法的!,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.7】#include stdio.h main()int x,y;scanf(%d,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,把if(x)改成if(x!=0),其功能相同。下面两种表示方法经常使用:if(x)等价于 if(x!=0)if(!x)等价于 if(x=0),语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,4.4.1 嵌套的引出,4.4.2 流程图,4.4 if语句的嵌套,4.4.3 if与else的配对规则,4.4.4 嵌套举例,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.8】输入a,b两个数,比较并输出结果。#include stdio.h main()int a,b;printf(请输入a,b:);scanf(%d%d,一个完整的if语句,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,程序中供选择的情况多于两个时使用两个以上if语句来进行判断。if语句的嵌套:在一个if语句中 包含另一个if语句内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.9】写出下列程序的输出结果。#include stdio.h main()int x=4,y=5,z=2,max;max=x;if(zy)if(zx)max=z;else if(yx)max=y;printf(max=%d,max);运行结果:max=4,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.10】解方程:ax2+bx+c=0。程序见课本P29,流程图如下图:从代数知识可以知道:若b2-4ac0 有两个不等的实根 若b2-4ac=0 有两个相等的实根 若b2-4ac0 有两个虚根,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,流程图:,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,switch语句的一般形式是:switch()case:case::case:default:,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【例4.11】模拟计数器的功能。#include stdio.h main()float x,y;/*存放两个运算分量*/char operator;/*存放运算符*/printf(输入x,运算符和y:);scanf(%f%c%f,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,第,章,4,分 支 结 构,【注意】1case后面必须是常量表达式,因此不能是包含变量的表达式。2case和常量之间要有空格 case后面的常量之后有:,且所有case包含在里。Switch语句的一个用法:当多个常量表 达式都执行同一组语句时,可将 它们集中写在一起。,语句概述,问题的引出,if语句的嵌套,switch语句,if语句,