表达式
赋值运算符
单等号 =
计算顺序:从右往左
double salary = 3200.0; // 计算机是从右往左读的
复合运算符
#include <iostream>
using namespace std;
int main()
{
int num = 1024;
// 演示复合运算符
num += 90; // <==> num = num + 90;
num *= 90;
num /= 90;
num -= 90;
num %= 90;
cout << num << endl;
return 0;
}
关系运算符
#include <iostream>
using namespace std;
int main()
{
// C语言中, 0表示假, 非0表示真
// C++中, 引入了布尔类型 bool
bool flag = true; // false
cout << boolalpha; // 加了这句后,0和1就打印的结果就可以为布尔类型
cout << "15 > 88 吗?" << (15 > 88) << endl;
cout << "16 < 99 吗?" << (16 < 99) << endl;
}
逻辑运算符
运算符 | 表达式 | 说明 |
---|---|---|
&&并且 | 条件1 && 条件2 | 两个条件同时为真时,结果为真 |
|| 或 | 条件1 || 条件2 | 两个条件有一个为真时,结果为 |
! | ! 条件 | 条件为真时,结果为假。条件为假时,结果为真。 |
位运算符
2 << 3 左移了三位:
10 - > 10000 =16
#cout << 3 // << 运算符重载
16 >> 2;
10000 --> 100 =4
4 & 5 = 4
4: 100
-
5: 101
- 100 =4
按位非~
1.二进制取反
0000010 正数
1111101 负数
2.负数二进制转换成10进制
将二进制取反,然后+1,结果为负
00000010 + 1 = 00000011 = 3
sizeof 运算符
: 使用sizeof 运算符 可以获得数据类型占用内存空间的大小
基本用法: sizeof(type_name)
结果以字节为单位
int main{
cout << sizeof(float/0.8/true) << endl;
}
动手练习:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x21SEvha-1616312713747)(C:\Users\君莫笑\AppData\Roaming\Typora\typora-user-images\image-20210321132144265.png)]
练习打卡:
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
cout << setw(23) << "sizeof(char) = " << sizeof(char) <<'\n';
cout << setw(23) << "sizeof(short) = "<< sizeof(short)<<'\n';
cout << setw(23) << "sizeof(int) = " << sizeof(int) <<'\n';
cout << setw(23) << "sizeof(long) = " << sizeof(long) <<'\n';
cout << setw(23) << "sizeof(long long) = " << sizeof(long long) <<'\n';
cout << setw(23) << "sizeof(float) = " << sizeof(float) <<'\n';
cout << setw(23) << "sizeof(double) = "<< sizeof(double)<<'\n';
cout << setw(23) << "sizeof(long double) = "<< sizeof(long double)<<'\n';
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BqohqYaI-1616312713749)(C:\Users\君莫笑\AppData\Roaming\Typora\typora-user-images\image-20210321134341462.png)]
if条件结构
if(条件为真)
{
//代码块1
}
else
{
//代码块2
}
随堂练习:
需求:判断输入字符是否是合法的硬盘盘符
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
char pan = '\0'; // 默认值设置为空字符
cout << "请输入一个字符,我来判读是否合法";
cin >> pan;
// if(pan >= 65 && pan <= 65 +25)
if(pan >= 'A' && pan <= 'Z')
{
cout <<"是合法盘符!" << endl;
}
else
{
cout << "不是合法盘符!" << endl;
}
}
随堂练习2
需求说明:
- 某败家MM购物车如下表:
某宝 | 购物车内容 | |
---|---|---|
商品 | 单价 | 个数 |
Louis(路易威登) | 35000.0 | 1 |
Hermes(爱马仕) | 11044.5 | 1 |
- 刚好是打折季,如果总价大于50000就打7折,否则9折
- 计算最后应付金额
尽量多设置变量
减少计算量的方法之一:总量用变量储存:如本例
#include<iostream>
using namespace std;
int main() {
// 败家MM的购物车
double price_louis = 35000.0;
double price_hemes = 11044.5;
double price_chanel = 1535.0;
double total = 0; // 总价
double zhekou = 0; // 折扣
total = price_chanel + price_hemes + price_louis;
// 如果总价大于5W就打七折,否则打九折
if (total > 50000)
{
// total *=0.7
zhekou = 0.7;
}
else
{
// total *= 0.9;
zhekou = 0.9;
}
total *= zhekou;
cout << "最终付款:" << total << endl;
}
需求变化:
如果购买的三种商品有一种商品单价大于1000
或三种商品总金额大于5000,折扣率为30%
否则没有折扣
#include<iostream>
using namespace std;
int main() {
// 败家MM的购物车
double price_louis = 35000.0;
double price_hemes = 11044.5;
double price_chanel = 1535.0;
double total = 0; // 总价
double zhekou = 0; // 折扣
total = price_chanel + price_hemes + price_louis;
// 如果购买的三种商品有一种商品单价大于1000
// 或三种商品总金额大于5000,折扣率为30%
// 否则没有折扣
if (price_chanel > 1000 || price_hemes > 1000 || price_louis > 1000 || total > 5000)
{
// 折扣0.3
zhekou = 0.7;
}
total *= zhekou;
cout << "最终付款:" << total << endl;
}
多重If结构
if(条件1)
{
//代码块1
}
else if (条件2)
{
//代码块2
}
else
{
// 代码块3
}
需求说明:
发挥脑洞,模拟情人节送花
#include<iostream>
using namespace std;
int main() {
double flowerPrice; // 花的单价
// 打印剧情
cout << "黎明前的黑暗渐渐退去,海天之间透着一抹亮光,像是点燃的火把。。。。。";
cout << "小男生给小女生送花,小女生问:这花多少钱啊?" << endl;
cout << "小男生:";
cin >> flowerPrice;
if (flowerPrice >= 50000)
{
cout << "马上去扯证!" << endl;
}
else if (flowerPrice >= 10000 && flowerPrice < 50000)
{
cout << "" << endl;
}
else if ()
{
}
else
{
}
}
课后作业:根据下面的引导,利用多重If结构制作自助投胎系统流程。
switch 结构
switch 后的表达式只能是整型或字符型
case 后常量表达式的值不能相同
- case 后允许多条语句,不需要大括号
- 如果不添加break语句,需要特别注意执行顺序
- case 和 default 字句的先后顺序可以自行变动
- default 子句 可以省略
switch 开关
case 小case、情况
break 跳出、退出本框的整个程序
default 默认
switch(表达式){
case 常量1:
语句1;
break;
case 常量1:
语句1;
break
......
default:
语句;
}
- 判断某月有几天
#include<iostream>
using namespace std;
int main() {
int month = 4;
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout << "31 天" << endl;
break;
case 2:
cout << "28 天" << endl;
break;
default:
cout << "30 天" << endl;
}
}
switch 和 多重if 对比
相同点:
- 都是用来处理多分支条件的结构
不同点:
- switch: 等值条件 - 条件是有限个的时候(杀鸡刀)
- 多重if:
强调下if 的大括号
int a = 5,b=10;
if(a>b)
if(a++ > --b)
a+=b
cout << a << ‘\t’ << b;
// 强调下if 的大括号
int a = 5, b = 10;
if (a > b){
if (a++ > --b) {
a += b;
}
}
cout << a << '\t'<< b << endl;
总结:
- 表达式是操作数和运算符的集合
- 赋值运算符 执行顺序是从右到左,优先级最低
- sizeof运算符用来得到某一数据类型占用的字节数
- 关系表达式的计算结果为逻辑真(非0)和逻辑假(0)
- 处理条件分支判断的常用结构有三种:
- if - else 结构
- if - else if - else 结构
- switch 结构