C语言if else语句的用法(非常完整和详细)

 

if else 是C语言中最常用的一种选择结构(分支结构),它会根据不同的条件执行不同的代码块。
 

在C语言中,我们可以设置一个条件,让程序根据不同的条件执行不同的代码块,这就是分支结构。分支结构就像岔路口,你可以往左走,也可以往右走;具体要怎么走,得根据给出的条件来判断。

if else 语句

C语言 if else 语句的基本语法如下:
if(条件){
    //代码块1
    //如果条件为真,执行这里的代码
}else{
    //代码块2
    //如果条件为假,执行这里的代码
}
if 语句中条件可以是任何有效的C语言表达式,常见的包括比较表达式、逻辑表达式,甚至是简单的变量或者函数调用。

条件中的表达式有一个计算结果:
  • 如果表达式的结果为非零值(真),则条件成立,执行 if 后面的代码块1;
  • 如果表达式的结果为零值(假),则条件不成立,执行 else 后面的代码块2。

所谓代码块,就是由{ }包围的一条或者多条语句的集合。

if else 语句的执行流程可以用下图表示:
C语言if else语句执行流程

让我们通过一个简单的例子来演示 if else 语句的用法:

#include <stdio.h>

int main() {
    int age;
    
    printf("请输入你的年龄:");
    scanf("%d", &age);
    
    if (age >= 18) {
        printf("你已经成年了。\n");
    } else {
        printf("你还未成年。\n");
    }
    
    return 0;
}

这段代码中,age>=18是需要判断的条件,>=表示“大于等于”,等价于数学中的


如果条件成立,也即 age 大于或者等于 18,那么执行 if 后面的代码块,打印"你已经成年了";如果条件不成立,也即 age 小于 18,那么执行 else 后面的代码块,打印"你还未成年"
 

可能的运行结果:

请输入你的年龄:14
你还未成年。

或者:

请输入你的年龄:24
你已经成年了。

省略大括号

if 和 else 后面的代码块中,如果只有一条语句,那么可以省略{ },例如:
if (age >= 18) 
    printf("你已经成年了。\n");
else
    printf("你还未成年。\n");
这种写法虽然从语法上讲是正确的,但是从可读性和规范性上讲,还是强烈建议加上{ },这也是很多公司的编码规范所要求的。

只使用 if 语句

有的时候,我们需要在满足某种条件时进行一些操作,而不满足条件时就不进行任何操作,这个时候我们可以只使用 if 语句,而不使用 else 语句。也就是说,if else 不必同时出现。

单独使用 if 语句的语法如下:
if (条件) {
    //代码块
    // 如果条件为真,执行这里的代码
}
条件是一个有效的C语言表达式,如果表达式的结果为非零值(真),则大括号内的代码块将被执行;如果表达式的结果为零值(假),程序将跳过这个代码块,继续执行 if 语句之后的代码。

if 语句的执行流程可以用下图表示:
C语言if语句执行流程

让我们通过一个简单的例子来演示 if 语句的用法:

#include <stdio.h>

int main() {
    int age;

    printf("请输入你的年龄:");
    scanf("%d", &age);
    
    if (age >= 18) {
        printf("你已经成年了\n");
    }
    
    return 0;
}

在这个例子中,我们检查变量 age 是否大于或等于 18:如果条件成立,程序将输出"你已经成年了"的消息;如果条件不成立,程序什么也不输出。

可能的输出结果:

请输入你的年龄:24
你已经成年了

或者:

请输入你的年龄:14

多重 if else 语句

对于更复杂的条件判断,我们可以使用多重 if else 语句来进行处理。多重 if else 语句的基本语法如下:

if(条件1){
    // 如果条件1成立,执行这里的代码
}else if(条件2){
    // 如果条件2成立,执行这里的代码
}else if(条件3){
    // 如果条件3成立,执行这里的代码
}else{
    // 如果以上所有条件都为假,执行这里的代码
}

在这个结构中,程序会从上到下依次检查每个条件,一旦遇到一个成立的条件,就会执行对应的代码块,然后跳出整个 if else 结构。如果所有条件都不成立,那么最后的 else 块(如果有的话)将被执行。


让我们通过一个具体的例子来演示多重 if else 语句的用法:

#include <stdio.h>

int main() {
    int score;
    printf("请输入学生的成绩(0-100):");
    scanf("%d", &score);

    if (score >= 90 && score <= 100) {
        printf("优秀\n");
    } else if (score >= 80 && score < 90) {
        printf("良好\n");
    } else if (score >= 70 && score < 80) {
        printf("中等\n");
    } else if (score >= 60 && score < 70) {
        printf("及格\n");
    } else if (score >= 0 && score < 60) {
        printf("不及格\n");
    } else {
        printf("输入的成绩无效\n");
    }

    return 0;
}

在这个例子中,我们使用多重 if else 语句来输出学生成绩的评级。程序会从上到下检查每个条件,直到找到一个匹配的条件。例如,如果输入的成绩是 85,程序会执行printf("良好\n");,然后结束整个 if else 结构。


运行这段代码,可能会得到如下输出:

请输入学生的成绩(0-100):85
良好

使用多重 if else 语句时,有几点需要注意:

  • 条件的顺序很重要。由于C语言会按顺序检查条件,一旦找到一个成立的条件就会执行对应的代码块,并跳出整个 if else 结构,所以更具体或更严格的条件应该放在前面。
  • else if 的数量没有限制,你可以根据需要添加任意多个 else if 分支。
  • 最后的 else 语句是可选的。如果所有条件都不满足,并且没有 else 语句,那么整个 if else 结构将不执行任何操作。

嵌套 if else 语句

C语言允许我们在一个条件语句内部再放置另一个条件语句,形成嵌套 if else。这种结构使得我们能够处理更复杂的逻辑判断,实现多层次的决策过程。嵌套 if else 语句的基本思想是:在外层 if 或 else 块的内部再放置一个完整的 if else 语句。
 

嵌套 if else 语句的一般语法如下:

if (条件1) {
    //当条件1成立时执行这里的代码
    if (条件2) {
        //当条件2成立时执行这里的代码
    } else {
        //当条件2不成立时执行这里的代码
    }
} else {
    //当条件1不成立时执行这里的代码
    if (条件3) {
        //当条件3成立时执行这里的代码
    } else {
        //当条件3不成立时执行这里的代码
    }
}

这种结构允许我们创建复杂的决策逻辑,根据多个条件的组合来执行不同的代码块。每一层的 if else 语句都可以根据特定的条件来细分程序的执行路径。


让我们通过一个具体的例子来理解嵌套 if else 语句的用法。编写一个程序,根据学生的成绩和出勤率来决定他们是否能够获得奖学金:

#include <stdio.h>

int main() {
    float grade, attendance;
    
    printf("请输入学生的成绩(0-100):");
    scanf("%f", &grade);
    
    printf("请输入学生的出勤率(0-100):");
    scanf("%f", &attendance);
    
    if (grade >= 85) {
        if (attendance >= 90) {
            printf("恭喜!你获得了一等奖学金!\n");
        } else {
            printf("很遗憾,虽然你的成绩达标,但出勤率不足。你获得了二等奖学金。\n");
        }
    } else {
        if (attendance >= 95) {
            printf("虽然你的成绩未达到一等奖学金标准,但由于出色的出勤率,你获得了三等奖学金。\n");
        } else {
            printf("很抱歉,你没有获得奖学金的资格。继续努力!\n");
        }
    }
    
    return 0;
}

在这个例子中,我们使用嵌套的 if else 语句来处理不同的情况:

  • 外层 if 语句检查学生的成绩是否达到 85 分或以上。
  • 如果成绩达标,我们进入内层 if 语句,检查出勤率是否达到 90% 或以上。
  • 如果成绩未达标,我们进入 else 块,其中包含另一个 if 语句,检查出勤率是否达到 95% 或以上。


这段代码使得我们根据成绩和出勤率的不同组合,来决定学生获得的奖学金等级。让我们看几个可能的输出结果:

请输入学生的成绩(0-100):88
请输入学生的出勤率(0-100):92
恭喜!你获得了一等奖学金!

请输入学生的成绩(0-100):90
请输入学生的出勤率(0-100):85
很遗憾,虽然你的成绩达标,但出勤率不足。你获得了二等奖学金。

请输入学生的成绩(0-100):80
请输入学生的出勤率(0-100):96
虽然你的成绩未达到一等奖学金标准,但由于出色的出勤率,你获得了三等奖学金。

请输入学生的成绩(0-100):75
请输入学生的出勤率(0-100):88
很抱歉,你没有获得奖学金的资格。继续努力!

虽然嵌套 if else 允许我们处理复杂的条件组合,但需要注意以下几点:

  • 过度嵌套可能导致代码难以阅读和维护,一般建议嵌套不要超过三层。
  • 对于非常复杂的条件判断,可以考虑使用 switch 语句或者将逻辑拆分为单独的函数。
  • 正确的缩进对于提高嵌套 if else 语句的可读性至关重要。

总结

if else 语句是C语言中最常用的选择结构(分支结果),它可以根据不同的条件执行不同的代码块,是初学者必须掌握的。