当前课程知识点:C++语言程序设计基础 > 第2章 C++简单程序设计(二) > 选择结构 > if语句
if语句
if (表达式) 语句
例:if (x > y) cout << x;
if (表达式) 语句1 else 语句2
例:if (x > y) cout << x;
else cout << y;
if (表达式1)语句1
else if (表达式2) 语句2
else if (表达式3) 语句3
…
else 语句 n
#include <iostream>
using namespace std;
int main() {
int year;
bool isLeapYear;
cout << "Enter the year: ";
cin >> year;
isLeapYear = ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
if (isLeapYear)
cout << year << " is a leap year" << endl;
else
cout << year << " is not a leap year" << endl;
return 0;
}
l 语法形式
if( )
if( ) 语句 1
else 语句 2
else
if( ) 语句 3
else 语句 4
l 注意
n 语句 1、2、3、4 可以是复合语句;
n 每层的if 与 else 配对,或用 { } 来确定层次关系。
#include<iostream>
using namespace std;
int main() {
int x, y;
cout << "Enter x and y:";
cin >> x >> y;
if (x != y)
if (x > y)
cout << "x > y" << endl;
else
cout << "x < y" << endl;
else
cout << "x = y" << endl;
return 0;
}
大家好
欢迎继续学习C++语言程序设计
这一节我给大家介绍if语句
if语句是做什么用的呢
是实现选择结构的
我们在写程序的时候
不是总是将程序的语句
按照顺序的步骤写下来的
很多时候我们需要选择
需要分支
比如说我们写一个程序
计算一下全班学生的成绩
那可能就会出现这种情况
当成绩大于等于60分的时候
我显示他通过了
当成绩小于60分的时候
我显示这个学生成绩不通过
这就是一种选择
实际算法中很多地方
是需要做这种选择的
那么在C++中if语句
就是一个实现选择结构的
这么一个控制语句
接下来我们来看
if语句的详细情况
现在我们来看一下
这个if语句语法形式有几种
第一种语法形式
是单选择的if语句
那我们来看这个例子
如果x大于y为真
那么就输出x的值
否则什么都不做
所以这种形式的if呢
它就只在if后面有个表达式
根据表达式值真还是假
来决定后续操作
如果表达式的值为真
就执行后面这条语句
如果值为假 就什么也不做
第二种形式是两分支的选择结构
if后面有个表达式
如果表达式的值为真
那么就执行语句1
如果表达式的值为假
那么就执行语句2
那我们来看这同样有个例子
在这个例子中
当x大于y的时候 那么就输出x
如果x大于y为假 那么就输出y
那么它达到的效果是什么呢
就是输出x和y中
比较大的那一个值
那么第三种形式呢
是一个多重选择结构
第一次首先判断表达式1
当表达式1为真 就执行语句1
如果表达式1为假
那么接下来的判断表达式2
是真还是假
如果表达式2为真 就执行语句2
如果表达式2依然为假
那接下来继续判断表达式3
依此类推
如果上面的所有表达式都为假
最后就会落到else这个分支去
执行最后一个语句
那么这样的多重选择结构呢
就好象是在每一个else分支中
又嵌套了一个if else语句一样
它要在else分支中再嵌套一个
再嵌套一个
每一个嵌套都那么巧
放在else分支里面
我们就可以用这多个
else if语句来进行多重选择
这几种语法形式里面的语句
包括语句1 语句2 语句3
语句n
它们都不仅可以是单条语句
而且可以是由多条语句
构成的复合语句
复合语句
就是大括号括起来的多条语句
由于程序逻辑复杂到
需要多重逻辑判断的地步呢
可能我们要做的操作
也是比较复杂的
所以大多数时候
在这些分支里面执行的语句
都会是复合语句
而很少会遇到
只是单条语句的简单情况
现在我们来看这样一个例子
输入两个整数
然后比较它们的大小
两个整数的大小情况
肯定是三种情况 相等
或者第一个数大于第二个数
或者第二个数大于第一个数
那这个时候我们用什么办法
来写这个程序呢
显然这个时候
就不是简单的两分支的选择结构
可以解决的问题了
我们来看这个程序的实现
在这个程序中
首先我们用这个if语句
来判断一下x和y是不是相等
当x和y不相等的时候
我们接下来要进一步判断
是x大于y吗
如果x大于y为真
那就输出x大于y
否则输出x小于y
所以我们看到在这个if分支里面
又嵌套了一个if else语句
如果x和y是相等的
那么在y层的if else这个语句里面
我们就走向了else分支
这个时候直接输出x等于y
这是一个典型的
嵌套的if else结构
那么它的运行结果我们看一下
当输出x和y的值为5和8的时候
输出显示x小于y
输入两个都是8的时候
输出显示是相等
输入一个12 一个8的时候
显示x大于y
大家也可以自己到编译环境中
去编译运行
验证一下看是不是这样
现在我们来看一下
这个嵌套的if else的
它的语法结构
在每一个if分支
和每个else分支里面
都可以嵌套一个
完整的if else语句
那么如果你的内层
或者是你嵌套多层的时候
某一层不是一个完全的
两分支的选择
只是有一个单分支的if语句
没有else语句
那么会出现什么情况呢
这样我们首先要知道
当你写嵌套的if else结构的时候
各层的if和else
是如何自动去匹配的
我们来看
实际上就是每一个else
向上找它离它最近的同层的if
去匹配
那用什么来分层呢
像这个缩格写是不是就分层了呢
不是的
我们知道在C++中
你写一个空格 写两个空格
写个换行它都是一样的
都是空白符
所以缩格不能从程序逻辑上
代表层次
缩格只是给我们程序员看的
使我们自己看得更舒服一些
逻辑更清晰一些
那么在编译器看来
你缩格不缩格是一样的
所以呢
如果我们有嵌套的内层if else
而内层的if else
可能不是双分支的
而是单分支的
这种情况下你要将
内层的if else用大括号括起来
作为一个复合语句
这样的话内层的else
和外层的if
或者内层的if和外层的else
它们就不会错误地去匹配了
这个非常重要
在写嵌套的选择结构的时候
一定不要
把else和if的匹配关系给弄错
-导学
--第1章导学
-计算机系统简介
--计算机系统简介
--计算机系统简介 测试题
-计算机语言和程序设计方法的发展
--计算机语言和程序设计方法的发展 测试题
-面向对象的基本概念
--面向对象的基本概念 测试题
-程序的开发过程
--程序的开发过程
--程序的开发过程 测试题
-信息的表示和储存
--计算机的数字系统
--数据的编码表示
--信息的表示和储存 测试题
-实验指导
-导学
--第二章导学
-C++语言概述
--C++语言概述 测试题
-基本数据类型、常量、变量
--程序举例
--基本数据类型、常量、变量 测试题
-运算与表达式
--运算与表达式 测试题
-实验二:简单程序设计(上)
-数据的输入和输出
--数据的输入和输出
--数据的输入和输出 测试题
-选择结构
--if语句
--switch语句
--选择结构 测试题
-循环结构
--for语句
--循环结构 测试题
-自定义类型
--自定义类型
--自定义类型
-第2章小结
--第二章小结
-实验二:C++简单程序设计(下)
-导学
--导学
-函数定义
--函数定义
--函数定义 测试题
-函数调用
--例3-2
--例3-3
--例3-4
--例3-5
--例3-6
--函数调用 测试题
-嵌套与递归
--例3-9
--例3-10
--嵌套与递归 测试题
-函数的参数传递
--函数的参数传递
--函数的参数传递 测试题
-引用类型
--引用类型 测试题
-含有可变参数的函数
--含有可变参数的函数 测试题
-内联函数
--内联函数 测试题
-constexpr函数
--CONSTEXPR函数课后习题
-带默认参数值的函数
--带默认参数值的函数 测试题
-函数重载
--函数重载 测试题
-C++系统函数
--C++系统函数习题
-第3章小结
--第三章小结
-实验三(上)函数的应用
-实验三(下)函数的应用
-导学
--导学
-面向对象程序的基本特点
--面向对象程序的基本特点 测试题
-类和对象
--类和对象的定义
--类和对象 测试题
-构造函数
--构造函数基本概念
--委托构造函数
--复制构造函数
--构造函数 测试题
-析构函数
--析构函数
--析构函数 测试题
-类的组合
--类的组合
--类的组合程序举例
--前向引用声明
--类的组合 测试题
-UML简介
--UML简介
--UML简介课后习题
-结构体与联合体
--结构体与联合体 测试题
-枚举类
--枚举类
--枚举类 测试题
-第4章小结
--第四章小结
-实验四(上)
--实验四(上)
-实验四(下)
--实验四(下)
-导学
--导学
-标识符的作用域与可见性
--标识符的作用域与可见性 测试题
-对象的生存期
--对象的生存期
--对象的生存期 测试题
-类的静态成员
--类的静态成员 测试题
-类的友元
--类的友元 测试题
-共享数据的保护
--共享数据的保护 测试题
-多文件结构和预编译命令
--多文件结构和预编译命令 测试题
-第5章小结
--小结
-实验五
--实验五
-导学
--导学
-数组的定义与初始化
--数组的定义与使用
--一维数组应用举例
--数组的定义与初始化 测试题
-数组作为函数的参数
--数组作为函数的参数 测试题
-对象数组
--对象数组
--对象数组 测试题
-基于范围的for循环
-指针的定义和运算
--指针的定义和运算 测试题
-综合实例
--综合实例
-实验六(上)
--实验六上
-指针与数组
--指针数组
--指针与数组 测试题
-指针与函数
--指针类型的函数
--指向函数的指针
--指针与函数 测试题
-对象指针
--对象指针
--对象指针 测试题
-动态内存分配
--动态内存分配 测试题
-智能指针
--智能指针
-vector对象
--vector对象
--vector对象 测试题
-对象复制与移动
--移动构造
--对象复制与移动 测试题
-字符串
--C风格字符串
--string类
--字符串 测试题
-第6章小结
--第六章小结
-综合实例
--综合实例
-实验六(下)
--实验六(下)