else if(score>59) grade=‘3’; else grade=‘2’; 说明:
(1)if语句中的表达式可以是C语言的合法表达式。
(2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。
(3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“{ }“将几个语句括起来,构成一个复合语句。
例4.1 将两个数中较大者赋给 s。 main() { int a,b,s; a=10;b=20; if(a>b) s=a; else s=b;
printf(“s=%d\\n”,s); }
执行结果: s=20
例4.2 比较两个数,按由大到小输出。
main( ) {
int a,b,x,y; a = 10; b = 20;
if (a>b) {x=a;y=b;} else {x=b;y=a;}
printf(“x=%d,y=%d\\n”,x,y); }
执行结果: x=20,y=10 4.2.2 if语句的嵌套
在if 语句中又包含一个或多个if语句,称为if语句的嵌套。一般形式如下: if( )
if( ) 〈语句1〉 else 〈语句2〉 else
if( ) 〈语句3〉 else 〈语句4〉 if( )
if( ) 〈语句1〉
else
if( ) 〈语句2〉 else 〈语句3〉 说明:
(1)if与else的配对关系,从最内层开始,else总是与离它最近的未曾配对的if配对。
(2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。
(3)如果if与else的个数不相同,可以用花括号来确定配对关系。例如: If ( )
{if( )〈语句1〉} else
〈语句2〉
这时{ }限定了内嵌if 语句的范围,因此else与第一个if配对。 例4.3 有一函数
编一程序,输入一个x值,输出y 值。 main( ) { int x,y;
scanf(“%d”,&x);
if(x<0) y=-1; else if(x==0) y=0; else y=1;
printf(“x=%d,y=%d\\n”,x,y);} 4.2.3 条件运算符
如果if语句的形式如下所示: if(表达式1) x=〈表达式2〉; else
x=〈表达式2〉;
无论表达式1为“真”还是为“假”,都只执行一个赋值语句且给同一个变量赋值。
可以利用条件运算符,将这种语句简单地用如下语句来表示。 x=〈表达式1〉?〈表达式2〉:〈表达式3〉;
说明:即当表达式1的值为“真”时,将表达式2的值赋给变量x;当表达式1的值为“假”时,将表达式3的值赋给变量x。 如:
a=5,b=10,c=20; x=a>b? c*b:c/b;
因为a>b为假,则x=c/b=2。
例4.4 输入两个数,并将其中较大者显示出来。 #include “stdio.h”
main( ) { int a,b,max;
scanf(“%d%d”,&a,&b); max=(a>b)? a:b;
printf(“max=%d”,max); }
条件运算符也可以嵌套使用,如:
Grade=(score>=90)?’A’:(score<=70)?’C’:’B’当score>=90时,将字符‘A’赋给变量grade; 当score<=70时,将字符‘C’赋给变量grade; 否则将字符‘B’赋给变量grade. 4.3 switch语句
Switch语句是多分支选择语句,其一般形式如下:Switch(表达式) {
case 〈常量表达式1〉:〈语句1〉 case 〈常量表达式2〉:〈语句2〉 ┆
case 〈常量表达式n〉:〈语句n〉 default:〈语句n+1〉 }
;