算法的基本控制结构之选择结构
流
数据从一个对象到另一个对象的流动我们一般称之为“流”,比如程序中的数据在屏幕上显示出来,我们可以想成数据从程序流向屏幕,就是输出流。从键盘输入数据就是输入流了。从流中获取数据叫做提取操作,向流中添加数据叫做插入操作。cin是系统预定义的输入流,用来处理标准输入即键盘输入。cout是预定义的输出流,用来处理标准输出,即屏幕输出。
<<
“<<”是预定义的插入符,它用在cout上可以实现屏幕输出。使用形式如下:cout<<表达式<<表达式...
。这里可以连着多个表达式,输出多个数据到屏幕。这里的表达式可以是很复杂的表达式,系统会计算出这些表达式的值只把结果传给插入符<<,然后显示到屏幕上。
例如,cout<<"a+b="<<a+b;
会把"a+b="这个字符串和a+b的计算结果输出到屏幕。如果a=1,b=2;则屏幕上显示a+b=3。
>>
“>>”是提取符,用到cin上用来把键盘上输入的数赋值给变量。使用形式为:cin>>表达式>>表达式...
。这里的提取符也可以有多个,每个后边跟一个表达式,这里的表达式一般是用来存放输入值的变量。
比如,int a,b; cin>>a>>b;
后面这个语句要求从键盘上输入两个整型数,两个数之间用空格分隔,如果输入 3 4,则变量a的值为3,b的值为4。
操纵符
操纵符用来把输出值以特殊的格式显示出来。比如setw(int)用来设置域宽,就是设置数值的显示位数,setprecision(int)用来设置浮点数的小数位数(包括小数点),endl插入换行符,并刷新流。还有Dec,Hex,Oct是要求以几进制显示。
基本控制结构
算法的基本控制结构包括顺序结构、选择结构和循环结构。顺序结构就是按照事物的逻辑一条语句一条语句的写下来,顺序执行,就像流水账。
如果有这样一个问题,若x<0,则y=-1,若x=0,则y=0,若x>0,则y=1。这里涉及到好几种选择,顺序结构肯定不行了,就要用到选择结构。
用if语句实现选择结构
if语句专门用来实现选择结构,使用形式为:
if (表达式)语句1
else语句2
这个结构的执行顺序是,先计算表达式的值,如果为true,则执行语句1,否则就执行语句2。比如,
if (x>y)cout<<x;
elsecout<<y;
这段程序可以用来输出x和y中比较大的那个数。if语句中的else和语句2可以没有,变成:if (表达式) 语句。比如,if (x>y) cout<<x。
我们就在这个main函数里写一段代码,用来判断输入一个年份时这个年份是不是闰年。大家知道,可以被4整除不能被100整除,或者能被400整除的年份都是闰年。下面是程序:
#include <iostream>
using namespace std;
int main()
{int nYear;bool bIsLeapYear;cout<<"Enter the year:";cin>>nYear;bIsLeapYear = ((nYear%4==0 && nYear%100!=0) || (nYear%400==0));if (bIsLeapYear)cout<<nYear<<"is a leap year."<<endl;elsecout<<nYear<<"is not a leap year."<<endl;return 0;
}
多重选择结构
嵌套的if语句
使用的语法形式:
if(表达式1)if(表达式2) 语句1else 语句2
elseif(表达式3) 语句3else 语句4
语句1、2、3、4可以是复合语句。每一层的if都要与else配对,如果省略掉一个else则要使用{}把这一层的if语句括起来。建议大家写程序的时候最好每层都用大括号括起来这样会大大减少出错的概率,也比较整齐,即使是熟手也一样。再给大家举个例子:
#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;elsecout<<"x<y"<<endl;}else{cout<<"x=y"<<endl;}return 0;
}
if…else if语句
若if语句的嵌套都在else分支下,就可以使用if…else if语句。使用的语法形式为:
if (表达式1) 语句1
else if (表达式2) 语句2
else if (表达式3) 语句3
...
else 语句n
这里的执行逻辑就是,如果表达式1为true,则执行语句1,如果表达式1为false,且表达式2为true则执行语句2,如果表达式1、表达式2为false,且表达式3为true则执行语句3…就这样一层一层判断着执行下去。
switch语句
我们进行判断选择的时候,有可能每次都是对同一个表达式的值进行判断,那么就没有必要在每一个嵌套的if语句里都计算一下它的值,而是使用switch来解决这个问题。语法形式为:
switch (表达式)
{case 常量表达式1: 语句1case 常量表达式2: 语句2...case 常量表达式n: 语句ndefault: 语句n+1
}
此类语句的执行顺序是,先计算表达式的值,然后在case语句中寻找与之相等的常量表达式,跳到此处开始执行,若没有与之相等的则跳到default开始执行。
使用switch语句时要注意以下几点:这些常量表达式的值不能相同,顺序可以随便;每个case语句的最后都要加break语句,不然会一直把下面所有的语句执行完;switch括号里的表达式必须是整型、字符型和枚举型的一种;每个case下的语句不需要加{};如果多个case下执行一样的操作,则多个case可以共用一组语句,比如:
case 1:
case 2:
case 3: a++;break;
如果整型变量a为0则输出“小鸡”,如果为1则输出“小啄”,如果为2则输出“小米”,其他情况下输出“鸡啄米”。程序如下:
#include <iostream>
using namespace std;
int main()
{int a;cout<<"Enter a:";cin>>a;switch (a){case 0:cout<<"小鸡"<<endl;break;case 1:cout<<"小啄"<<endl;break;case 2:cout<<"小米"<<endl;break;default:cout<<"鸡啄米"<<endl;break;}return 0;
}
算法的基本控制结构之选择结构相关推荐
- 算法的基本控制结构之循环结构
while语句 使用的语法形式是: while(表达式) 语句 它的执行顺序是,先计算while括号里表达式的值是true还是false,如果是true则执行循环体也就是后面的语句,如果是false则 ...
- Python中的程序控制结构 顺序结构和选择结构
目录 Python中的程序控制结构(一) 1.程序中的组织结构 2.顺序结构 3.对象的布尔值 4.分支结构 4.1 单分支if结构 4.2 双分支if...else结构 4.3 多分支if...el ...
- python入门之控制结构顺序与选择结构_Python 入门之控制结构 - 顺序与选择结构——第1关:顺序结构...
Python 入门之控制结构 - 顺序与选择结构--第1关:顺序结构 任务描述 程序最基本的结构就是顺序结构,顺序结构就是程序按照语句顺序,从上到下依次执行各条语句. 本关要求学习者理解顺序结构,并对 ...
- C语言中 用选择结构编译算法,C语言程序设计立体化教程(高等教育立体化精品系列规划教材)...
导语 内容提要 李刚.唐炜主编的<C语言程序设计立体化教程(高等教育立体化精品系列规划教材)>主要分为四篇:语法基础篇.程序设计结构篇.初级应用篇和高级应用篇:其中第一篇语法基础部分介绍了 ...
- 《算法笔记》2.3小节——C/C++快速入门-选择结构
<算法笔记>2.3小节--C/C++快速入门->选择结构 Contest100000567 - <算法笔记>2.3小节--C/C++快速入门->选择结构 Conte ...
- 《算法笔记》——基础篇习题选择结构
<算法笔记>--基础篇习题 第二章 C/C++快速入门--2.3选择结构 [习题A] 一元二次方程求根 Problem Description Thinking Notes Code Im ...
- java中if条件结构_Java的控制结构,IF条件选择结构
Java条件选择结构有4种: if单选择结构 if双选择结构 if多选择结构 嵌套的if选择结构 switch多选择结构 一.if单选择结构 语法: if(布尔表达式){ 执行布尔表达式为true的语 ...
- 非顺序控制结构的c语言语法是怎样的,流程控制语句:顺序结构和选择结构
流程控制语句 概述:控制程序的执行流程 分类: 顺序结构 选择结构 循环结构 顺序结构语句 顺序结构语句:从上往下,依次执行 选择结构 if语句: switch语句: if语句: 格式1: 格式2: ...
- Python 入门之控制结构 - 顺序与选择结构
第1关:顺序结构 任务描述 程序最基本的结构就是顺序结构,顺序结构就是程序按照语句顺序,从上到下依次执行各条语句. 本关要求学习者理解顺序结构,并对输入的三个数changeone.changetwo. ...
最新文章
- 即时通讯下数据粘包、断包处理实例(基于CocoaAsyncSocket)
- 推荐系统发展的六大影响因子 | 深度
- Go之Beego原生查询QueryRow QueryRows Values ValuesList ValuesFlat RowsToMap RowsToStruct
- Contracts for Java
- 模型压缩案例-SSDYou only look once
- cnpm不是内部或外部命令 cnpm: command not found 解决方案 cnpm
- Javascript实现AES加密解密(ECB/CBC)
- 计算机软著研究生毕业,关于研究生推免工作科研成果和竞赛计分详细说明
- 宏定义(#ifndef+#define+#endif)的作用
- 用74161设计十二进制计数器
- 开发工具之IAR下载与安装
- 迄今见过的最好的职业规划文章
- 网络画板的文本编辑器也是markdown编辑器吗?
- 电脑解锁后黑屏有鼠标_电脑开机后黑屏只有鼠标怎么办
- 2023移动云大会 | “六大”服务承诺 全力做优“心级服务”
- 【AI视野·今日CV 计算机视觉论文速览 第182期】Fri, 10 Apr 2020
- mod在计算机导论中是什么意思,计算机导论ppt课件
- 故障排查 ❀ 路由器接口故障排除与解析
- 鸿蒙系统越狱,Unc0ver越狱团队为其工具发布了一个新更新
- win 和linux
热门文章
- Win-MASM64汇编语言-NEG指令
- 结构体指针大小_C语言100题集合013-指向结构体变量的指针
- python分行打印list_python怎么打印list-问答-阿里云开发者社区-阿里云
- 74LS139改3―8线译码器_3、5号线沿线楼盘6800起!另:为无缝衔接地铁 新增调整公交线路一览!...
- 深入理解Android(二):Java虚拟机Dalvik
- 20181213-python1119作业郭恩赐
- Xcode打包上传时,最后一步出现An error occurred uploading to the iTunes Store.的解决方法...
- SQLite(二)高级操作
- acdream 1042: Classification of the species 抽象无根树并查集
- Purus系统常见使用问题及解决方式FAQ 1