第3章 重要的逻辑工具——判断与循环
视频讲解:90分钟
一个大的问题需要分成若干个小的问题才能够得到解决。C++语言提供了分支语句与循环
语句。当需要一个条件影响到问题的结论时,我们需要判断语句;当需要执行若干个相同的指
令时,我们需要循环语句。
通过学习本章,读者可以达到以下学习目的:
掌握3种形式的判断语句
了解条件运算符与判断语句的转换
掌握switch分支语句
掌握判断语句的嵌套
了解3种循环语句
掌握各种循环的区别
了解循环的跳转
掌握循环的嵌套
3.1 条件判断
计算机的主要功能是提供计算功能,但在计算的过程中会遇到各种各样的情况,针对不同
的情况会有不同的处理方法,这就要求程序开发语言要有处理决策的能力。低级语言使用判断
指令和跳转指令实现决策,高级语言使用选择判断语句实现决策。为描述决策系统的流通性,
设计人员研发出了流程图。流程图使用图形方式描述系统在不同状态下的不同处理方法。开发
人员使用流程图表现程序的结构。
主要的流程图符号如图3.1所示。
使用流程图描述十字路口转向的决策时,利用方位做决定,判断是否是南方,如果是南
方,就向前行;如果不是南方,就寻找南方,如图3.2所示。
程序中使用选择判断语句来做决策,选择判断是编程语言的基础,在C++语言中有3种形
式的选择判断语句,同时提供了switch 语句,简化了多分支决策的处理。下面对选择判断语句
进行介绍。
3.1.1 if语句
if关键字是实现C++组成判断语句的常用方法,形式如下:
if(表达式)
语句
其中,表达式一般为关系表达式,表达式的运算结
果应该是真或假(true或false)。如果表达式为真,就
执行语句;如果表达式的值为假,就跳过,执行下一条语
句。过程如图3.3所示。
【例3.1】 判断输入的数值是否为奇数。
实例位置:光盘MR源码第3章3.1
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
int iInput;
cout << "Input a value:" << endl;
cin >> iInput; // 输入一整型数
if(iInput%2!=0)
cout << "The value is odd number" << endl;
}
程序执行过程的流程图如图3.4所示。
程序分两步执行。
(1)定义一个整型变量iInput,然后使用cin获得用
户输入的整型数据。
(2)对变量iInput的值与2进行%运算,如果运算结
果不为0,表示用户输入的是奇数,这时输出字符串“这
个整数是奇数”;如果运算结果为0,则不进行任何输
出,程序执行完毕。
说明整数与2进行%运算,结果只有0或1两种情况。
要注意第一种形式的判断语句的书写格式。
如判断语句
if(a>b)
max=a;
可以写成
if( a>b ) max=a;
但不建议使用“if(a>b)max=a;”这种书写方式,因为这种方式不便于阅读。
判断中的语句可以是复合语句,也就是说,可以用花括号括起多条简单语句。例如:
if(a>b)
{
tmp=a;
b=a;
a=tmp;
}
3.1.2 if-else语句
在if关键字后使用else关键字表示的是:当程序
进入到if-else 语句中,会根据if 语句的判断内容进行
操作,若为真(true)则执行if语句中的内容;若为
假(false),则执行else语句的内容。其执行过程如
图3.5所示。
【例3.2】 根据分数判断是否优秀。
实例位置:光盘MR源码第3章3.2
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
int iInput;
cout<<"大于90为优秀成绩"<<endl;
cout<<"请输入学生成绩"<<endl;
cin >> iInput;
if(iInput>90)
cout << "成绩优秀" << endl;
else
cout << "成绩非优秀" << endl;
}
用流程图来描述判断语句的执行过程,如图3.6所示。
该程序需要和用户交互,用户输入一个数值,将该
数值赋值给iInput变量,然后判断用户输入的数据是否
大于90,如果大于90,输出字符串“成绩优秀”,否则
输出字符串“成绩非优秀”。
可以看到,程序到此必然经过if或者else 当中的一
项。当else语句内容为空时,if-else与if语句实现的功能
是一样的。
【例3.3】 if-else语句的奇偶性判别。
实例位置:光盘MR源码第3章3.3
#include <iostream>
using namespace std;
void main()
......
....
if......else......