当前课程知识点:C语言程序设计 > 第5章 选择结构程序设计 > 5.4 if语句 > if语句
同学们大家好
在C语言中
选择结构通常通过if语句和switch语句来实现
本节我们来学习C语言中的if语句
if语句的一般形式如下
if(表达式)语句1
[else 语句2 ]
if语句中的表达式通常情况下是关系表达式
或逻辑表达式
方括号内的部分
即else子句
为可选的
即可以有
也可以没有
语句1和语句2可以是一个简单的语句
也可以是一个复合语句
还可以是另一个if语句
即在一个if语句中又包括另一个或多个内嵌的if语句
成为if语句的嵌套
因此if语句最见的有以下3种形式
第一种形式
没有else子句部分
流程图如图所示
第二种形式
有else子句部分 流程图如图所示
第三种形式
if…else if…形式
流程图如图所示
注意
1
整个if语句可以写在多行上
也可以写在一行上
如
if (x>0)y=1;else y= -1
但是
为了程序的清晰
提倡写成据齿形式
2
语句1
语句2
语句m
等是if语句中的内嵌语句
它们是if语句中的一部分
每个内嵌语句的末尾都应当有分号
因为分号是语句中的必要成分
如
不能写成
如果无此分号
则出现语法错误
3
if语句无论写在几行上
都是一个整体
属于同一个语句
不要误认为if部分是一个语句
else部分是另一个语句
不要一看见分号
就以为是if语句结束了
在系统对if语句编译时
若发现内嵌语句结束
出现分号
还要检查其后有无else
如果无else
就认为整个if语句结束
如果有else
则把else子句作为if语句的一部分
注意else子句不能作为语句单独使用
它必须是if语句的一部分
与if配对使用
4
语句1
语句2
语句m
可以是一个简单的语句
也可以是一个包括多个语句的复合语句
注意
复合语句应当用花括号括起来
5
在if语句中要对给定的条件进行检查
判定所给定的条件是否成立
判断的结果是一个逻辑值
真
或
假
例如
判断一个人是否70岁以上
如果有一个人年龄为75岁
对他而言
70岁以上是真的
如果有一个人年龄为15岁
对他而言
70岁以上是假的
又如
判断a> b条件是否满足
当a> b时就称条件a>b为真
如果a<=b
则不满足a>b条件就称此时条件a> b"为假
6
语句1
语句2
语句m
也可以是一个if语句
形成if语句的嵌套
其一般形式如下
If语句中的语句1
或语句2又是一个内嵌的if语句
If语句嵌套时
应当注意if与else的配对关系
else总是与它上面的最近的未配对的if配对
假如写成如下形式
编程序者把else写在与第1个if
外层if同一列上
意图是使else与第1个if对应
但实际上else是与第2个if配对
因为它们相距最近
为了避免二义性的混淆
最好使内嵌if语句也包含else部分
这样if的数目和else的数目相同
从内层到外层一一对应
不致出错
如果if与else的数目不一样
为实现程序设计者的思想
可以加花括号来确定配对关系
例如
这时
{ }限定了内嵌if语句的范围
因此else与第一个if配对
例题
有一函数如下所示
编一程序
输入一个x值
要求输出相应的y值
解题思路
用if语句检查x的值
根据x的值决定赋予y的值
流程图如图所示
由于y的可能值不是两个而是三个
因此不能用一个简单的
无内嵌if的if语句来实现
方法1
先后用3个独立的if语句处理
流程图如图所示
输入x 若x<0
则y=-1 若x=0
则y=0 若x>0
则y=1 输出y 编写程序如下所示
运行结果如下所示
方法2
用一个嵌套的if语句处理
流程图如图所示
输入x 若x<0
则y=-1 否则 若x=0
则y=0 否则
即x>0
则y=1 输出y 编写程序如下
运行结果如下所示
同学们
请想一想
本题还有没有其它的解决办法呢
请上机进行验证
本节的内容就讲到这里
谢谢大家
-计算思维与计算机
--计算思维与计算机
--计算思维与计算机
--计算思维和计算机
-2.1 程序设计语言的发展及其特点和应用
--程序设计语言的特点及发展
- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤
--C语言程序的结构和编制步骤
-3.1 C语言的数据类型
--C语言的数据类型
--C语言的数据类型
-3.2 常量
--常量
--常量
-3.3 什么是变量
--什么是变量
--什么是变量
-3.4 如何进行算术运算
--如何进行算术运算
--如何进行算术运算
-3.5 赋值运算符和逗号运算符
--赋值运算符和逗号运算符
-3.6 数据类型转换
--数据类型转换
--数据类型转换
-4.1 格式化输出printf
--格式化输出
-4.2 格式化输入scanf及字符数据的非格式化输入输出
--格式化输入
-5.1 关系运算符和关系表达式
--关系运算符和关系表达式
-5.2 逻辑运算符和逻辑表达式
--逻辑运算符和逻辑表达式
-5.3 条件运算符和条件表达式
--条件运算符和条件表达式
-5.4 if语句
--if语句
--if语句
-5.5 switch语句
--switch语句
--switch语句
-6.1 while语句
--while语句
--while语句
--do-while语句
-6.2 for语句
--for语句
--for语句
-6.3 循环的嵌套
--循环的嵌套
--循环的嵌套
-6.4 break语句和continue语句
--break和continue语句
-7.1 一维数组的定义和引用
--一维数组的定义和引用
-7.2 一维数组的赋值
--一维数组的赋值
--一维数组的赋值
-7.3 二维数组的定义和引用
--二维数组的定义和引用
-7.4 二维数组的赋值
--二维数组的赋值
--二维数组的赋值
-7.5 字符串的本质
--字符串的本质
--字符串的本质
-7.6 字符串操作的常用函数
--字符串常用函数
-7.7 字符串数组
--字符串数组
--字符串数组
-8.1 函数概述
--函数概述
--函数概述
-8.2 有参函数
--有参函数
--有参函数
-8.3 函数参数的传递方式
--函数参数的传递方式
-8.4 变量的作用域和生存期
--变量的作用域和生存期
-8.5 变量的存储类型
--变量的存储类型
--变量的存储类型
-8.6 函数的嵌套和递归调用
--函数的嵌套和递归调用
-8.7 函数的作用域与封装
--函数的作用域与封装
-9.1 指针变量的概念(上)
--指针变量的概念(上)
-9.2 指针变量的概念(下)
--指针变量的概念(下)
-9.3 指向一维数组的指针变量
--指向一维数组的指针变量
-9.4 指向二维数组的指针变量(上)
--指向二维数组的指针变量(上)
-9.5 指向二维数组的指针变量(下)
--指向二维数组的指针变量(下)
-9.6 动态内存分配
--动态内存分配
--动态内存分配
-10.1 编译预处理
--编译预处理
-11.1 用户自己建立数据类型
--用户自己建立数据类型
-11.2 定义结构体类型变量
--定义结构体类型变量
-11.3 结构体变量的引用与初始化
-11.4 结构体数组
--结构体数组
--结构体数组
-11.5 指向结构体类型数据的指针
--指向结构体类型数据的指针
-12.1 文件的基本概念和文件指针
--文件的基本概念和文件指针
-12,2 文件的打开和关闭
--文件的打开和关闭
--文件的打开和关闭
-12.3 文本文件读写
--文本文件读写
--文本文件读写
-12.4 二进制文件读写
--二进制文件读写
--二进制文件读写