全国计算机等级考试二级C语言入门教程(51)
if语句的嵌套
当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下:
if(表达式)
if语句;
或者为
if(表达式)
if语句;
else
if语句;
在嵌套内的 if语句可能又是 if-else型的,这将会出现多个 if和多个else重叠的情况,这时要特别注意 if和 else
的配对问题。例如:
if(表达式1)
if(表达式2)
语句1;
else
语句2;
其中的else究竟是与哪一个 if配对呢?
应该理解为: 还是应理解为:
if(表达式1)if(表达式1)
if(表达式2) if(表达式2)
语句1; 语句1;
else else
语句2; 语句2;
为了避免这种二义性,C语言规定,else 总是与它前面最近的 if配对,因此对上述例子应按前一种情况理解。
void main(){
int a,b;
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a!=b)
if(a>b) printf("A>B\n");
else printf("A
else printf("A=B\n");
}
比较两个数的大小关系。
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a!=b)
if(a>b) printf("A>B\n");
else printf("A
else printf("A=B\n");
本例中用了 if语句的嵌套结构。 采用嵌套结构实质上是为了进行多分支选择,例 3.16实际上有三种选择即A>B、A
或A=B。这种问题用 if-else-if语句也可以完成。而且程序更加清晰。因此, 在一般情况下较少使用 if语句的嵌套
结构。 以使程序更便于阅读理解。
void main(){
int a,b;
printf("please input A,B: ");
scanf("%d%d",&a,&b);
if(a==b) printf("A=B\n");
else if(a>b) printf("A>B\n");
else printf("A
}