资源预览内容
第1页 / 共44页
第2页 / 共44页
第3页 / 共44页
第4页 / 共44页
第5页 / 共44页
第6页 / 共44页
第7页 / 共44页
第8页 / 共44页
第9页 / 共44页
第10页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。(1)a&b&c 只有a为真时,才需要判断b的值,只有a和b都为真时, 才需要判断c的值。(2)a|b|c 只要a为真,就不必判断b和c的值,只有a为假,才 判断b。a和b都为假才判断c例:(m=ab)&(n=cd)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。 5.3 if语句 说明:(1)3种形式的if语句中在if后面都有表达式, 一般为逻辑表达式或关系表达式。(2)第二,第三种形式的if语句中,在每个 else前面有一个分号,整个语句结束处有一 个分号。(3)在if和else后面可以只含有一个内嵌的操 作语句,也可以由多个操作语句,此时用花 括号将几个语句括起来成为一个复合语句。 5.3 if语句 -1 (x0)算法1: 算法2:输入x 输入x若x0,则y=-1 若x0,则y=1 若x=0,则y=0输出y 若x0,则y=1 输出y 5.3 if语句 #includevoid main() int x,y; scanf(“%d”,&x); 程序段 printf(“x=%d,y=%dn”,x,y); 5.3 if语句 上例中的程序段有四个,请判断哪个是正确的?程序1: If(x=0) if(x0) y=1; else y=0;else y=-1;正确 5.3 if语句 上例中的程序段有四个,请判断哪个是正确的?程序3: y=-1; If(x!=0) If(x0) y=1; Else y=0; 5.3 if语句 上例中的程序段有四个,请判断哪个是正确的? 程序4: y=0; if(x=0) if(x0) y=1; else y=-1;6. “表达式表达式2”和和“表达式表达式3”不仅可以是数值表达式,还可不仅可以是数值表达式,还可以是赋值表达式或函数表达式。以是赋值表达式或函数表达式。 例如:例如: ab? (a=100) : (b=100) ab? printf(“%d”,a) : printf(“%d”,b)7. 条件表达式中,表达式的类型可以与表达式和表达条件表达式中,表达式的类型可以与表达式和表达式的类型不同式的类型不同,此时表达式的值的类型为二者中较高的此时表达式的值的类型为二者中较高的类型类型 例如:例如: x? a : b xy? 1 : 1.5 5.3 if语句 例例5.45.4输入一个字符,判别它是否大写字母,如果是,将输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。得到的字符。 #include #include void main ( ) void main ( ) char char chch; ; scanf(%cscanf(%c,& ,& chch);); chch= =( (chch=A& =A& chch=Z)?(ch+32):ch;=Z)?(ch+32):ch; printf(%cn,chprintf(%cn,ch);); 如果字符变量ch的值为大写字母,则条件表达式的值为(),即相应的小写字母。如果ch的值不是大写字母,则条件表达式的值为,即不进行转换。 注意:注意:执行完一个执行完一个case后面的语后面的语句后,流程控制转移到下一句后,流程控制转移到下一 个个case继续执行。继续执行。“case常量表达常量表达式式”只是起语句标号作用,并不只是起语句标号作用,并不是在条件判断。在执行是在条件判断。在执行 switch语句时,根据语句时,根据switch后面表达式后面表达式的值,找到匹配的入口标号,就的值,找到匹配的入口标号,就从此标号开始执行下去,不再进从此标号开始执行下去,不再进行判断。行判断。应该在执行一个应该在执行一个case分分支后支后,可以用一个可以用一个 break语句来语句来终止终止switch语句的执行。语句的执行。#include void main ( ) int c,s;float p,w,d,f;scanf(%f,%f,%d,&p,&w,&s);if(s=3000) c=12;else c=s/250;switch(c) case 0:d=0;break; case 1:d=2;break; case 2:case 3:d=5;break; case 4:case 5:case 6:case 7:d=8;break; case 8:case 9:case 10: case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100.0);printf(freight=%15.4fn,f); 5.5 程序举例 例例5 56 6 求求x x2 2方程的解。方程的解。基本的算法:基本的算法: ,不是二次方程。,不是二次方程。 b b2 2,有两个相等实根。,有两个相等实根。 b b2 2,有两个不等实根。,有两个不等实根。 b b2 2,有两个共轭复根。,有两个共轭复根。 #include #include void main ( ) float a,b,c,disc,x1,x2,realpart,imagpart; scanf(%f,%f,%f,&a,&b,&c); printf(the equation ); if(fabs(a)=1e-6)printf(is not a quadraticn); else disc=b*b-4*a*c; if(fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(has distinct real roots:%8.4f and %8.4fn,x1,x2); elserealpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(has complex rootsn); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号