- C语言编程教程
- C语言 - 首页
- C语言基础
- C语言 - 概述
- C语言 - 特性
- C语言 - 历史
- C语言 - 环境搭建
- C语言 - 程序结构
- C语言 - Hello World
- C语言 - 编译过程
- C语言 - 注释
- C语言 - 词法单元
- C语言 - 关键字
- C语言 - 标识符
- C语言 - 用户输入
- C语言 - 基本语法
- C语言 - 数据类型
- C语言 - 变量
- C语言 - 整数提升
- C语言 - 类型转换
- C语言 - 类型强制转换
- C语言 - 布尔值
- C语言中的常量和字面量
- C语言 - 常量
- C语言 - 字面量
- C语言 - 转义序列
- C语言 - 格式说明符
- C语言中的运算符
- C语言 - 运算符
- C语言 - 算术运算符
- C语言 - 关系运算符
- C语言 - 逻辑运算符
- C语言 - 位运算符
- C语言 - 赋值运算符
- C语言 - 一元运算符
- C语言 - 自增和自减运算符
- C语言 - 三元运算符
- C语言 - sizeof 运算符
- C语言 - 运算符优先级
- C语言 - 其他运算符
- C语言中的决策
- C语言 - 决策
- C语言 - if 语句
- C语言 - if...else 语句
- C语言 - 嵌套if语句
- C语言 - switch 语句
- C语言 - 嵌套switch语句
- C语言中的循环
- C语言 - 循环
- C语言 - while 循环
- C语言 - for 循环
- C语言 - do...while 循环
- C语言 - 嵌套循环
- C语言 - 无限循环
- C语言 - break 语句
- C语言 - continue 语句
- C语言 - goto 语句
- C语言中的函数
- C语言 - 函数
- C语言 - 主函数
- C语言 - 按值调用函数
- C语言 - 按引用调用函数
- C语言 - 嵌套函数
- C语言 - 可变参数函数
- C语言 - 用户自定义函数
- C语言 - 回调函数
- C语言 - return 语句
- C语言 - 递归
- C语言中的作用域规则
- C语言 - 作用域规则
- C语言 - 静态变量
- C语言 - 全局变量
- C语言中的数组
- C语言 - 数组
- C语言 - 数组的特性
- C语言 - 多维数组
- C语言 - 将数组传递给函数
- C语言 - 从函数返回数组
- C语言 - 变长数组
- C语言中的指针
- C语言 - 指针
- C语言 - 指针和数组
- C语言 - 指针的应用
- C语言 - 指针运算
- C语言 - 指针数组
- C语言 - 指向指针的指针
- C语言 - 将指针传递给函数
- C语言 - 从函数返回指针
- C语言 - 函数指针
- C语言 - 指向数组的指针
- C语言 - 指向结构体的指针
- C语言 - 指针链
- C语言 - 指针与数组的区别
- C语言 - 字符指针和函数
- C语言 - NULL 指针
- C语言 - void 指针
- C语言 - 悬空指针
- C语言 - 解引用指针
- C语言 - 近、远和巨型指针
- C语言 - 指针数组的初始化
- C语言 - 指针与多维数组的区别
- C语言中的字符串
- C语言 - 字符串
- C语言 - 字符串数组
- C语言 - 特殊字符
- C语言结构体和联合体
- C语言 - 结构体
- C语言 - 结构体和函数
- C语言 - 结构体数组
- C语言 - 自引用结构体
- C语言 - 查找表
- C语言 - 点 (.) 运算符
- C语言 - 枚举 (enum)
- C语言 - 结构体填充和打包
- C语言 - 嵌套结构体
- C语言 - 匿名结构体和联合体
- C语言 - 联合体
- C语言 - 位域
- C语言 - typedef
- C语言中的文件处理
- C语言 - 输入 & 输出
- C语言 - 文件I/O (文件处理)
- C语言预处理器
- C语言 - 预处理器
- C语言 - 编译指示
- C语言 - 预处理器运算符
- C语言 - 宏
- C语言 - 头文件
- C语言中的内存管理
- C语言 - 内存管理
- C语言 - 内存地址
- C语言 - 存储类别
- 其他主题
- C语言 - 错误处理
- C语言 - 可变参数
- C语言 - 命令执行
- C语言 - 数学函数
- C语言 - static 关键字
- C语言 - 随机数生成
- C语言 - 命令行参数
- C语言编程资源
- C语言 - 问答
- C语言 - 快速指南
- C语言 - 速查表
- C语言 - 有用资源
- C语言 - 讨论
C语言嵌套if语句
在C语言编程中,嵌套if-else语句始终是合法的,这意味着你可以在另一个if或else-if语句内部使用一个if或else-if语句。
在编程环境中,“嵌套”是指将一个特定的编程元素包含在另一个类似的元素内部。例如,嵌套循环、嵌套结构、嵌套条件语句等。如果C语言中的if语句用在另一个if语句内部,那么我们称之为C语言中的嵌套if语句。
语法
嵌套if语句的语法如下:
if (expr1){
if (expr2){
block to be executed when
expr1 and expr2 are true
}
else{
block to be executed when
expr1 is true but expr2 is false
}
}
下图表示if语句的嵌套:
你可以用&&或||组合布尔表达式来达到同样的效果。但是,对于更复杂的算法,其中有多个布尔表达式的不同组合,构建复合条件就变得困难了。相反,建议使用嵌套结构。
另一个if语句可以出现在顶级if块中,或者它的else块中,或者同时出现在两者中。
示例1
让我们举个例子,程序需要确定给定的数字是否小于100,在100到200之间,或大于200。我们可以用下面的复合布尔表达式来表达这种逻辑:
#include <stdio.h>
int main (){
// local variable definition
int a = 274;
printf("Value of a is : %d\n", a);
if (a < 100){
printf("Value of a is less than 100\n");
}
if (a >= 100 && a < 200){
printf("Value of a is between 100 and 200\n" );
}
if (a >= 200){
printf("Value of a is more than 200\n" );
}
}
输出
运行代码并检查其输出。在这里,我们已将“a”的值初始化为274。更改此值并再次运行代码。如果提供的数值小于100,则会得到不同的输出。同样,如果提供的数字在100到200之间,输出也会再次改变。
Value of a is : 274 Value of a is more than 200
示例2
现在让我们对同一个问题使用嵌套条件。当我们使用嵌套条件时,它将使解决方案更容易理解。
首先,检查“a >= 100”。在if语句的真值部分,检查它是否<200以决定数字是否在100-200之间,或者它是否>200。如果第一个条件 (a >= 100) 为假,则表示该数字小于100。
#include <stdio.h>
int main (){
// local variable definition
// check with different values 120, 250 and 74
int a = 120;
printf("value of a is : %d\n", a );
// check the boolean condition
if(a >= 100){
// this will check if a is between 100-200
if(a < 200){
// if the condition is true, then print the following
printf("Value of a is between 100 and 200\n" );
}
else{
printf("Value of a is more than 200\n");
}
}
else{
// executed if a < 100
printf("Value of a is less than 100\n");
}
return 0;
}
输出
运行代码并检查其输出。对于不同的“a”输入值,你会得到不同的输出:
Value of a is : 120 Value of a is between 100 and 200
示例3
下面的程序使用嵌套if语句来确定一个数字是否能被2和3整除,能被2整除但不能被3整除,能被3整除但不能被2整除,以及不能同时被2和3整除。
#include <stdio.h>
int main(){
int a = 15;
printf("a: %d\n", a);
if (a % 2 == 0) {
if (a % 3 == 0){
printf("Divisible by 2 and 3");
}
else {
printf("Divisible by 2 but not 3");
}
}
else {
if (a % 3 == 0){
printf("Divisible by 3 but not 2");
}
else{
printf("Not divisible by 2, not divisible by 3");
}
}
return 0;
}
输出
运行代码并检查其输出:
a: 15 Divisible by 3 but not 2
对于不同的“a”值,你会得到不同的输出。
示例4
下面是一个C程序,用于检查给定的年份是否是闰年。年份是否是闰年由以下规则决定:
- 年份能被4整除吗?
- 如果是,它是世纪年(能被100整除)吗?
- 如果是,它能被400整除吗?如果可以,它是闰年,否则不是。
- 如果它能被4整除但不是世纪年,它是闰年。
- 如果它不能被4整除,它不是闰年。
这是C代码:
#include <stdio.h>
int main(){
// Test the program with the values 1900, 2023, 2000, 2012
int year = 1900;
printf("year: %d\n", year);
// is divisible by 4?
if (year % 4 == 0){
// is divisible by 100?
if (year % 100 == 0){
// is divisible by 400?
if(year % 400 == 0){
printf("%d is a Leap Year\n", year);
}
else{
printf("%d is not a Leap Year\n", year);
}
}
else{
printf("%d is not a Leap Year\n", year);
}
}
else{
printf("%d is a Leap Year\n", year);
}
}
输出
运行代码并检查其输出:
year: 1900 1900 is not a Leap Year
使用变量“year”的不同值(如1900、2023、2000、2012)测试程序。
可以使用复合布尔表达式代替嵌套if语句来达到相同的结果,如下所示:
If (year % 4 == 0 && (year % 400 == 0 || year % 100 != 0)){
printf("%d is a leap year", year);
}
else{
printf("%d is not a leap year", year);
}
使用C语言中的嵌套if语句,我们可以编写结构化和多层决策算法。它们简化了复杂判别逻辑情况的编码。嵌套也使程序更易于阅读和理解。