08C++选择结构(2)
一、逻辑变量
教学视频
存储类似灯亮或灯灭、是男还是女等结果只有两种可能的数据时,可以使用逻辑型变量。
逻辑型变量用关键字bool定义,所以又称为布尔变量,其值只有两个false(假)和true(真),false和true是逻辑常量,又称布尔常量。
流程图如下:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
bool light=false;
int n;
cout<<"请输入拉开关几下:";
cin>>n;
cout<<typeid(n).name()<<endl;
if (n>=0 && (n-int(n)==0)) //判断是否输入正常的开关次数 ,是否为整数。
if (n%2==1) //奇数次开关,则灯亮;否则灯灭。
{
light=!light;
cout<<"灯亮";
}
else
cout<<"灯灭";
else
cout<<"输入次数错误!";
return 0;
}
英汉小词典:
bool:布尔
false:假
true:真
练习:
1、表达式(5==6)的值是( )
A.true B.false C.1 D.2
2、阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
bool flag;
int n;
cin>>n;
if (n%2==0) flag=true;
else flag=false;
if (flag) cout<<"yes";
else cout<<"no";
return 0;
}
输入:12
flag和n的输出:
3、完善第11、16行程序。
格莱尔家里有7扇房门,编号分别为1到7.格莱尔的爸爸把所有的门都打开,格莱尔的妈妈把所有编号是2的倍数的房门作相反的处理(原来开着的门关上,原来关上的门打开),格莱尔把所有编号是3的倍数的房门作相反的处理,问共有几扇门是开着的?
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 bool door1,door2,door3,door4,door5,door6,door7;
6 int s=0;
7 door1=door2=door3=door4=door5=door6=door6=door1=true;
8 door2=!door2;
9 door4=!door4;
10 door6=!door6;
11 ;
12 door6=!door6;
13 if(door1)s++;
14 if(door2)s++;
15 if(door1)s++;
16 ;
17 if(door1)s++;
18 if(door1)s++;
19 if(door1)s++;
20 cout<<s<<endl;
21 return 0;
22 }
二、逻辑运算符
教学视频
例程:试编一个程序,输入一个整数,若是3和5的公倍数,则输出“欧耶欧耶”。
流程图如下:
程序:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int n;
cout<<"请输入一个整数:";
cin>>n;
if(n%3==0)
if(n%5==0) cout<<"欧耶欧耶"<<endl;
return 0;
}
这个问题的条件有两个,能被3整除且能被5整除,即n%3和n%5等于零这两条件都要满足。此时,需要用到表示“而且”的逻辑运算符&&(逻辑与)
流程图:
程序:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int n;
cout<<"请输入一个整数:";
cin>>n;
if(n%3==0)
if(n%5==0) cout<<"欧耶欧耶"<<endl;
return 0;
}
逻辑运算符:逻辑与(而且)——— && 逻辑或(或者)——— || 逻辑非(否)——— !
(1)逻辑与&&:
逻辑与是一个双目运算符,使用时&&的两边各一个表达式,如果运算符的左右两边的表达式都为真,表达式整体才为真,否则即为假,如表达式:5&&6、1&&-1、1<2&&5都为真,3-3&&5、10--&&0这两个表达式都为假。
(2)逻辑或||:
逻辑或运算符也是一个双目运算符,使用时候要求两边各一个表达式,如果运算符左右两边的表达式只要有一个为真,那么逻辑或表达式的整体就为真,否则都为假,如表达式:3-3||5为真,0||5-5为假。
(3) 逻辑非!:
逻辑非是一个单目运算符,它表示取反的意思,放在表达式的左边,如!a ,即原先为真的表达式取反之后变为假,原先为假的表达式取反之后变为真。如表达式!0结果为1,!(2>1)结果为0。
练习:
(1)判断整数n不能被3整除的表达式,下列( )是错误的。
A.n%3!=0 B.(n%3==1||n%3==2) C.!(n%3==0) D.(n%3==1&&n%3==2)
(2)阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int n;
int s=0;
cin>>n;
if (n%3==0 || n%5==0) s++;
cin>>n;
if (n%3==0 && n%5==0) s++;
cin>>n;
if (!(n%5==0)) s++;
cout<<s;
return 0;
}
输入:15 15 15
n,s的输出:
(3)完善第18、21行程序。
再摸拟“比尔庄园”登录,输入正确的用户名和密码,输出欢迎语句“亲爱的小朋友,欢迎你!”,否则提示“用户名或密码不正确!”
8 #include <iostream> //包含输入输出流头文件iostream
9 #include <string>
10 using namespace std; //指明程序 使用命名空间std(标准)
11 int main()
12 {
13 const int USER=201701;
14 const string PSW="Computer2020@sina.com";
15 int user;
16 string psw;
17 cout<<"用户名:";
18 ;
19 cout<<"密码:";
20 cin>>psw;
21 if ( )
22 cout<<"亲爱的小朋友,欢迎你!"<<endl;
23 else
24 cout<<"用户名或密码不正确!";
25 return 0;
26 }
三、逻辑运算符的优先级
教学视频
地球绕太阳公转一周的时间称为一个回归年,大约是365.2422天。而我们所使用的日历是基于365天的一年,这样每年就会有大约0.2422天的差异。为了弥补这个差异,每四年增加一天,即闰年中的2月有29天。但是,这样又稍微多出了一些时间,因此又设定了能被100整除但不能被400整除的年份不是闰年的规则,以进一步调整误差。
例程:
试编一个程序,输入一个年份,判断是闰年还是平年。
注:四年一闰,百年不闰,四百年再闰。判断闰年的条件是:年份能被4整除但不能被100整除;或者能被400整除。
流程图如下:
#include <typeinfo> //变量类型头文件,还是有问题;无法判断int
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
bool flag;
int year;
cout<<"请输入一年份:";
cin>>year;
if ((year%4==0 && year%100!=0) || year%400==0)
flag=true;
else
flag=false;
if (flag)
cout<<year<<"是闰年"<<endl;
else
cout<<year<<"是平年"<<endl;
return 0;
}
逻辑运算符的优先级:
练习:
(1)在C++中,表达式(11>12)&&(12<15)||(13+2==15)的值是()
A.10 B.0 C.true D.false
(2)阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int x,y;
cin>>x>>y;
if (x>y && y!=0) cout<<x/y<<endl;
else if (x!=0) cout<<y/x<<endl;
return 0;
}
输入:96 10
x,y的输出:
(3)完善第8、11行程序。
风之巅小学每学期都要进行“吃好、睡好、心情好”的“新三好学生”评比。评比时需要对“吃好”“睡好”“心情好”这三项进行量化打分,80分及以上为优秀,三项都达到优秀的就评为“新三好”,只有两项优秀的则被评为“双优生”。编一程序,输入某位同学的每项分值,判断是“新三好”还是“双优生”。
输入:95 98 100 输入:75 95 85
输出:新三好 输出:双优生
1 #include <iostream> //包含输入输出流头文件iostream
2 #include <string>
3 using namespace std; //指明程序 使用命名空间std(标准)
4 int main()
5 {
6 int eat,sleep,mood;
7 cin>>eat>>sleep>>mood;
8 if ( )
9 cout<<"新三好";
10 else
11 if (eat<80 && sleep>=80 && mood>=80 || eat>=80 && sleep>=80 && mood<80 || )
12 cout<<"双优生";
13 return 0;
14 }
四、复合语句
教学视频
试编一程序,输入两个整数,比较大小,并按从小到大的顺序输出。
编程思想:当a小于或等于b时,先输出a,再输出b;否则先输出b,再输出a。
流程图如下:
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{ int a,b;
cout<<"a,b=";
cin>>a>>b;
if (a<=b)
cout<<a<<" "<<b<<endl;
else
cout<<b<<" "<<a<<endl;
return 0;
}
另一种方法:第1步先判断a是否大于b,当a大于b时,交换a和b的值;第2步输出a与b。
流程图:
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
int a,b,t;
cout<<"a,b=";
cin>>a>>b;
if (a>b)//若在if-else中间有多条语句时,用花括号括起来。
{
t=a;
a=b;
b=t;
}
cout<<a<<" "<<b<<endl;
return 0;
}
注意,上面采用了复合语句(语句块),和使程序清晰易读的“逐层缩进”布置。
练习:
(1)判断a不等于0,且b等于0的正确的逻辑表达式是( )
A.a!=0&&b==0 B.!(a!=0&&b=0) C.!(a==0&&b==0) C.a!==0||b!==0)
(2)阅读程序写结果。
#include <iostream> //包含输入输出流头文件iostream
using namespace std; //指明程序 使用命名空间std(标准)
int main()
{
char ch;
int sum,n;
cin>>ch;
sum=0;
if (ch>='a' && ch<='z')
{
n=ch-'a'+1;
sum+=n;
}
else
sum=27;
cout<<sum;
return 0;
}
输入:b
ch,sum,n的输出:
(3)完善第22,25行程序。
设当前电梯停在第10层,此时第20层和第7层同时有人按下按钮,电梯总是选择离它近的楼层,于是先服务在第7层的人,再服务第20层的人。编程模拟电梯调度,输入3个数,第1个数表示电梯当前停在的楼层,后两个数表示同时需要使用电梯人楼层,按服务先后的次序输出楼层。
8 #include <iostream> //包含输入输出流头文件iostream
9 using namespace std; //指明程序 使用命名空间std(标准)
10 int main()
11 {
12 int n,n1,n2,len1,len2;
13 cout<<"输入当前电梯停在的楼层:";
14 cin>>n;
15 cout<<"输入同时需要服务的两个楼层:";
16 cin>>n1>>n2;
17 if (n-n1>0) //求出当前电梯到n1的楼层数 len1
18 len1=n-n1;
19 else
20 len1=n1-n;
21 if (n-n2>0) //求出当前电梯到n2的楼层数 len2
22 ;
23 else
24 len2=n2-n;
25 if ( ) //先到距离近的楼层服务
26 cout<<n1<<"---->"<<n2;
27 else
28 cout<<n2<<"---->"<<n1;
29 return 0;
30 }
08C++选择结构(2)的更多相关文章
- 黑马程序员——C语言基础 流程控制 选择结构和循环结构
---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...
- C语言中的循环结构与选择结构
1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...
- C- 流程控制(顺序结构,选择结构,循环结构)
一.选择结构 1.if 特点: 同一时刻,只有一个大括号里面的代码会被执行 2,switch 特点 默认情况下,只有一个case后面的代码会被执行 如果一个case后面没有break,而且这个case ...
- 160809212田京诚C语言程序设计实验2 选择结构程序设计_进阶
实验2-6 猜数字游戏 实验要求: 编写一个C程序实现一个[1-100]以内的猜数字游戏. (1) 系统随机产生一个[1-100]之间的随机数. (2) 输入任意一个数字.数字 ...
- 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...
- Java 第四章 选择结构2
第四章 选择结构 (二) switch 选择结构的执行流程是怎样的? switch 选择结构中break关键字的作用? 本章目标 掌握 switch 选择结构 能够综合运用 if 选择结构 和 swi ...
- Java 第三章 选择结构1
选择结构(一) 会使用基本的 if 选择结构 掌握逻辑运算符,掌握多重 if 选择结构 , 掌握嵌套 if 选择 结构 为什么需要 if 选择结构 例如: 如果张浩的 java 考试成绩大于 98分, ...
- Chrome弹窗的简单应用(选择结构与循环结构)
★选择结构★ ★JS实现弹窗显示随机数 示例代码效果图 ★ 弹窗实现对随机数的进一步判断 示例代码效果图 ★综合应用 比较大小 ★ 判断成绩等级 ): : : : : alert(" ...
- Java语法基础(三)----选择结构的if语句、switch语句
[前言] 流程控制语句: 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过 ...
- java中的if-Switch选择结构
字随笔走,笔随心走,随笔,随心.纯属个人学习分析总结,如有观者还请不啬领教. 1.if选择结构 什么是if结构:if选择结构是根据判断结果再做处理的一种语法结构. 起语法是: if(判断条件){ 操作 ...
随机推荐
- Go 学习路线图
基础阶段 学习内容: 掌握 Go 的基本语法,包括变量.常量.数据类型(如整数.浮点数.字符串.布尔值.数组.切片.映射等).运算符等. 理解程序的控制流,如条件语句(if-else.switch-c ...
- namespace hdk
没有高精类,因为这玩意太占内存了,正在优化 demap Rander StringAddition_InFix string ordered_vector #include<bits/stdc+ ...
- 使用duxapp开发 React Native App 事半功倍
Taro的React Native端开发提供了两种开发方式,一种是将壳和代码分离,一种是将壳和代码合并在一起开发 壳是用来打包调试版或者发版安装包使用的 代码是运行在壳上的js代码 Taro壳子的代码 ...
- 搜广推算法校招面试:BOSS直聘 推荐搜索系统工程师
本文介绍2024届秋招中,BOSS直聘的推荐/搜索系统工程师岗位一面的面试基本情况.提问问题等. 2023年12月,赶在秋招的末尾,投递了BOSS直聘的推荐/搜索系统工程师岗位,并不清楚所在的 ...
- 从Windows 11 23H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案
从Windows 11 23H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案 在升级至 Windows 11 24H2 后,使用 git add 等命令时,可能会遇到如下错误提示: ...
- 云原生周刊:Terraform 1.8 发布 | 2024.5.6
开源项目推荐 xlskubectl 用于控制 Kubernetes 集群的电子表格.xlskubectl 将 Google Spreadsheet 与 Kubernetes 集成.你可以通过用于跟踪费 ...
- KubeSphere Namespace 数据删除事故分析与解决全记录
作者:宇轩辞白,运维研发工程师,目前专注于云原生.Kubernetes.容器.Linux.运维自动化等领域. 前言 2023 年 7 月 23 日在项目上线前夕,K8s 生产环境出现故障,经过紧急修复 ...
- AI五子棋_06 坐标表示到图形表示的算法 Python实现
AI五子棋 第六步 恭喜你到达第六步! 你已经成功实现了公钥体系最为关键的部分.现在服务器相信你就是你了,下面开始你的战斗. 五子棋的棋盘有15×15个交点,一共有225个交点,我们可以在每一个交点上 ...
- Java高并发,ReadWriteLock(读写锁)
并发读写的时候,很容易造成数据不一致的状态 上案例,代码如下: public class ReadWriteLockDemo { public static void main(String[] ar ...
- 7. jenkins的代码审查
sonar基本使用 1,sonar安装和配置 SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误.目前 支持java,C#,C/C++,Python,PL/S ...