【C++基础教程】第五课
上次的作业答案,非常简单。
第一题:
我们需要知道,字符(char类型)在计算机中存储的时候,是把这个字符对应的代码(专业术语叫做编码)进行存储。例如,换行符'\n'的代码就是10,'0'对应的代码就是48.
c>='0'&&c<='9'表示它的存储代码介于'0'和'9'之间,其中的字符有:
'0' '1' '2' '3' ...'9',所有的数字字符都在里面,因此,输入的是4,它的代码介于两者之间,应该输出4 is a number.
第二题:
#include<iostream>
using namespace std;
int main(){
int a,b;
char c;
cin>>a>>c>>b;
if(c=='+')cout<<a+b;
if(c=='-')cout<<a-b;
if(c=='*')cout<<a*b;
if(c=='/'){
if(b==0)cout<<"error";//除数为0错误
else cout<<a/b;
}
}
根据c的值进行分类计算,注意除数为0的情况(直接除0程序会崩溃)。
注:if语句如果大括号内只有一个语句,括号可以省略
今天我们继续讲解if语句。
if语句的括号中,扩起来的是一个条件表达式。例如,if(a>0)中,a>0就是一个条件表达式。条件表达式的值只有真和假。
尝试阅读程序写结果:
#include<iostream>
using namespace std;
int main(){
if(-1)cout<<"true";
else cout<<"false";
}
输出:true
if语句判断条件表达式时,只要结果不为0,都看做是真。
如果有多个表达式都要满足,我们可以使用逻辑运算符。
例如,判断一个数是否为数字,我们可以使用if(c>='0'&&c<='9'),&&表示前后两个条件都要满足。
#include<iostream>
using namespace std;
int main(){
if(1&&0)cout<<"true";
else cout<<"false";
}
输出:false
只有所有条件均满足(值为1),结果才为1,否则结果为0.
其实&&运算结果类似于乘法运算“*”,只要有一个乘数为0,结果就是0.
如果多个表达式任意一个满足,可以使用||,表示“或”。
#include<iostream>
using namespace std;
int main(){
if(1||0)cout<<"true";
else cout<<"false";
}
输出:true
1和0中,有一个成立,所以结果是成立的,输出true。
同理,或运算也可以看成是加法运算,有一个是1,结果就是1.(如果加法运算算出2或者3这类数值,也是“真”,看做是1)
同时,C++也含有一个运算符“非”,表示将后面的条件取反,1变成0,0变成1.
常见例子:
if(a==0)这个表达式可以写成if(!a),可以自己思考一下为什么。
课后作业:
阅读程序写结果。
#include <iostream>
using namespace std; int main()
{
int a = 5;
int b = 20;
int c ; if ( a && b )
{
cout << "Line 1 - 条件为真"<< endl ;
}
if ( a || b )
{
cout << "Line 2 - 条件为真"<< endl ;
}
/* 改变 a 和 b 的值 */
a = 0;
b = 10;
if ( a && b )
{
cout << "Line 3 - 条件为真"<< endl ;
}
else
{
cout << "Line 4 - 条件不为真"<< endl ;
}
if ( !(a && b) )
{
cout << "Line 5 - 条件为真"<< endl ;
}
return 0;
}
//来源https://www.runoob.com/cplusplus/cpp-operators.html
【C++基础教程】第五课的更多相关文章
- Adafruit的树莓派教程第五课:使用控制电缆
Adafruit的树莓派教程第五课:使用控制电缆 时间 2014-05-09 01:11:20 极客范 原文 http://www.geekfan.net/9095/ 主题 Raspberry PiM ...
- python基础教程项目五之虚拟茶话会
python基础教程项目五之虚拟茶话会 几乎在学习.使用任何一种编程语言的时候,关于socket的练习从来都不会少,尤其是会写一些局域网的通信的东西.所以书上的这个项目刚好可以练习一下socket编程 ...
- Objective-C 基础教程第五章,复合
目录 Objective-C 基础教程第五章,复合 什么是复合? Car程序 自定义NSLog() 存取方法get Set Tires(轮胎) 存取方法 Car类代码的其他变化 扩展Car程序 复合还 ...
- Android OpenGL教程-第五课【转】
第五课 3D空间: 我们使用多边形和四边形创建3D物体,在这一课里,我们把三角形变为立体的金子塔形状,把四边形变为立方体. 先看看三角形的顶点变成啥了 private float[] mTriangl ...
- NeHe OpenGL教程 第五课:3D空间
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Zookeeper基础教程(五):C#实现Zookeeper分布式锁
分布式锁 互联网初期,我们系统一般都是单点部署,也就是在一台服务器完成系统的部署,后期随着用户量的增加,服务器的压力也越来越大,响应速度越来越慢,甚至出现服务器崩溃的情况. 为解决服务器压力太大,响应 ...
- 【C++基础教程】第二课
一,上次的课后练习答案 1,输出1+2=3 2,输出2 2.25 2.25 2.25 3,第一空iostream或bits/stdc++.h 第二空main(),main(void)或main(int ...
- 【C++基础教程】第一课
一,C++基础 1.1.什么是C++ C++是一种面向对象的编程语言,如今被广泛应用于各种行业. 1.2.C++的语法特点 一般C++的程序长成这个样子: #include<...> // ...
- [原]OpenGL基础教程(五)缓冲区数据更新方式
1.glBufferSubData 适用于相同数据类型 void SetPositionY(float y){ vector<Vector3<float>>::itera ...
- python基础教程(五)
字符串基本操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作.但是,请注意字符串都是不可变的. 字符串的方法: 字符串从str ...
随机推荐
- Docker部署netcore web实践
1. 新建一个netcore的项目 2. 我们到项目的生成输出目录下,创建一个Dockerfile文件 3. 编辑Dockerfile文件 备注:红线圈住的地方,就是你生成的netcore的程序名称 ...
- 熬夜肝了一份 C++/Linux 开发学习路线
大家好,我是帅地. 之前写过几篇学习路线的文章 前端开发学习路线 Java 后端开发学习路线 一般开发岗主流的就是 Java 后台开发,前端开发以及 C++ 后台开发,现在 Go 开发也是越来越多了, ...
- SQL注入之MySQL报错注入整理
看大佬们的文章看得我虎躯一震,精神抖擞,于是心血来潮,整理一下MySQL报错注入常见的手段和方法,再举几个例子 <代码审计:企业级Web代码安全架构>一书中介绍过报错注入十大方法,依次是: ...
- (一)Linux之目录结构
Linux之目录结构 目录 Linux之目录结构 一.概述 一.基本介绍 二.具体的目录结构(不用背,知道即可) Linux /usr目录 Linux /var 目录 一.概述 学习 Linux,不仅 ...
- 微信小程序 简易搜索功能实现
先看效果图 挺简单的一个实现方法,导入外部js数据,将数据通过radio-group展示出来,根据数据里的status属性判断显不显示该项. 在搜索框内实时读取输入的数据,去除空格后将数据跟js里的n ...
- docker部署Redis6-0-6
下载redis.conf配置 下载地址: http://download.redis.io/redis-stable/redis.conf 拉取docker镜像 docker pull redis:6 ...
- idea中导包出现import org.apach.*,提交代码老出现冲突,不想使用.*的设置
打开设置>Editor>Code Style>Java>Scheme Default>Imports ① 将Class count to use import with ...
- Dos 获取网络的命令
Netsh mbn 命令 https://docs.microsoft.com/zh-cn/windows-server/networking/technologies/netsh/netsh-mbn ...
- 自研 Pulsar Starter:winfun-pulsar-spring-boot-starter
原文:自研 Pulsar Starter:winfun-pulsar-spring-boot-starter 里程碑 版本 功能点 作者 完成 1.0.0 支持PulsarTemplate发送消息&a ...
- Node.js开发博客系统
数据库设计 用户表: id phone password nickname head_img personal_sign level_id create_time update_time is_del ...