4.1 if语句的三种形式
作用:根据所指定的条件是否满足,决定从给定的两组操作选择其中之一。 1、if语句的三种格式: 1)简化形式
if(表达式) 语句块
如: if(x>y) printf(“%d”,x);
2)一般形式
if (表达式)
语句块1 else 语句块2 例如:
if (x>y)
printf(“max=%d”,x); else
printf(“max=%d”,y);
3)嵌套形式
• •
含义:一条if语句重又包含另一个if语句称为if语句的嵌套. 格式: if( )
if( ) 语句块1 else 语句块2 else
if( ) 语句块3 else 语句块4
内嵌if 内嵌if
注:1、右缩进格式的书写 2、嵌套条件的含义
例如:
if (score>90)
printf(“very good”); else
if(score>80)
printf(“good”); else
if(score>60)
printf(“ok”); else
printf(“bad”);
4)if与else语句的配对关系
a、if语句中if与else的配对关系为else总是与它上面的最近的if配对.书写格式的缩进与否与它们之间的配对无关. 例如:
if ( )
if ( ) 语句块1 else
语句块2
这时的else配对的对象为内层的if,而不是外层的if. b、要实行强行的配对关系可以利用{ }。 如: if ( )
{ if ( ) 语句块1 } else 语句块2
2.使用要点
1) 语句块:
当有若干条语句时,必须用{…}括起来,当只有一条语句时,用“;”。如:
if(a>b)
{ x=1;
max=a; }
2)if 表达式:
if语句的表达式一般情况下为逻辑表达式或关系表达式。 如:if (a= =b && x= =y) printf (“a=b,x=y”);
也可以是任意类型(包括整型、实型、字符型、指针类型) 例如:if („a‟) printf ( “%d”, ‟a‟ );
if („3‟) printf ( “OK!” ); 注意:“非零”与“零”的用法
请区分if(x=1)与if(x= =1)的不同。 设a=3,b=5,x=4,试分析如下程序区别: if (a= =b) x=5; 和if (a=b) x=5;
3、综合举例
例exp4_1 输入两个数,按数值将其按大小顺序输出. #include void main( ) { float a,b,t;scanf(“%f,%f”,&a,&b); if(a>b) {t=a;a=b;b=t;}
printf(“%5.2f,%5.2”,a,b); }
要点:交换两个数据的方法
例exp4_2 输入三个数按大小顺序输出. #include void main() { float a,b,c,t; if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;}printf(“%5.2f,%5.2f,%5.2f”,a,b,c); }
例exp4_3 有一函数如下,编程输出X的值。
-1 (x<0) y= 0 (x=0) 1 (x>0)
#include void 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); }
将上面的if语句改为: if(x>=0)
if(x>0) y=1; else y=0;
else y=-1;
将上述if语句改为: y=-1; if(x!=0)
if(x>0) y=1; else y=0;
将上述if语句改为: y=0; if(x>=0)
if(x>0) y=1; else y=-1;
讨论一下以上写法,哪些是错误的? 例exp4_3:写一程序判定某一年是否为闰年。
闰年的判定:某年能被4整除但不能被100整除或者能被4整除,又能被400整除.
例exp4_4:
#include main() { int year,leap;scanf(“%d”,&year); 请同学们考虑程序有无 其它简化形式
if(year%4= =0)
{ if (year%100= =0)
{ if (year%400= =0) leap=1; else leap=0;} else leap=1;}
else leap=0;
if(leap) printf(“%dis”,year); else printf(“%d is not ”,year); printf(“a leap year\\n”);}