if-else 语句

很多时候,当某些条件为真(True)或为假(False)时,我们需要分别执行不同的语句。控制流过程如下:

程序控制流

要满足这样的需求,我们有以下几种方法:

  1. if语句
  2. if-else语句
  3. if-else if语句
  4. 嵌套if语句

if语句

语法如下:

if(condition)
{
    statement1;
    statement2;
    statement3;
    .
    .
    .
    statementn;
}

上面的语法的含义是,当condition 这个条件为True时,statement1….statementn才执行。

例如:

#include<stdio.h>

int main()
{
    unsigned int var1;
    unsigned int var2;

    printf("程序功能是:当var1的值更大时,打印“Hello”。");

    printf("\n输入 var1 = ");
    scanf("%d",&var1);

    printf("\n输入 var2 = ");
    scanf("%d",&var2);

    if(var1>var2)
    {
        printf("Hello");  /*condition control statemnet*/
    }

    return 0;
}

如以上代码中的提示信息,此程序的功能是:当var1的值更大时,打印“Hello”。编译完成后,运行程序。分别输入 var1的值为20,var2的值为10。程序执行结果如下:
if语句
你可以自行运行以上程序,输入不同的值,查看程序执行结果。

if-else语句

此方法用于当某一条件为真(True)时执行一些语句,而条件为假(False)时执行另一些语句的情况。当条件为真时需要执行的语句将放入if块,否则放入else块。
语法如下:

if(condition)
{
    statement1;
    statement2;
    statement3;
}
else
{
    statement4;
    statement5;
    statement6;
}

例如:

#include<stdio.h>

int main()
{
    unsigned int var1;
    unsigned int var2;

    printf("程序功能是比较两个数的大小,并打印结果");

    printf("\n输入 var1 = ");
    scanf("%d",&var1);

    printf("\n输入 var2 = ");
    scanf("%d",&var2);

    if(var1>var2)
    {
        printf("\nvar1 的值更大");  /*条件为true时执行*/
    }
    else
    {
        printf("\nvar2 的值更大"); /*条件为false时执行*/
    }

    return 0;
}

如以上代码中的提示信息,此程序的功能是比较两个数的大小,并打印结果。当输入var1的值为45,var的值为54,程序执行结果如下:
if-else语句
你可以自行运行以上程序,输入不同的值,查看程序执行结果。

if-else if-else语句

当我们需要根据多个不同的条件执行不同的语句块时,可以采用此方法。if或者else if中的条件为真(True)时,执行他们内部的语句块,否则执行else中的语句块。
语法如下:

if(condition1)
{
    statement1;
    statement2;
}
else if(condition2)
{
    statement3;
    statement4;
}
else if(condition3)
{
    statement5;
    statement6;
}
else 
{
    statement7;
    statement8;
}

例如:程序要找出三个整数(var1,var2,var3)中的最大值。
那么,可能出现的情况如下:

  1. (var1>var2)且(var1>var3) ----> var1 最大
  2. (var2>var1)且(var2>var3) ----> var2 最大
  3. (var3>var1)且(var3>var2) ----> var3 最大
  4. 以上都不是,三个数都相等。
    程序如下:
#include<stdio.h>

int main()
{
    unsigned int var1;
    unsigned int var2;
    unsigned int var3;

    printf("\nEnter var1 = ");
    scanf("%d",&var1);

    printf("\nEnter var2 = ");
    scanf("%d",&var2);

    printf("\nEnter var3 = ");
    scanf("%d",&var3);

    if((var1>var2)&&(var1>var3))
    {
      printf("\nvar1 最大");
    }
    else if((var2>var1)&&(var2>var3))
    {
      printf("\nvar2 最大");
    }
    else if((var3>var1)&&(var3>var2))
    {
      printf("\nvar3 最大");
    }
    else
    {
       printf("\n三个数都相等");
    }

    return 0;
}

根据程序提示信息,分别输入var1 = 1234,var2 = 2345,var3 = 3456。程序执行结果如下:
if-elseif语句

嵌套的if语句

嵌套的if语句,顾名思义,就是在if,else if以及else语句块中再嵌套if。同样,我们通过嵌套if来完成上面比较三个数的大小的功能。

伪代码如下:

if(var1>var2)
{
    if(var1>var3)  /*nested if- else*/
    {
          var1 is greatest;
    }
    else
    {
          var3 is greatest;
    } 
}
else
 {
    if(var2>var3) /*nested if- else*/
    {
        var2 is greatest;
    }
    else
    {
        var3 is greatest;
    } 
 }

程序如下:

#include<stdio.h>

int main()
{
    unsigned int var1;
    unsigned int var2;
    unsigned int var3;

    printf("通过嵌套if语句的方法找出三个数的最大那个");

    printf("\nEnter var1 = ");
    scanf("%d",&var1);

    printf("\nEnter var2 = ");
    scanf("%d",&var2);

    printf("\nEnter var3 = ");
    scanf("%d",&var3);

    if(var1>var2)
    {
       if(var1>var3) /*nested if- else*/
       {
            printf("\nvar1 最大");
       }
       else
       {
            printf("\nvar3 最大");
       }
    }
    else
    {
      if(var2>var3) /*嵌套 if- else*/
      {
            printf("\nvar2 最大");
      }
      else
      {
            printf("\nvar3 最大");
      }
    }
    return 0;
}

if-else语句需要记住的点

  1. if语句可以单独使用;
  2. else语句必须与if成对出现,即else不能单独存在。例如:

情况1:正确!

/* else前面必须有if语句与之对应 */
if(condition)
{
    statement1;
}
else
{
    statement2;
}

情况2:正确

/* else if前面必须有if语句与之对应 */
if(condition1)
{
    statement1;
}
else if(condition2)
{
    statement2;
}

情况3:正确

/* else前面必须有if语句与之对应 */
if(condition1)
{
    statement1;
}
else if(condition2)
{
    statement2;
}
else{
    statement3;
}

情况4:错误

/* else前面必须有if语句与之对应 */
else{
    statement3;
}

情况5:错误

/* else前面必须有if语句与之对应 */
if(condition1)
{
    statement1;
}
else if(condition2)
{
    else
    {
         statement2;
    }
}
下一节