青舟智学×datawhale,仅为自己学习笔记,推荐大家参加datawhale组队学习注册青舟智学进行学习,侵权的话就删哈
分支结构程序设计
关系与逻辑表达式
关系表达式
- 大于
>和大于等于>=运算符 - 小于
<和小于等于<=运算符 - 相等
==和不相等!=运算符 - 关系表达式返回一个布尔值:成立为1(true)代表真,不成立为0(false)代表假
int hp_a, hp_b;
hp_a = 456;
hp_b = 857;
cout << (hp_a > hp_b) << endl;
cout << (hp_a >= hp_b) << endl;
- 浮点数一般不会用
==或者!=来判断,因为可能产生表示误差。
- 比较两个浮点数是否相等,需要看两个数的差值是否小于一定的精度,比如:
- 对于浮点数
a和b,如果(a - b) < 1e-6如果值为真,就判断两个浮点数相等。
float hp_c, hp_d;
hp_c = 100.0;
hp_d = 100.0;
cout << ((hp_c - hp_d) < 1e-6) << endl;
逻辑表达式
- 关系表达式可以判断某个条件是否成立,逻辑表达式中包含了多个关系表达式,可以对多个条件进行判断
- 常用的逻辑运算符有以下三种:
- 逻辑AND运算符
&&:判断两个关系表达式是否同时成立 - 逻辑OR运算符
||:判断两个关系表达式是否至少有一个成立 - 逻辑NOT运算符
!:判断某个关系表达式是否不成立

bool higher_hp = 1;
bool higher_mp = 0;
cout << (higher_hp && higher_mp) << endl;
cout << (higher_hp || higher_mp) << endl;
cout << (!higher_hp) << endl;
cout << (!higher_hp && !higher_mp) << endl;
运算符优先级
- 至此,我们已经学习的运算符如下:
- 算术运算符(
+`` - * / % ++ --等) - 赋值运算符(
=等) - 位运算符(
<< >>等) - 关系运算符(
> >= < <= == !=等) - 逻辑运算符(
&& || !等)
- 对于这些常用的运算符,按照计算优先级从高到低(左边更高,右边更低)进行排列,可以得到如下表格:

代码:判断闰年
- 判断“闰年”的口诀是:四年一闰,百年不闰,四百年又闰。即闰年分为两种:
- 一种是被400整除的年份
- 一种是不被100整除,但是被4整除的年份
int year;
cin >> year;
bool is_leap_year;
is_leap_year = (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0));
is_leap_year = !(year % 400) || (!(year % 4) && (year % 100));
cout << is_leap_year << endl;
if语句
char opt;
cin >> opt;
if (opt == '6') {
cout << "主人你好!" << endl;
cout << "今天你想吃什么" << endl;
}
else if (opt == '1') {
cout << "小一你好!" << endl;
cout << "今天天气怎么样?" << endl;
}
else if (opt == '2')
cout << "你有什么需要帮助的吗?" << endl;
else if (opt == '4' || opt == '5')
cout << "我不想跟你说话。" << endl;
else
cout << "我不太清楚你是谁..." << endl;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
switch语句
switch用于表示这样的分支结构:根据某个变量不同的值进行不同的操作。
switch (变量名) {
case 变量可能的情况1: 执行语句1; break;
case 变量可能的情况2: 执行语句2; break;
...
default: 执行语句n;
}
- 当遇到
break语句时,switch 终止,控制流将跳转到整个 switch 语句后的下一行。 case后可以没有break, 如果某个case后没有break语句,程序就会接着往下执行。- default:一个switch语句可以有一个可选的
default情况,出现在switch的结尾。default情况可用于上面所有case都不为真时执行。
char opt;
cin >> opt;
switch (opt) {
case '6':
cout << "主人你好!" << endl;
cout << "今天你想吃什么" << endl;
break;
case '1':
cout << "小一你好!" << endl;
cout << "今天天气怎么样?" << endl;
break;
case '2':
cout << "你有什么需要帮助的吗?" << endl;
break;
case '4': case '5':
cout << "我不想跟你说话" << endl;
break;
default:
cout << "我不太清楚你是谁..." << endl;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24