表达式和条件结构

表达式

赋值运算符

单等号 =

计算顺序:从右往左


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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLU2fakT-1616312713746)(C:\Users\君莫笑\AppData\Roaming\Typora\typora-user-images\image-20210321131713537.png)]

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.01
Hermes(爱马仕)11044.51
  • 刚好是打折季,如果总价大于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结构制作自助投胎系统流程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ik2RuLDC-1616312713752)(C:\Users\君莫笑\AppData\Roaming\Typora\typora-user-images\image-20210321145449503.png)]

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 结构
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值