再次说明,本专栏文章采用最少必要知识原则,只讲解必要知识,让青少年,先上手编程,再上道。
文章采用更简单易懂的文字,不涉及很多的专有名词,部分举例有失精准。一切为了开始入门编程。
请先复习上文 – 重点回顾 – 部分内容。
多分支 if … else if … else
多分支语句,是对同一个条件表达式的的不同结果,分别执行不同的代码块。({ }
括起来的就是代码块)
举例:判断一个整数,是正数、负数、还是 0。判定整数和 0 的关系
- 若是大于 0,输出 positive
- 若是小于 0,输出 negative
- 若是等于 0,输出 zero
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
if(n > 0) {
cout << "positive" << endl;
} else if(n < 0) {
cout << "negative" << endl;
} else if(n == 0) {
cout << "zero" << endl;
}
return 0;
}
其中,最后一个 else if(n == 0)
,可直接写成 else
,这没有任何问题,但不建议,我一般写成 else if(n == 0)
,可读性会更加好。else
最好只单独和 if
使用,也就是双分支 if ... else ...
。
任务1:请有感情的完成上述程序,好好体会
else if
。→
if ... else if ... else if ...
多分支语句,理解很容易,但更多的是练习。练习中的体悟很重要。加油 ~
分支嵌套语句
如题,就是if
语句里,套另一个 if
语句。形式如下:
尽量别嵌套,实在要嵌套,别超过三层。
if(statement1) {
if(statement2) {
if(statement3)
/* coude here */
}
}
实际使用较少,大家知道这回事就行,练习时,用到再说,纯粹学,无意义,徒增烦恼和不会。
switch 语句
switch
语句,几乎仅有两个场景会用到,一是:多分支 if ... else if ... else if ...
,其条件表达式是和某些具体数值判等时,使用 switch
,代码稍加易读;二是:炫技-展现奇技淫巧的时候,比如 case
贯穿问题,比如明明是范围判断的问题,非要整理成,单个数值判断的问题,就是为了搞你。
但还是需要了解的,来看 switch
代码模板 ,除了 /* code here */
,其余部分,固定格式。
switch(变量名) {
case 变量可能的值1:
/* code here */
break; // 处理完成,结束 switch
case 变量可能的值2:
/* code here */
break; // 处理完成,结束 switch
case 变量可能的值3:
/* code here */
break; // 处理完成,结束 switch
default: // 当变量值,不在上述的 case 中
/* code here */
break; // 处理完成,结束 switch
}
再来看一个案例:按照成绩级别,输出对应分数区间:
- 若输入 A,输出 [90, 100]
- 若输入 B,输出 [80, 89]
- 若输入 C,输出 [60, 79]
- 若输入 D,输出 [0, 60]
// 多分支 if...else if...else if... 版
#include <iostream>
using namespace std;
int main(){
// 从成绩级别 A、B、C、D 来看分数区间
// A 对应 [90, 100]
// B 对应 [80, 90]
// C 对应 [60, 79]
// D 对应 [0, 59]
char ch;
cin >> ch;
if(ch == 'A') {
cout << "[90, 100]" << endl;
} else if(ch == 'B') {
cout << "[80, 89]" << endl;
} else if(ch == 'C') {
cout << "[60, 79]" << endl;
} else if(ch == 'D') {
cout << "[0, 59]" << endl;
} // 当然,else if(ch == 'D') 可以用 else,但不推荐
return 0;
}
// switch 版
#include <iostream>
using namespace std;
int main(){
char ch;
cin >> ch;
switch(ch) {
case 'A':
cout << "[90, 100]" << endl;
break;
case 'B':
cout << "[80, 89]" << endl;
break;
case 'C':
cout << "[60, 79]" << endl;
break;
case 'D':
cout << "[0, 59]" << endl;
break;
default: // 输入不合法
cout << "INVALID" << endl;
break;
}
return 0;
}
任务2:有感情的完成上述程序,了解并体会
switch
。若对
case
贯穿现象,有了解的欲望,可以搜索,或等咱们遇到,再说。
三目运算符
三目运算符? :
,也是一种条件判断,猜测,三目运算符的初衷,是为了是实现更加优雅的 if...else...
。代码模板如下:
条件表达式 ? 表达式1 : 表达式2;
当条件表达式的结果为 true
时,返回 表达式1 的值,否则,返回 表达式2 的值。
举例:判断奇偶数。输入一个整数,若整数可被 2 整除,为偶数,输出 even,否则,为奇数,输出 odd。
// if ... else ... 版
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
if(n % 2 == 0) {
cout << "even" << endl;
} else {
cout << "odd" << endl;
}
return 0;
}
// if ... else ... 版
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
cout << (n % 2 == 0 ? "even" : "odd" ) << endl;
return 0;
}
任务3:有感情的完成上述程序,体会 三目运算符 的用途。
三目运算符也有一些奇技淫巧和花里胡哨,甚至可以替代 if ... else if ... else if ...
。非常不推荐!暂时不说,等后面遇到再说。先给大家看看这种代码的丑陋。
条件表达式1 ? (条件表达式2 ? (条件表达式3 ? 表达式1 : 表达式2) : 表达式2 ): 表达式3;
条件表达式1 ? 表达式1 : 条件表达式2 ? 表达式2 : 表达式2;
PS:总是说,语句和表达式,这里简单说一下两者的区别,但不必深究。
语句是可以单独执行的、能够产生实际效果的代码,比如输出输入语句;
表达式则是包含在语句中,根据某种条件计算出一个值或得出某种结果,然后由语句去判断和处理的代码。
C++ 语言中所有的语句和声明都是用分号
;
结束。偶尔,表达式也可以单独作为一条语句执行。
逻辑表达式
套用关系运算符和关系表达式的关系,来看一下。
逻辑表达式:就是用逻辑运算符,将多个条件表达式串起来的表达式,逻辑表达式的结果要么是 true
,要么是 false
。
逻辑运算符:逻辑与 &&
代表 and、逻辑或 ||
代表 or、逻辑非 !
代表 not。
逻辑运算规则:A 代表 条件表达式1,B 代表 条件表达式2
- 逻辑与
&&
代表 and:A && B
,只有 A 和 B 都是true
,结果才是true
,否则为false
- 逻辑或
||
代表 or:A || B
,A 和 B 至少有一个true
,结果才是true
,否则为false
- 逻辑非
!
代表 not:!A
,A 是true
,结果是false
,A 是false
,结果是true
举例:键盘输入一个学生的成绩,若是成绩大于等于90,而且小于等于100,输出 Excellent,否则,输出 Fighting
分析:大于等于90,而且小于等于100 → 而且代表 and ,也就是逻辑与 &&
分析:若 = 如果 = if
,否则 = else
#include <iostream>
using namespace std;
int main(){
int score;
cin >> score;
if(score >= 90 && score <= 100) {
cout << "Excellent" << endl;
} else {
cout << "Fighting" << endl;
}
return 0;
}
任务4:有感情的完成上述程序,体会逻辑与
&&
举例:键盘输入一个整数,如果满足下面的条件之一,输出 yes,否则,输出 no
- 可以被 3 整除;
- 可以被 5 整除;
- 可以被 7 整除;
分析:满足条件之一 → 多个条件满足一个就行,逻辑或 ||
分析:如果 … 否则 … → 两种结果,使用双分支 if...else...
#include <iostream>
using namespace std;
int main(){
int num;
cin >> num;
// 条件表达式过多,灵活使用 ( ) 括起来
if((num % 3 == 0) || (num % 5 == 0) || num % 7 == 0) {
cout << "yes" << endl;
} else {
cout << "no" << endl;
}
return 0;
}
逻辑非 !
,单目运算符,只能操作 !
后的条件表达式,将其结果取反,如果条件表达式结果是 true
,加 !
,整个逻辑表达式结果是 false
。
重点回顾
回顾重点
- 多分支
if...else if...else if ...
和switch
- 逻辑运算符:
&&
||
!
- 逻辑表达式
内容较少,但都是重点,爬楼查看 ~