分支结构
if | if …else… 条件判断
课堂练习:输出apples

x 为1 输出 apple, x > 1 输出 apples
方法一: 直接输出不同的提示语
#include <iostream>using namespace std;int main(){int x ;cin >> x;if(x== 1){cout << "Today,I ate 1 apple " << endl;}else{cout << "Today,I ate " << x << " apples ";}}
方法二: 判断是否在apple后追加“s”
#include <iostream>using namespace std;int main(){int x ;cin >> x;cout << "Today,I ate " << x << " apple";if(x > 1){cout << "s";}}
swich case
对于一些分叉很多(常数判断)的情况下,使用if 会比较方便 使用了switch-case语句,判断一个变量是什么值,根据不同的值 来进行操作 case 只能判定常量,执行完一个分支,在下个case 前加break 如果case 的所有情况都不符合,可以使用
语法:
switch (变量名) {case 变量可能的情况1: 执行语句1; break;case 变量可能的情况2: 执行语句2; break;...default: 执行语句n;}
题3.6 小洛机器人

没有break,case语句会继续执行下面的条件判断语句。
#include <iostream>using namespace std;/*例3.6提供以下指令(一个字符),机器人按照指令给出对应的回复:•输入G:打招呼,小洛会回复Hello, my master!,还会在下一行加上一句I'm Xiaoluo.•输入N:自我介绍,小洛只会回复I'm Xiaoluo.•输入S:唱歌,小洛会哼唱Teinei teinei teinei~•输入B或者Q:告别,小洛向你说Bye bye!•其他任何字符:小洛无法理解,只能回复Sorry...*/int main(){char ch;cin >> ch;switch (ch) {case 'G':cout << "Hello, my master!" << endl;// cout << "I'm Xiaoluo." << endl;// break;case 'N':cout << "I'm Xiaoluo." << endl;break;case 'S':cout << "Teinei teinei teinei~" << endl;break;case 'B':case 'Q':cout << "Bye bye!" << endl;break;default:cout << "Sorry..." << endl;}}
关系表达式与逻辑表达式

浮点数精度误差 ( fabs() )
浮点数可能会产生精度误差
所以一般不用== 来判断两个浮点数是否相等
正确的方式:比较这两个数的差值是否小于一定程度
假设fabs(a-b)<1e-6 成立,就可以认为浮点数a 和b 相等。
注意要用<cmath> 头文件
double a, b;......if (a == b) // 这么写是错误的!会造成浮点数误差!if (fabs(a - b) < 1e-6) // 正确的写法,注意 <cmath>
逻辑表达式
多个条件复合成一个条件进行判断。
- 与:a&&b,当这两个条件都为真,其为1
- 或:a||b,当两个条件至少有一个为真,其为1,否则0
- 异或:a^b,当两个条件刚好一个为真,其为1,否则0
- 非:!a,当a 为假时,其为1,否则0
运算的优化级

数的性质 (p5710)
例3.2(洛谷P5710)
一些数字可能拥有以下的性质:
- 性质1:是偶数;
- 性质2:大于4 且不大于12。
小A 喜欢这两个性质同时成立的数字;Uim喜欢这至少符合其中 一种性质的数字;八尾勇喜欢刚好有符合其中一个性质的数字; 正妹喜欢不符合这两个性质的数字。
现在输入一个数字x(0≤x≤100),要求输出这4 个人是否喜欢这 个数字,如果喜欢则输出1,否则输出0,用空格分隔。
闰年判断
例3.3(洛谷P5711)
输入一个年份(大于1582 的整数),判断这一年是否为闰年,如 果是输出1,否则输出0。
- 被4 整除(p1)是闰年,除非
- 被100 整除(p2)不是闰年,除非
- 被400 整除(p3)又是闰年
// 判断闰年#include <iostream>using namespace std;int main(){int n ;cin >> n;bool p1,p2,p3;p1 = (n % 4) == 0;p2 = (n % 100 ) == 0; // 成立是平年 不成立是闰年p3 = (n % 400 ) == 0;if(p3 || (p1 && !p2) ){cout << "闰年" << endl;}// if( n %400 == 0 || (n % 4 && !(n%100) )){}}

