版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第 4 4章选择结构程序设计章选择结构程序设计 4.1 4.1 关系运算符与关系表达式关系运算符与关系表达式 4.2 4.2 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 4.3 4.3 选择结构控制语句选择结构控制语句 4.4 4.4 条件运算符和条件表达表条件运算符和条件表达表 4.5 4.5 选择结构程序综合举例选择结构程序综合举例24.1 关系运算符与关系表达式关系运算也称为比较运算,也就是对两个运算数的大小关系关系运算也称为比较运算,也就是对两个运算数的大小关系进行比较,判定两个数值之间的关系。关系运算的结果只有进行比较,判定两个数值之间的关系。关系运算的结果只有真和假两种,由于
2、真和假两种,由于C C语言没有设置逻辑类型数据,因此,关系语言没有设置逻辑类型数据,因此,关系表达式的运算结果只能是表达式的运算结果只能是1 1或或0 0,整数,整数1 1表示真,表示真,0 0表示假。表示假。运算符运算符作用作用运算数运算数结合性结合性优先级优先级 小于小于双目双目左结合左结合1010= 大于大于双目双目左结合左结合1010=大于等于大于等于双目双目左结合左结合1010=等于等于双目双目左结合左结合9 9!=!=不等于不等于双目双目左结合左结合9 93例如:例如:(1) (1) 比较整型变量比较整型变量k k大于大于0 0,表达式为:,表达式为:k0k0(2) (2) 比较考
3、试成绩比较考试成绩scorescore大于等于大于等于6060,表达式为:,表达式为:score=60score=60(3) (3) 比较整型变量比较整型变量k k模模2 2等于等于0 0,即判断,即判断k k是否是偶数:是否是偶数:k%2=0k%2=0(4) (4) 比较字符变量比较字符变量chch的值等于的值等于AA,表达式为:,表达式为:ch!=Ach!=A由于关系运算符经常与算术运算符和赋值运算符等组成复杂的由于关系运算符经常与算术运算符和赋值运算符等组成复杂的表达式,因此进行运算时,需要考虑它们之间的优先级关系,表达式,因此进行运算时,需要考虑它们之间的优先级关系,关系运算符的优先级
4、关系运算符的优先级低于低于算术运算符,但是算术运算符,但是高于高于赋值运算符。赋值运算符。例如:例如:(1) (1) 表达式表达式k%2=0k%2=0等价于等价于(k%2)=0(k%2)=0,是判断,是判断k%2k%2的结果是否与的结果是否与0 0相等,这是一个关系表达式。相等,这是一个关系表达式。(2) (2) 表达式表达式a=53a=53等价于等价于a=(53)a=(53),是把,是把5353的结果的结果1 1赋值给赋值给a a,这,这是一个赋值表达式。是一个赋值表达式。例例4-14-1:阅读程序:阅读程序 #include #include int main() int main() i
5、nt k=3,score=75; int k=3,score=75; char ch = B; char ch = B; printf(k0 printf(k0的运算结果的运算结果: %dn,k0);: %dn,k0); printf(score=60 printf(score=60的运算结果的运算结果: %dn,score=60);: %dn,score=60); printf(k%2=0 printf(k%2=0的运算结果的运算结果: %dn,k%2=0);: %dn,k%2=0); printf(ch!=A printf(ch!=A的运算结果的运算结果: %dn,ch!=A);: %dn
6、,ch!=A); return 0; return 0; k0k0的运算结果的运算结果: 1: 1score=60score=60的运算结果的运算结果: 1: 1k%2=0k%2=0的运算结果的运算结果: 0: 0ch!=Ach!=A的运算结果的运算结果: 1: 154.2 逻辑运算符与逻辑表达式有时程序中需要判断的条件比较复杂,是由多个简单条件组有时程序中需要判断的条件比较复杂,是由多个简单条件组成的复合条件。成的复合条件。C C语言使用逻辑运算符和逻辑表达式解决复杂条件的表示。语言使用逻辑运算符和逻辑表达式解决复杂条件的表示。运算符运算符作用作用运算数运算数结合性结合性优先级优先级&
7、;逻辑与逻辑与双目双目左结合左结合5 5|逻辑或逻辑或双目双目左结合左结合4 4! !逻辑非逻辑非单目单目右结合右结合14146逻辑运算符连接运算数构成的式子称为逻辑表达式。与关系运逻辑运算符连接运算数构成的式子称为逻辑表达式。与关系运算相同,逻辑表达式的运算结果也只有真(算相同,逻辑表达式的运算结果也只有真(1 1)和假()和假(0 0)两种,)两种,但是逻辑表达式要求其但是逻辑表达式要求其运算数运算数也必须也必须是是表示真和假的表示真和假的逻辑值逻辑值。C C语言中,判断运算数的真假时,任何非语言中,判断运算数的真假时,任何非0 0数值被判定为真,只有数值被判定为真,只有0 0才被判定为假
8、。才被判定为假。a ab b!a!aa&ba&ba|ba|b真真( (非非0)0)真真( (非非0)0)假假(0)(0)真真(1)(1)真真(1)(1)真真( (非非0)0)假假(0)(0)假假(0)(0)假假(0)(0)真真(1)(1)假假(0)(0)真真( (非非0)0)真真(1)(1)假假(0)(0)真真(1)(1)假假(0)(0)假假(0)(0)真真(1)(1)假假(0)(0)假假(0)(0)7例如:例如:(1) (1) 判断整型变量判断整型变量k k的值是否在的值是否在0,1000,100之间,表达式为:之间,表达式为:k=0&k=0&k=A&
9、c=A&c0&k%2=1k0&k%2=1(4) (4) 判断年份判断年份y y是否为闰年,表达式为:是否为闰年,表达式为:y%4=0&y%100!=0|y%400=0y%4=0&y%100!=0|y%400=0逻辑表达式计算过程中,为了提高程序运行效率,逻辑表达式计算过程中,为了提高程序运行效率,C C语言在逻辑运算语言在逻辑运算中使用了中使用了“短路运算短路运算”规则规则。即除了要考虑表达式中各个运算符的运。即除了要考虑表达式中各个运算符的运算规则、优先级和结合性外,还需要遵循以下两条规则:算规则、优先级和结合性外,还需要遵循以下两条规则:(1) (1
10、) 逻辑表达式从左向右依次计算各个运算数的值。逻辑表达式从左向右依次计算各个运算数的值。(2) (2) 在上述从左向右计算过程中,任何时候只要能够确定最终逻辑表在上述从左向右计算过程中,任何时候只要能够确定最终逻辑表达式的值,则计算过程结束。达式的值,则计算过程结束。84.3 选择结构控制语句程序设计中选择结构程序对应的常见问题分为三种情况:程序设计中选择结构程序对应的常见问题分为三种情况:(1) (1) 决定某个操作做还是不做,称为决定某个操作做还是不做,称为单分支选择结构单分支选择结构,对某,对某个问题的处理经常是根据某个条件进行判断,如果条件成立,个问题的处理经常是根据某个条件进行判断,
11、如果条件成立,则执行特定的语句来处理问题,否则什么都不做。则执行特定的语句来处理问题,否则什么都不做。(2) (2) 决定在两个相关的操作中选择哪一个来做,称为决定在两个相关的操作中选择哪一个来做,称为双分支双分支选择结构选择结构,需要处理的两个操作往往和同一个条件相关,当,需要处理的两个操作往往和同一个条件相关,当条件成立时做一个操作,当条件不成立时做另外一个操作。条件成立时做一个操作,当条件不成立时做另外一个操作。(3) (3) 确定在多个相关的操作中选择哪一个来做,称为确定在多个相关的操作中选择哪一个来做,称为多分支多分支选择结构选择结构,该类问题相比前两种问题要复杂的多,它通常涉,该类
12、问题相比前两种问题要复杂的多,它通常涉及多个条件的组合运用,通常的做法是将多个条件合理安排,及多个条件的组合运用,通常的做法是将多个条件合理安排,把多分支结构处理成多个双分支的结构处理把多分支结构处理成多个双分支的结构处理。C C语言提供语言提供ifif和和switchswitch两种选择结构控制语句,通过使用这两种选择结构控制语句,通过使用这两种语句或语句组合解决上述三种情况的选择结构程序设计。两种语句或语句组合解决上述三种情况的选择结构程序设计。语句语句真真假假表达式表达式1. if1. if语句的最简单形式语句的最简单形式单分支单分支ifif语句:语句:说明:说明:1. 1. 条件表达式
13、的值为条件表达式的值为1 1或或0 0,必须用,必须用( )( )括住括住 2. 2. 若有多条语句(复合语句)时,用若有多条语句(复合语句)时,用 括住。括住。 3. (3. (条件表达式条件表达式) )后不要加;后不要加;if (if (条件表达式条件表达式) ) 语句;语句;if (if (条件表达式条件表达式) ) 语句;语句; 语句;语句; 例例4-24-2:从键盘输入一个整数,计算并输出其绝对值。:从键盘输入一个整数,计算并输出其绝对值。 #include #include int main() int main() int x; int x; printf(Input an in
14、teger: ); printf(Input an integer: ); scanf(%d, &x); scanf(%d, &x); if(x0) if(x0) x=-x; / x=-x; /只有本句是只有本句是ifif结构的语句结构的语句 printf(|x|=%dn,x);printf(|x|=%dn,x); return 0; return 0; Input an integer: -10Input an integer: -10 |x|=10|x|=10Input an integer: 100Input an integer: 100 |x|=100|x|=100例
15、例4-34-3:从键盘输入两个整数:从键盘输入两个整数a a和和b b,要求程序按数值从大到小的,要求程序按数值从大到小的顺序输出这个整数。顺序输出这个整数。思路分析:求解本题有多种方法,这里使用交换变量值的思路,思路分析:求解本题有多种方法,这里使用交换变量值的思路,(1) (1) 输入整数输入整数a a和和b b的值。的值。(2) (2) 判断条件判断条件abab是否成立,如果成立,则交换变量是否成立,如果成立,则交换变量a a和和b b的值,的值,否则直接执行下一步。否则直接执行下一步。(3) (3) 按照先按照先a a后后b b的顺序输出两个变量的值。的顺序输出两个变量的值。 #inc
16、lude #include int main() int main() int a,b,c; int a,b,c; printf(Input 2 integers(a b):); printf(Input 2 integers(a b):); scanf(%d%d,&a,&b); scanf(%d%d,&a,&b); if(ab) if(ab) / /由于交换操作需要三条语句完成,所以使用复合语句由于交换操作需要三条语句完成,所以使用复合语句 c=a; a=b; b=c; c=a; a=b; b=c; printf(%d,%dn,a,b); printf(%d,
17、%dn,a,b); return 0; return 0; Input 2 integers(a b):100 10Input 2 integers(a b):100 10 100,10100,10Input 2 integers(a b):10 100Input 2 integers(a b):10 100 100,10100,102.2.双分支双分支ifif语句语句if (if (表达式表达式) ) 语句语句1 1else else 语句语句2 2首先先判断表达式的值首先先判断表达式的值若为非若为非0 0则执行语句则执行语句1 1若为若为0 0则执行语句则执行语句2 2语句语句1 1真真假
18、假语句语句2 2表达式表达式执行过程:执行过程:ifif语句的双分支形式,语句的双分支形式,在语法上在语法上视为一条语句。视为一条语句。例例4-44-4:判断整数的奇偶性。从键盘输入一个整数:判断整数的奇偶性。从键盘输入一个整数x x,根据其奇,根据其奇偶性输出偶性输出x x是奇数或是奇数或x x是偶数。是偶数。 #include #include int main() int main() int x; int x; printf(Input an integer: ); printf(Input an integer: ); scanf(%d,&x); scanf(%d,&
19、x); if(x%2=0) if(x%2=0) printf(%d is printf(%d is eveneven number.n,x); / number.n,x); /真真 分支分支 elseelse printf(%d is printf(%d is oddodd number.n,x); / number.n,x); /假假 分支分支 return 0;return 0; Input an integer: 12Input an integer: 12 12 is even number.12 is even number.Input an integer: 5Input an i
20、nteger: 5 5 is odd number.5 is odd number.例例4-54-5:修改例:修改例3-63-6使用海伦公式计算三角形面积程序的要求,当输入使用海伦公式计算三角形面积程序的要求,当输入的三个边长能够构成三角形时,计算面积;否则,输出不能构成三角的三个边长能够构成三角形时,计算面积;否则,输出不能构成三角形。形。思路分析:三角形面积的计算过程与原例题相同,新要求是在思路分析:三角形面积的计算过程与原例题相同,新要求是在“三个三个边长能构成三角形边长能构成三角形”这一条件成立时才进行计算面积,否则直接输出这一条件成立时才进行计算面积,否则直接输出提示信息。根据数学知
21、识,这一条件可以描述为提示信息。根据数学知识,这一条件可以描述为“任意两个边长之和任意两个边长之和大于第三个边长大于第三个边长”,输入三个边长,输入三个边长a a、b b、c c后,条件可以使用如下的后,条件可以使用如下的逻辑表达式描述:逻辑表达式描述:a+ba+bc & c & a+ca+cb & b & b+cb+caa #include #include #include #include int main() int main() double a,b,c,s,area; double a,b,c,s,area; printf(Input a b c:
22、); printf(Input a b c: ); scanf(%lf%lf%lf,&a,&b,&c); scanf(%lf%lf%lf,&a,&b,&c); if(a+bc & a+cb & b+ca) if(a+bc & a+cb & b+ca) / /真真 分支使用复合语句分支使用复合语句 s=(a+b+c)/2;s=(a+b+c)/2; area=sqrt(s area=sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c);(s-c); printf(area=%.2fn,are
23、a); printf(area=%.2fn,area); else else printf(Not a triangle.n); / printf(Not a triangle.n); /假假 分支只有一条语句分支只有一条语句 return 0;return 0; Input a b c: 3.5 4.5 5.5Input a b c: 3.5 4.5 5.5 area=7.85area=7.85Input a b c: 3.0 4.0 10.0Input a b c: 3.0 4.0 10.0 Not a triangle.Not a triangle.3.3.使用嵌套使用嵌套ifif语句实
24、现多分支结构语句实现多分支结构 ifif语句语句的语句的语句1 1和语句和语句2 2又称为又称为ifif的执行语句。的执行语句。ifif的的执行语句在语法上是一条语句,可以是任何类型的语句,执行语句在语法上是一条语句,可以是任何类型的语句,简单语句、复合语句、空语句、流程控制语句都可以作简单语句、复合语句、空语句、流程控制语句都可以作为为ifif的执行语句。的执行语句。 下面我们通过一个例子分别介绍用不同的语句下面我们通过一个例子分别介绍用不同的语句作为作为ifif的执行语句的情形:的执行语句的情形:例:计算分段函数:例:计算分段函数:y=2*xx= -102+x-10 x=0 x-20 x1
25、0方法一:用简单语句方法一:用简单语句#includemain( ) float x,y; scanf(“%f”,&x); if(x=-10) y=2*x; if(-10 x&x=0) y=2+x; if(0 x&x10) y=x/10; printf(“y=%fn”,y); 方法二:用方法二:用ifif语句做语句语句做语句2 2#includemain( ) float x,y; scanf(“%f”,&x); if(x=-10) y=2*x; else if(x=0) y=2+x; else if(x=10) y=x-2; else y=x/10; prin
26、tf(“y=%fn”,y); 这种用这种用ifif语句作为上一层语句作为上一层ifif语句的语句语句的语句2 2的结构,的结构,称为称为ifif语句的多分支选择结构语句的多分支选择结构。if (if (表达式表达式) ) 语句语句1 1 else if ( else if (表达式表达式) )语句语句2 2 else else 先判断表达式先判断表达式1 1的值的值非非0 0就执行下面的语句就执行下面的语句为为0 0就执行下一个判断就执行下一个判断一直这样做下去一直这样做下去表达式表达式1 1真真语句语句1 1假假表达式表达式2 2表达式表达式3 3语句语句4 4语句语句3 3语句语句2 2真
27、真真真假假假假直到得出最后结果直到得出最后结果流程图如左:流程图如左:方法三:语句方法三:语句1 1与语句与语句2 2都为都为ifif语句语句#includemain( ) float x,y; scanf(“%f”,&x); if(x= -10) y=2+x; else y=2*x; else if(x=10) y=x-2; else y=x/10; printf(“ny=%f”,y); 这种用这种用ifif语句作为上一层语句作为上一层ifif语句的语句语句的语句1 1和语句和语句2 2的结构,称为的结构,称为ifif语句的嵌套语句的嵌套。if if 语句的二层嵌套结构如下:语句的二
28、层嵌套结构如下:if ( 表达式表达式1) if ( 表达式表达式1_2) 语句语句1_1 else 语句语句1_2else if ( 表达式表达式2_1) 语句语句2_1 else 语句语句2_2表达式表达式1_21_2表达式表达式1 1表达式表达式1_21_2语句语句1_11_1语句语句1_21_2语句语句2_12_1语句语句2_22_2非非0 00 00 0非非0 00 0非非0 0if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4内嵌内嵌if内嵌内嵌ifif
29、(expr1) if (expr2) statement1 else statement2内嵌内嵌ifif (expr1) if (expr2) statement1else statement3 内嵌内嵌ifif (expr1) statement1else if(expr3) statement3 else statement4内嵌内嵌ififif语句嵌套语句嵌套if else if else 配对原则配对原则:C C语言规定,语言规定,elseelse总是与前面总是与前面离它最近离它最近的同一语句块(复合语句)中的尚的同一语句块(复合语句)中的尚未匹配过的未匹配过的ifif进行匹配。进行
30、匹配。if()if()if()if()if()if()elseelseelseelseelseelse实实现现if else 正正确确配配对对方方法法例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);实现实现if else if else 正确配对方法:加正确配对方法:加 3. switch3. switch语句语句使用使用ifif语句嵌套解决实际问题中的多分支选择时,如果分支数目语句嵌套解决实际问题中的多
31、分支选择时,如果分支数目非常多,那么非常多,那么ifif语句的嵌套层数也会很多,使得程序代码变得冗语句的嵌套层数也会很多,使得程序代码变得冗长而且可读性会下降。长而且可读性会下降。C C语言提供了语言提供了switchswitch语句来处理多分支选语句来处理多分支选择。择。switchswitch语句的语法形式如下:语句的语法形式如下:switch(switch(表达式表达式) case case 常量常量1: 1: 语句或语句组语句或语句组1; 1; case case 常量常量2: 2: 语句或语句组语句或语句组2; 2; case case 常量常量n: n: 语句或语句组语句或语句组n
32、; n; default: default: 语句或语句组语句或语句组n+1;n+1; switch语句语句#include #include int main() int main() char ch; char ch; printf(Input a character: ); printf(Input a character: ); ch=getchar(); ch=getchar(); switch(ch) switch(ch) caseA: putchar(ch); caseA: putchar(ch); caseB: putchar(ch); caseB: putchar(ch);
33、caseC: putchar(ch); caseC: putchar(ch); return 0; return 0; Input a character: Input a character: ch的值为的值为A时,输出为:时,输出为:AAAch的值为的值为B时,输出为:时,输出为:BBch的值为的值为C时,输出为:时,输出为:C#include #include intint main() main() char char chch; ; printf(Inputprintf(Input a character: ); a character: ); chch= =getchargetch
34、ar();(); switch(chswitch(ch) ) caseAcaseA: : putchar(chputchar(ch););break;break; caseBcaseB: : putchar(chputchar(ch););break;break; caseCcaseC: : putchar(chputchar(ch););break;break; default: printf( default: printf(不是不是ABCABC字符字符); return 0; return 0; Input a character: Input a character: ch的值为的值为
35、A时,输出为:时,输出为:Ach的值为的值为B时,输出为:时,输出为:Bch的值为的值为C时,输出为:时,输出为:Cch的值为其它时,输出为:不是的值为其它时,输出为:不是ABC字符字符例例4-74-7:从键盘上输入一个字符,判断并输出它是数字、空格还是其他字符,:从键盘上输入一个字符,判断并输出它是数字、空格还是其他字符,如果是空格,则输出空格提示如果是空格,则输出空格提示; ;如果是数字,则输出是哪一个数字;如果是如果是数字,则输出是哪一个数字;如果是其它字符,则输出其它提示。其它字符,则输出其它提示。思路分析:从题目可知,需要判断分支比较多,包括思路分析:从题目可知,需要判断分支比较多,
36、包括1010个数字字符、个数字字符、1 1个空个空格字符和其他字符共格字符和其他字符共1212个分支,使用个分支,使用switchswitch语句解决该问题比较方便,同时语句解决该问题比较方便,同时仔细分析可以发现仔细分析可以发现1010个数字字符的处理方式是相同的,因此这个数字字符的处理方式是相同的,因此这1010个分支可以个分支可以共用同一组语句,程序流程如图共用同一组语句,程序流程如图4-104-10所示。所示。 #include #include int main() int main() char ch; char ch; printf(Input a character: ); p
37、rintf(Input a character: ); ch=getchar(); ch=getchar(); switch(ch) switch(ch) case 0: case 0: case 1: case 1: case 2: case 2: case 3: case 3: case 4: case 4: case 5: case 5: case 6: case 6: case 7: case 7: case 8: case 8: case 9: case 9: printf(digit:%cn,ch); printf(digit:%cn,ch); break; break; case
38、 : case : printf(spacen); printf(spacen); break; break; default: default: printf(othern); printf(othern); return 0; return 0; Input a character: 5Input a character: 5 digit:5digit:5Input a character: Input a character: spacespaceInput a character: AInput a character: A otherother使用使用switchswitch语句的注
39、意事项语句的注意事项P61-62P61-62(1) switch(1) switch后面表达式的值的类型必须是整型、字符型或枚举类后面表达式的值的类型必须是整型、字符型或枚举类型。每一个型。每一个casecase常量的类型必须与表达式值的类型相同,而且每常量的类型必须与表达式值的类型相同,而且每个个casecase常量的值必须是互不相同的。常量的值必须是互不相同的。(2) default(2) default分支是分支是可选可选的,当一个的,当一个switchswitch语句中没有语句中没有defaultdefault分分支时,如果没有与支时,如果没有与switchswitch表达式的值相同的
40、表达式的值相同的casecase常量,则不执行常量,则不执行任何语句,程序转移到任何语句,程序转移到switchswitch语句的下一条语句执行。语句的下一条语句执行。(3) (3) 各个各个casecase分支及分支及defaultdefault分支的分支的出现次序出现次序可以交换,无论如可以交换,无论如果排列各个分支的次序,总是按照果排列各个分支的次序,总是按照switchswitch表达式的值来选择某个表达式的值来选择某个分支执行。分支执行。(4)(4)一个一个casecase块内的代码执行完毕,如果块内的代码执行完毕,如果没有遇到没有遇到breakbreak,后面还,后面还有有case
41、case块,则继续执行该块,则继续执行该casecase块内的代码。块内的代码。4.4.条件运算符和条件表达式条件运算符和条件表达式条件运算符是条件运算符是C C语言中唯一的一个三元运算符,使用条件运算符语言中唯一的一个三元运算符,使用条件运算符构成的表达式称为条件表达式,其一般形式如下:构成的表达式称为条件表达式,其一般形式如下:表达式表达式1 ? 1 ? 表达式表达式2 2 : : 表达式表达式3 3条件表达式的计算过程是:首先计算表达式条件表达式的计算过程是:首先计算表达式1 1的值;如果值为真的值;如果值为真(非(非0 0),则计算表达式),则计算表达式2 2的值作为条件表达式的值;否
42、则,计算的值作为条件表达式的值;否则,计算计算表达式计算表达式3 3的值作为条件表达式的值。的值作为条件表达式的值。例例4-84-8:使用条件运算实现从键盘输入两个整数,输出其较大的:使用条件运算实现从键盘输入两个整数,输出其较大的值。值。 #include #include int main() int main() int max, a, b; int max, a, b; printf(Input two integers: ); printf(Input two integers: ); scanf(%d%d, &a,&b); scanf(%d%d, &a,&a
43、mp;b); max = ab ? a : b; max = ab ? a : b; printf(max=%dn,max); printf(max=%dn,max); return 0; return 0; Input two integers: 5 10Input two integers: 5 10 max=10max=10Input two integers: 15 10Input two integers: 15 10 max=15max=15条件运算符和条件表达式条件运算符和条件表达式(1 1)条件运算符的优先级高于赋值运算符,而低于其他所)条件运算符的优先级高于赋值运算符,而低于
44、其他所有的运算符;有的运算符; 如:如:min=ab?bmin=ab?b* *b:ab:a* *a;a;(2 2)条件运算符是左结合的;)条件运算符是左结合的; 如:如:flag=a0?1:a=0?0:1;flag=a0?1:a=0?0:1;(3 3)条件表达式中)条件表达式中3 3个表达式的类型可以不同,其中表达式个表达式的类型可以不同,其中表达式2 2和表达式和表达式3 3中类型较高的一个决定条件表达式的类型;中类型较高的一个决定条件表达式的类型; 如:如:max=ab?3.14:100;max=ab?3.14:100;例例4-9求一元二次方程求一元二次方程ax2+bx+c=0的所有根。的
45、所有根。#include#includeintmain()doublea,b,c,d,p,q;printf(Inputabc:);scanf(%lf%lf%lf,&a,&b,&c);if(fabs(a)1e-6)printf(Error:acannotbe0!n);elsed=b*b-4*a*c;p=-b/(2*a);if(fabs(d)0)q=sqrt(d)/(2*a);printf(Tworealroots:%.4f,%.4fn,p+q,p-q);elseq=sqrt(-d)/(2*a);printf(Twocomplexroots:%.4f+%.4fi,%.4f-
46、%.4fin,p,q,p,q);return0;Input a b c:0 1 2 Input a b c:0 1 2 Error: a can not be 0!Error: a can not be 0!Input a b c:Input a b c:2.2.0 0 4.04.0 2.02.0 Two same roots:-1.0000Two same roots:-1.0000Input a b c:1.0 2.0 -3.0 Input a b c:1.0 2.0 -3.0 Two real roots:1.0000 -3.0000Two real roots:1.0000 -3.0000Input a b c:1.0 2.0 4.0 Input a b c:1.0 2.0 4.0 Two comples roots:Two comples roots:1.0000 +1.7321i1.0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业机器人运维工程师职业发展新机遇
- 护理科研方法教学模板
- 护理礼仪的心理学基础
- 护理院级护理科研方法
- 硝酸铵中和工岗前变革管理考核试卷含答案
- 木焦油工岗前活动策划考核试卷含答案
- 冲压工风险评估能力考核试卷含答案
- 飞机外勤弹射救生工操作管理测试考核试卷含答案
- 工业车辆维修工安全专项模拟考核试卷含答案
- 2026年新科教版高中高二生物下册第三单元免疫调节过程特点卷含答案
- 保密管理方案和措施
- 仪表联锁培训课件
- 职工退休及养老待遇证明书(6篇)
- 可再生能源法解读
- 殡仪服务员职业技能竞赛考试题(附答案)
- 车间材料损耗管理制度
- 实验动物咽拭子采集流程规范
- 《神奇的马达加斯加》课件
- 《城市道路人行道设施设置规范》
- 初一到初三英语单词表2182个带音标打印版
- 《25 黄帝的传说》公开课一等奖创新教学设计及反思
评论
0/150
提交评论