资源描述:
《2019年第五章选择结构程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&&b&&c只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a
2、
3、b
4、
5、c只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c例:(m=a>b)&&(n=c>d)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值为0,因此m=0,而“n=c>d”不被执行,因此n的值不是0而仍保持原值1。5.3if语句说明:(1)3种形式的if语句中在if后面都有表达式,一般为逻辑表达式或关系表达式。(2)第二,第三种形式的if语句中,在每个else前面有一个
6、分号,整个语句结束处有一个分号。(3)在if和else后面可以只含有一个内嵌的操作语句,也可以由多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。5.3if语句-1(x<0)例5.3有一个函数y=0(x=0),编一程序,输入一个x值,输出y值。1(x>0)算法1:算法2:输入x输入x若x<0,则y=-1若x<0,则y=-1若x=0,则y=0否则:若x>0,则y=1若x=0,则y=0输出y若x>0,则y=1输出y5.3if语句#includevoidmain(){intx,y;scanf(“%d”,&x);{程序段}printf(“x=%d,y=%d
7、n”,x,y);}5.3if语句上例中的程序段有四个,请判断哪个是正确的?程序1:If(x<0)y=-1;ElseIf(x==0)y=0;Elsey=1;正确5.3if语句上例中的程序段有四个,请判断哪个是正确的?程序2:if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;正确5.3if语句上例中的程序段有四个,请判断哪个是正确的?程序3:y=-1;If(x!=0)If(x>0)y=1;Elsey=0;5.3if语句上例中的程序段有四个,请判断哪个是正确的?程序4:y=0;if(x>=0)if(x>0)y=1;elsey=-1;6.“表达式2”和“表达式3”
8、不仅可以是数值表达式,还可以是赋值表达式或函数表达式。例如:a>b?(a=100):(b=100)a>b?printf(“%d”,a):printf(“%d”,b)7.条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同,此时表达式的值的类型为二者中较高的类型例如:x?‘a’:‘b’x>y?1:1.55.3if语句例5.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#includevoidmain(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='
9、Z')?(ch+32):ch;printf("%c",ch);}如果字符变量ch的值为大写字母,则条件表达式的值为(ch+32),即相应的小写字母。如果ch的值不是大写字母,则条件表达式的值为ch,即不进行转换。注意:执行完一个case后面的语句后,流程控制转移到下一个case继续执行。“case常量表达式”只是起语句标号作用,并不是在条件判断。在执行switch语句时,根据switch后面表达式的值,找到匹配的入口标号,就从此标号开始执行下去,不再进行判断。应该在执行一个case分支后,可以用一个break语句来终止switch语句的执行。#include10、h>voidmain(){intc,s;floatp,w,d,f;scanf("%f,%f,%d",&p,&w,&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1-d/100.0);printf("freigh
11、t=%15.4f",f);}5.5程序举例例5.6求ax2+bx+c=0方程的解。基本的算法:①a=0,不是二次方程。②b2-4ac=0,有两个相等实根。③b2-4ac>0,有两个不等实根。④b2-4ac<0,有两个共轭复根。#include#includevoidmain(){floata,b,c,disc,x1,x2,realpart,imagpart;scanf("%f,%f,%f",&a,&b,&c);printf("theequati