《C++语言入门经典》一第3章 重要的逻辑工具——判断与循环 3.1 条件判断

简介: 本节书摘来自华章出版社《C++语言入门经典》一书中的第3章,第3.1节,作者 郭鑫 顾彦玲,更多章节内容可以访问云栖社区“华章计算机”公众号查看

第3章 重要的逻辑工具——判断与循环

视频讲解:90分钟

一个大的问题需要分成若干个小的问题才能够得到解决。C++语言提供了分支语句与循环
语句。当需要一个条件影响到问题的结论时,我们需要判断语句;当需要执行若干个相同的指
令时,我们需要循环语句。

通过学习本章,读者可以达到以下学习目的:
掌握3种形式的判断语句
了解条件运算符与判断语句的转换
掌握switch分支语句
掌握判断语句的嵌套
了解3种循环语句
掌握各种循环的区别
了解循环的跳转
掌握循环的嵌套

3.1 条件判断

计算机的主要功能是提供计算功能,但在计算的过程中会遇到各种各样的情况,针对不同
的情况会有不同的处理方法,这就要求程序开发语言要有处理决策的能力。低级语言使用判断
指令和跳转指令实现决策,高级语言使用选择判断语句实现决策。为描述决策系统的流通性,
设计人员研发出了流程图。流程图使用图形方式描述系统在不同状态下的不同处理方法。开发
人员使用流程图表现程序的结构。

主要的流程图符号如图3.1所示。
使用流程图描述十字路口转向的决策时,利用方位做决定,判断是否是南方,如果是南
方,就向前行;如果不是南方,就寻找南方,如图3.2所示。
image

程序中使用选择判断语句来做决策,选择判断是编程语言的基础,在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;

image

但不建议使用“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......

image

相关文章
|
1月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
34 5
|
1月前
|
C++
【C++】C++ STL 探索:List使用与背后底层逻辑(三)
【C++】C++ STL 探索:List使用与背后底层逻辑
|
1月前
|
C++
【C++】C++ STL 探索:List使用与背后底层逻辑(二)
【C++】C++ STL 探索:List使用与背后底层逻辑
|
1月前
|
存储 编译器 C++
【C++】C++ STL 探索:List使用与背后底层逻辑(一)
【C++】C++ STL 探索:List使用与背后底层逻辑
|
1月前
|
C++
【C++】C++ STL探索:Vector使用与背后底层逻辑(三)
【C++】C++ STL探索:Vector使用与背后底层逻辑
|
1月前
|
编译器 Linux C++
【C++】C++ STL探索:Vector使用与背后底层逻辑(二)
【C++】C++ STL探索:Vector使用与背后底层逻辑
|
1月前
|
编译器 C++ 容器
【C++】C++ STL探索:Vector使用与背后底层逻辑(一)
【C++】C++ STL探索:Vector使用与背后底层逻辑
|
1月前
|
C++
【C++】C++STL 揭秘:Strng背后的底层逻辑(三)
【C++】C++STL 揭秘:Strng背后的底层逻辑
|
1月前
|
存储 C++ 索引
【C++】C++STL 揭秘:Strng背后的底层逻辑(二)
【C++】C++STL 揭秘:Strng背后的底层逻辑
|
1月前
|
编译器 Serverless C++
【C++】C++STL 揭秘:Strng背后的底层逻辑(一)
【C++】C++STL 揭秘:Strng背后的底层逻辑