《高级语言程序设计.ppt》由会员分享,可在线阅读,更多相关《高级语言程序设计.ppt(28页珍藏版)》请在三一办公上搜索。
1、第五章 选择结构程序设计,本次课程主要内容,(关系运算符(P55)和关系表达式)(逻辑运算符和逻辑表达式)(条件运算符和条件运算)if语句(控制语句。语句分成那几种?P68)switch语句和break语句,控制语句 函数调用语句表达式语句 空语句复合语句,关系运算符,关系运算实际上是“比较运算”=!=关系运算符的优先级低于算术运算符关系运算符的优先级高于赋值运算符,低,高,赋值运算符,关系运算符,算术运算符,c a+b,c(a+b),a b=c,(a b)=c,a=b c,a=(b c),a=b c,a=(b c),例,关系表达式,用关系运算符将两个表达式连接起来的式子。其值是一个逻辑值,即
2、“真”(1)或“假”(0)。,例:,a 3,b=2,c=1 则:a b 的值为真,表达式的值为1a b=c 的值为真,表达式的值为1b+c b的值为1f=a b c的值为0,逻辑运算符,运算符双目运算符:有两个运算量(操作数)单/一目运算符:只要求有一个运算量三种逻辑运算符&逻辑与。a&b若a,b为真,则其值为真。|逻辑或。a|ba,b之一为真,则其值为真。!逻辑非。!a若a为真,则!a为假。优先级:!&|。!a&b|x y&c,低,高,!(非)算术运算符关系运算符&和|赋值运算符,逻辑表达式,逻辑表达式的值是一个逻辑量“真”或“假”。逻辑运算的结果中,真为1,假为0判断一个量是否为真时,0为
3、假,非0为真。例1:(P89)例2:5 3 a|b|c。,if 语句,if语句的三种形式:实现单分支选择结构的形式实现双分支选择结构的形式实现多分支选择的形式,if语句 之单分支选择结构,一般形式:if(表达式)语句说明:当表达式的结果为非0时,执行后面的语句,否则不执行。,单分支选择结构流程图,【程序5.2】将输入的三个数按照从小到大的顺序输出。,main()float a,b,c,t;scanf(%f%f%f,if语句 之双分支选择结构,一般形式:if(表达式)语句1else 语句2说明:当表达式的值为非0时,执行语句1,否则执行语句2。,双分支选择结构流程图,【程序5.3】从终端输入一个
4、整数,并以绝对值形式输出。,#include int main()int x1,y1;scanf(%d,运行情况:2323,if语句 之多分支选择结构,一般形式:if(表达式)语句1else if(表达式)语句2else if(表达式)语句3else if(表达式)语句nelse 语句n+1说明:各个表达式按顺序求值,如果某个表达式的值为非0,则执行与其相关的那条语句,并由此结束整个if语句。,多分支选择结构流程图,【程序5.4】判断输入的字符是数字、大写字母、小写字母或其他字符。,#include int main()char c;printf(Enter a character:);c=g
5、etchar();if(c=0,【程序5.5】解一元二次方程ax2+bx+c=0。,一元二次方程的解的情况有下列几种可能:a=0,不是二次方程;b2-4ac=0,有两个相等实根:b2-4ac0,有两个不等实根:b2-4ac0,有两个共轭实根。,分析,一元二次方程 NS图,#include int main()float a,b,c,d,x1,x2,p,q;scanf(%f,%f,%f,源程序:,未完,待续,else if(d1e-6)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(has distinct real roots:%8.4f an
6、d%8.4fn,x1,x2);elsep=-b/(2*a);q=sqrt(-d)/(2*a);printf(has complex roots:n);printf(%8.4f+%8.4fin,p,q);printf(%8.4f-%8.4fin,p,q);,if语句的嵌套格式一:if()if()语句1else 语句2else if()语句3else 语句4格式二:if()if()语句1(if与else数目不一样,为实现设计者else 的企图,可以加花括弧来确定配对关 if()语句2 系.限定内嵌if语句的范围,因此else 语句3 与第一个else配对.),例:有一函数 y=,编一程序,输入一个
7、 x值,输出一个y值。int main()int x,y;scanf(“%d”,-1(x0),写程序,判断某一年是否是闰年int year,leap;scanf(“%d”,对三种if语句形式的说明,在if语句中的if后面都有“表达式”,一般为逻辑表达式或关系表达式。在执行if语句时先对表达式求解,若其值为0,按“假”处理,若其值为非0,按“真”处理,执行指定的语句。另外,if(3)printf(“o.k”);if(a)printf(“%d”,a)均为合法语句。第二、三种形式的if 语句中,在每个else前面有一分号,整个语句结束处有分号。在if 和else后面可以只含有一个内嵌的操作语句,也可
8、以有多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。,条件运算符,两段程序:if(a b)max=a;else max=b;max=(a b)?a:b;红色部分为一个条件表达式。其一般形式为:表达式1?表达式2:表达式3关于条件运算符的说明(P9798),例:输入一个字符,判断是否为大写字母。如果是,转换成小写字母;否则不转换。最后输出所得字符#include int main()char ch;scanf(“%c”,switch语句和break语句,switch 语句:是专门用于实现多分支选择的语句。break语句:终止switch语句的执行。switch语句的一般形式:swit
9、ch(表达式)case 常量表达式 1:语句 1case 常量表达式 2:语句 2 case常量表达式 n:语句 ndefault:语句 n+1,举例:,公路收费站的车辆收费问题。设变量“t_type”用来表示汽车的类型。且A代表大客车,B代表大货车,依此类推,Switch(t_type)case A:printf(“RMB60.00”);break;/*大客车*/case B:printf(“RMB50.00”);break;/*大货车*/case C:printf(“RMB40.00”);break;/*面包车*/case D:printf(“RMB20.00”);break;/*小轿车*
10、/default:printf(“RMB10.00”);/*其他车辆*/,说明:,switch 语句中的“表达式”和case后面的“常量表达式”的结果值的类型应该一致。每一个case的常量表达式的值必须互不相同,否则出现矛盾现象。各个case的出现次序不影响执行结果。执行完一个case后面的语句后,流程控制转移下一个case继续执行。default 语句为选择项,可有可无。另外,default 后面可以不加break语句。多个case可以共用一组执行语句,如 case A:case B:case C:printf(“60n”);break;Grade的值为A、B、C时都执行同一组语句。,【程序5.6】根据考试成绩的等级打印出百分制分数段:,#include main()char grade;grade=getchar();switch(grade)case a:printf(85100n);break;case b:printf(7084n);break;case c:printf(6069n);break;case d:printf(60n);break;default:printf(error!n);,程序执行结果:a(输入)85100b(输入)7084f(输入)error!,