《第四章选择结构程序设计if语句.ppt》由会员分享,可在线阅读,更多相关《第四章选择结构程序设计if语句.ppt(14页珍藏版)》请在优知文库上搜索。
1、 4.3 if语句语句1.if1.if语句的三种基本形式语句的三种基本形式(1)if(1)if(表达式)(表达式) 语句语句例:例: if(xy) printf(“%d”,x);表达式表达式语句语句真(非真(非0)假假(0)(2)if(2)if(表达式表达式) ) 语句语句1 1 else else 语句语句2 2例:例: if (xy) printf(“%d”,x); else printf(“%d”,y); 条件条件 语句语句1 语句语句2YN(3)if(3)if(表达式(表达式1 1) 语句语句1 1 else if( else if(表达式表达式2)2) 语句语句2 2 else if
2、( else if(表达式表达式3)3) 语句语句3 3 else if( else if(表达式表达式m)m) 语句语句m m else else 语句语句n n例:例: if (number500)if (number500) cost=0.15; cost=0.15; else if(number300) else if(number300) cost=0.10; cost=0.10; else if(number100) else if(number100) cost=0.075; cost=0.075; else if(number50) else if(number50) cost
3、=0.05; cost=0.05; else cost=0; else cost=0;说明:说明:(1)3(1)3种形式的种形式的ifif语句中在语句中在ifif后面都有表达式,后面都有表达式, 一般为逻辑表达式或关系表达式。一般为逻辑表达式或关系表达式。(2)(2)第二,第三种形式的第二,第三种形式的ifif语句中,在每个语句中,在每个 elseelse前面有一个分号,整个语句结束处有一前面有一个分号,整个语句结束处有一 个分号。个分号。(3)(3)在在ifif和和elseelse后面可以只含有一个内嵌的操后面可以只含有一个内嵌的操 作语句,也可以由多个操作语句,此时用花作语句,也可以由多个
4、操作语句,此时用花 括号将几个语句括起来成为一个复合语句。括号将几个语句括起来成为一个复合语句。例例4.1 4.1 输入三个数输入三个数a,b,c,a,b,c,要求按由小到大的顺序输出。要求按由小到大的顺序输出。if ab if ab 将将a a和和b b对换对换if ac if ac 将将a a和和c c对换对换if bcif bc 将将b b和和c c对换对换#include int main( )float a,b,c,t;scanf(%f%f%f,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf
5、(%5.2f,%5.2f,%5.2fn,a,b,c);return 0; 2.if2.if语句的嵌套语句的嵌套在在ifif语句中又包含一个或多个语句中又包含一个或多个ifif语句称为语句称为ifif语句的嵌套。语句的嵌套。形式:形式:if()if()if() if() 语句语句1 1else else 语句语句2 2elseelseif() if() 语句语句3 3else else 语句语句4 4匹配规则:匹配规则:ElseElse总是与它上面的,最近的,统一复合语句中的,未配总是与它上面的,最近的,统一复合语句中的,未配对的对的ifif语句配对。语句配对。例:例:if()if()if()
6、if() 语句语句1 1elseelseif() if() 语句语句2 2else else 语句语句3 3例:例:if()if()if() if() 语句语句11elseelseif() if() 语句语句2 2else else 语句语句3 3当当ifif和和elseelse数目不同时,可以加数目不同时,可以加花括号花括号来确定配对关系。来确定配对关系。 -1 (x0)#include int main( )float x,y; scanf(%f,&x); if(x0) y=-1; else if(x=0) y=0; else y=1; printf(x=%5.2f,y=%5.2fn,x,
7、y); return 0; 上例中的上例中的红色字红色字对应的程序段可以有多个不同的形式。对应的程序段可以有多个不同的形式。下面列举了四种,同学们还能写出其他的形式吗?下面列举了四种,同学们还能写出其他的形式吗?程序程序1: 程序程序2: if(x=0) y= -1; if(x0) y=1; else else y=0; if(x=0) else y= -1; if(x0) y=0; else y=1;程序程序3: 程序程序4: y= -1; y=0; if(x=0) if(x!=0) if(x0) y=1; if(x0) y=1; else y=0; else y= -1;3.3.条件运算符
8、条件运算符格式:格式: 表达式?表达式表达式?表达式表达式表达式 功能:功能: 判断判断表达式表达式1 1的值,如果成立(表达式的值,如果成立(表达式1 1 的值为真)就执行的值为真)就执行表达式表达式2 2,否则就执,否则就执 行行表达式表达式3 3使用场合:若在语句中,当被判别的表达式的使用场合:若在语句中,当被判别的表达式的 值为值为“真真”或或“假假” ” 时,都执行一个时,都执行一个 赋值语句且向赋值语句且向同一个变量同一个变量赋值时,可以赋值时,可以 用一个条件运算符来处理。用一个条件运算符来处理。 例:例: ()() = =; ;当当abab时将时将a a的值赋给的值赋给maxm
9、ax,当,当abab时将时将b b的值赋给的值赋给maxmax,可以看到无论可以看到无论abab是否满足,都是向同一个变量赋值。是否满足,都是向同一个变量赋值。 可以用下面的条件运算符来处理:可以用下面的条件运算符来处理: ()?)?;说明:说明:(1)(1)条件运算符的执行顺序:先求解表达式,若为非(真)条件运算符的执行顺序:先求解表达式,若为非(真) 则求解表达式,此时表达式的值就作为整个条件表达式则求解表达式,此时表达式的值就作为整个条件表达式 的值。若表达式的值为(假),则求解表达式,表达的值。若表达式的值为(假),则求解表达式,表达 式的值就是整个条件表达式的值。式的值就是整个条件表
10、达式的值。 (2)(2)条件运算符优先级高于赋值运算符条件运算符优先级高于赋值运算符 ,低于关系运算符,低于关系运算符 和算术运算符。和算术运算符。 (3)(3)条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左”。 ( (4)“4)“表达式表达式2”2”和和“表达式表达式3”3”不仅可以是数值表达式,还可以不仅可以是数值表达式,还可以 是赋值表达式或函数表达式。是赋值表达式或函数表达式。(5)(5)条件表达式中,表达式的类型可以与表达式和表达条件表达式中,表达式的类型可以与表达式和表达 式的类型不同。式的类型不同。 例例4.24.2输入一个字符,判别它是否大写字母,如果是,将输入
11、一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。得到的字符。 #include #include int main ( ) int main ( ) char ch; char ch; scanf(%c,& ch); scanf(%c,& ch); ch= ch=(ch=A& ch=A& ch=Z)?(ch+32):ch; printf(%cn,ch); printf(%cn,ch); return 0; return 0; 如果字符变量如果字符变量chch的值为大写字母,则条件表达的值为大写字母,则条件表达式的值为(),即相应的小写字母。式的值为(),即相应的小写字母。如果如果chch的值不是大写字母,则条件表达式的值的值不是大写字母,则条件表达式的值为,即不进行转换。为,即不进行转换。