首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

《小弟我的第一本C++书》节选:4.2.1 if语句

2013-12-10 
《我的第一本C++书》节选:4.2.1 if语句更多尽在http://www.chenlq.net4.2.1 if语句我们总是用“如果……,就……”

《我的第一本C++书》节选:4.2.1 if语句
更多尽在http://www.chenlq.net

4.2.1 if语句

我们总是用“如果……,就……”来表达条件选择,C++也向我们学习,提供了关键字if来实现选择结构。if语句的语法格式如下:

if ( 条件表达式 )
{
语句1;
}
else
{
语句2;
}

在条件选择语句中,首先计算条件表达式的值,然后根据表达式进行判断。如果表达式的值为true,则执行语句1;否则执行语句2。通过使用条件选择语句,可根据条件表达式的不同值而改变程序执行的流程,可以在语句1和语句2中实现不同的功能。if语句的执行过程如图4-1所示。 现在,就可以用if语句来解决“爱我还是她”这个令人烦恼的问题了。

// 得到漂亮指数
int nBeautyIndex = GetBeautyIndex();
// 以漂亮指数作为条件进行判断选择
if( nBeautyIndex > 85 )
{
// 如果“漂亮指数大于85”条件成立,选择“爱你”
cout<<"爱你!"<<endl;
}
else
{
// 如果“漂亮指数大于85”条件不成立,选择“爱她”
cout<<"爱她!"<<endl;
}

图4-1 条件选择结构的执行流程 在这里,首先得到漂亮指数,然后将漂亮指数跟一个标准进行比较,再将比较的结果作为条件进行判断。如果漂亮指数大于85,则比较结果为true,执行条件选择结构中的语句1,输出答案为“爱你!”;如果条件不能满足,则执行语句2,输出答案为“爱她!”。用程序解决问题就是这么简单。从现在开始,谁也别爱了,爱上C++吧。 if语句的形式虽然简单,但是在其使用上有如下几个需要注意的地方。

    1. if语句中的else部分可以省略 很多时候,我们只关心条件为true的情况,即省略掉if语句中的else部分,只保留if判断条件和相应的语句,例如:

    // 如果分数大于80,则输出“Good”
    if( nScore > 80 )
    {
    cout<<"Good!";
    }

    这个条件选择结构表示,如果nScore的值大于80,就输出“Good!”以示嘉奖。对于nScore小于或等于80的情形,我们不关心,也不处理。
    2. if语句可以实现嵌套 if语句可以嵌套在if语句中,表示在某个前提条件下做进一步的条件判断,从而实现更加复杂的选择。例如,要比较输入的v1和v2的大小关系,可以使用如下代码。

    cout << "请输入两个整数:" << endl;
    int v1, v2;
    // 获取用户输入的数字
    cin >> v1 >> v2;
    if( v1 != v2 ) // 判断v1和v2是否相等,如果不相等,则继续判断大小
    {
    // 第二级if语句
    // 如果不相等,则继续判断v1是否大于v2
    if( v1 > v2 )
    {
    cout<<" v1 > v2 "<<endl;
    }
    else
    {
    cout<<" v1 < v2 "<<endl;
    }
    }
    else // v1和v2相等
    {
    cout<<" v1 = v2 "<<endl;
    }

    在这段代码中,首先判断v1和v2是否相等。如果不相等,则继续判断v1是否大于v2,如果还是不满足,则直接输出结果。通过两级判断,实现了v1和v2大小的比较。
    3. if语句可以并列 如果同一级的条件有多种情况,就可以使用并列的条件选择语句来实现。并列条件选择语句的语法格式如下:

    if ( 条件表达式1 )
    {
    语句1;
    }
    else if ( 条件表达式2 )
    {
    语句2;
    }
    // …
    else if ( 条件表达式n )
    {
    语句n;
    }
    else
    {
    语句n+1;
    }

    当程序开始执行一条并列条件选择语句时,会从上到下逐个计算条件表达式的值,并判断是否为true,如果条件表达式的值为true,则进入相应的分支,执行其中的语句,完成整个并列条件选择语句的执行。这里需要特别注意,并列条件选择语句只会执行其中的某一个分支,如果多个条件表达式都为true,则只会执行第一个分支。例如:

    // 并列条件选择语句的执行
    int a = 5;
    if( a > 1 ) // 条件表达式为true,执行此分支
    {
    // …
    }
    // 条件表达式也为true,但是第一个分支已经执行,
    // 所以虽然此分支的条件表达式也为true,但是不会执行
    else if( a > 2 )
    {
    // …
    }
    else
    {
    // …
    }

    当使用并列条件选择语句时,应尽量避免条件范围的重复覆盖,不要让多个条件表达式同时为true,这样可能会造成程序逻辑上的混乱。之前比较v1和v2大小的例子中,会出现三种不同的情形,即v1>v2、v1

    int v1, v2;
    // 获取用户输入的数字
    cin >> v1 >> v2;
    if( v1 < v2 ) // 判断v1是否小于v2
    {
    cout<<" v1 < v2 "<<endl;
    }
    else if( v1 > v2 ) // 判断v1是否大于v2
    {
    cout<<" v1 > v2 "<<endl;
    }
    else // 如果v1既不大于v2,又不小于v2,则v1和v2必然相等
    {
    cout<<" v1 = v2 "<<endl;
    }

    通过if语句的并列,我们对各种条件判断的可能结果都进行了相应的处理,没有重复,也没有遗漏。


[解决办法]
LZ结贴吧。

热点排行