C语言if else语句的用法(非常完整和详细)
if else 是C语言中最常用的一种选择结构(分支结构),它会根据不同的条件执行不同的代码块。
在C语言中,我们可以设置一个条件,让程序根据不同的条件执行不同的代码块,这就是分支结构。分支结构就像岔路口,你可以往左走,也可以往右走;具体要怎么走,得根据给出的条件来判断。
if else 语句
C语言 if else 语句的基本语法如下:if(条件){ //代码块1 //如果条件为真,执行这里的代码 }else{ //代码块2 //如果条件为假,执行这里的代码 }if 语句中
条件
可以是任何有效的C语言表达式,常见的包括比较表达式、逻辑表达式,甚至是简单的变量或者函数调用。条件
中的表达式有一个计算结果:
- 如果表达式的结果为非零值(真),则条件成立,执行 if 后面的代码块1;
- 如果表达式的结果为零值(假),则条件不成立,执行 else 后面的代码块2。
所谓代码块,就是由{ }
包围的一条或者多条语句的集合。
让我们通过一个简单的例子来演示 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 语句的执行流程可以用下图表示:
让我们通过一个简单的例子来演示 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语言中最常用的选择结构(分支结果),它可以根据不同的条件执行不同的代码块,是初学者必须掌握的。