5.5.1 嵌套使用if语句

在C语言中,if控制结构是可以实现嵌套功能的。其具体的嵌套格式如下:

if(判断条件)//if结构开始
{
    if(判断条件)//嵌套一个if选择结构
    {
        ……//省略部分代码
        }
    ……//省略部分代码
}

在if结构的嵌套使用中,用户将一个if结构嵌套在另一个if结构中使用。其目的在于对多个条件进行判断,并使用不同的代码段实现不同的功能。例如,对一个学生的年龄进行判断,如果该学生年龄小于18岁,则判断其为未成年人。若其年龄大于18岁而小于30岁,则判断其为青年人。具体代码如下:

#include <stdio.h>//包含头文件
main()//主函数开始
{
    int age=0;//定义并初始化年龄变量
    printf("请用户输入学生年龄 ");//输出提示语
    scanf("%d",&age);//获取用户的输入
    if(age<18)//判断年龄使用小于18
    {
        printf("该学生为未成年人! ");//输出提示语
    }
    if(age>18)//判断年龄是否大于18
    {
        if(age<30)//判断年龄是否小于30
        {
        printf("该学生为青年人! ");//输出提示语
        }
    }
return 0;//程序正常结束
}

在实例代码中,首先使用一个if结构判断输入的年龄是否小于18岁。如果是,则输出提示语“该学生为未成年人”。否则,继续进行判断。

而在第二个if结构中,首先判断学生年龄是否大于18岁。如果是,则使用第三个if结构判断其是否小于30岁。这样,就可以精确地判断该学生是否为青年人。

该实例代码主要是讲解if结构的嵌套使用方法及其功能,该程序运行结果如图5.21所示。如果用户输入的年龄为16,程序经过判断,会输出提示语“该学生为未成年人!”,如图5.22所示。

图5.21 程序运行结果

图5.22 程序运行结果

除了可以嵌套使用if结构外,还可以对if…else进行嵌套使用。其使用格式如下:

if(判断条件)//if结构开始
{
    if(判断条件)//嵌套一个if选择结构
    {
        ……//省略部分代码
        }
    else//否则执行其他代码
    {
        ……//省略部分代码
        }
}
else//否则执行其他代码
{
    ……//省略部分代码
}

在上面的使用格式中,在if结构体中,嵌套使用了一个if…else结构。其主要作用是对用户指定的判断条件进行细致的分解、判断。例如,在很多学生信息中,需要查找到姓名为“王磊”,并且性别为“男”的学生信息。此时,就需要使用到嵌套的if…else结构。具体代码如下:

#include <stdio.h>//包含标准输入/输出头文件
#include <string.h>//包含字符串处理头文件
main()//主函数开始
{
    char sz1[10]="王磊";//定义并初始化字符数组
    char sz2[5]="男";//定义并初始化
    int age=21;//定义并初始化年龄
    if(strcmp(sz1,"王磊")==0)//判断姓名是否相同
    {
      if(strcmp(sz2,"男")==0)//判断性别是否相同
      {
        printf("数据库查找完毕! ");//输出相关信息
        printf("查找到该学生信息如下: ");//输出提示语
        printf("姓名:%s ",sz1);//输出查找到的学生信息
        printf("性别:%s ",sz2);
        printf("年龄:%d ",age);
      }
      else//如果没有查找到相同性别的学生
      {
        printf("数据库中没有男性的%s: ",sz1);//输出提示语
      }
    }
    else//如果没有查找到相同姓名的学生
    {
          printf("数据库中没有查找到该学生的相关信息! ");
    }
return 0;//程序正常关闭
}

图5.23 程序运行结果

在实例代码中,首先定义并初始化与学生相关的信息,并通过第一个if结构对学生的姓名进行判断。如果该学生是需要查找的学生,则继续使用if结构对该学生的性别进行判断。若性别是相同的,则说明该学生是需要查找的。这样,就可以将查找到的该学生信息输出。否则,将输出字符串“数据库中没有男性的该学生”。

如果在第一个if结构中,判断数据库中并无指定学生的姓名。则程序将输出提示字符串“数据库中没有查找到该学生的相关信息”,程序运行结果如图5.23所示。

注意 实例代码中,代码段“strcmp(sz2,”男”)”表示对指定的两个字符串进行比较。如果两个字符串相同,则该函数将返回0。否则,该函数将返回非零值。使用该函数时,需要在程序中添加头文件“string.h”。否则,该函数调用时将出现错误。