6.c/c++程序员面试宝典-条件语句
c、c++中,表达式的返回值都可以用来判断真假,除非没有任何返回值的void型和返回无法判断真假的结构。当表达式的返回值不等于0时,它的判断就是“真”,否则就是“假”。一个表达式可以包含其他表达式和运算符,并且基于整个表达式的运算结果可以得到一个真或假的条件值。当一个表达式在程序中被用于检验其真或假的值时,称它为条件语句。
面试题59 条件语句有哪几种形式***
分析:条件语句是根据特定的表达式来判断是否真的有条件来执行另外的一些语句,条件语句有3种形式,if、if...else和if...else if...else形式,其中后两种形式带有条件分支。
最简单的if条件语句示例如下:
if(condition) //condition为判断条件
{
statement
}
其中condition就是判断条件,它返回一个bool值,如果为true就执行statement语句,判断条件必须用()括起来,它可以是一个表达式或者一个初始化声明。例如
if(a+b>c) //判断条件用括号括起来
{... ...}
if(int a=compute_value()) //判断条件用括号括起来
{... ...}
if语句的else分支可以将一些条件语句放在一起形成一个执行语句序列。示例代码如下:
if(condition) //条件判断
{statement1}
else
{statement2} //当if条件判断不通过时执行
如果condition为真,则执行statement1;否则,执行statement2.
if...else if...else条件分支示例代码:
if(minVal<ivec[i]) //判断条件
{
... ...
}
else if(minVal == ivec[i]) //分支1
{
++occurs;
}
else //分支2
{
minVal=ivec[i];
occurs=1;
}
这样就可以实现多条件的判断,根据不同的条件来选择要执行的功能代码,这种方式常常用来处理程序多状态等。
【答案】条件语句分为if和if...else和if...else if ...else等3中形式。
面试题60 条件语句如何嵌套?如何匹配else子句***
分析:在c++中,条件语句使支持嵌套的。可以在条件语句的执行语句中再嵌套条件语句。示例代码如下:
if(minVal<=ivec[i]) //条件语句1
{
if(minVal==ivec[i]) //嵌套条件语句
++occurs;
}
else
{
minVal=ivec[i];
occurs=1;
}
这样就在if条件的执行语句中嵌套了条件语句,但如果编程者将代码修改如下:
if(minVal<=ivec[i]) //条件语句1
{
if(minVal==ivec[i]) //条件语句2,没有嵌套
{
++occurs;
}
}
else
{
minVal=ivec[i];
occurs=1;
}
就会产生二义性问题,由于两个if语句,下面的else不知道与哪个if进行匹配,这种情况往往称为悬垂else问题,无法判断else语句归属于哪个if语句。这样的话会导致程序产生错误。如果编程者将第2个if语句用{}括起来,就使得else语句与第一个if进行匹配,这样也就完成了else子句的匹配。
同样的编程者也可以在else的子句中嵌套条件语句,一个完整的程序实例代码如下:
#include<iostream>
void main()
{
int a=0;
int b=0;
int c=0;
cout<<"please input 3 numbers"<<endl;
cin>>a>>b>>c;
if(a>b)
{
if(a>c)
{cout<<"a is max!";}
else
{cout>>"c is max!";}
}
else
{
if(b>c)
{cout<<"b is max"<<endl;}
else
{cout<<"c is max";}
\}
}
以上代码是通过在if和else的两个字句中嵌套大小判断条件,得出比较大小的3个数中的最大值。
【答案】条件语句可以在不同的执行语句作用域内进行嵌套,else子句通过{}划分作用域来实现匹配。