再次说明,本专栏文章采用最少必要知识原则,只讲解必要知识,让青少年,先上手编程,再上道。

文章采用更简单易懂的文字,不涉及很多的专有名词,部分举例有失精准。一切为了开始入门编程。

请先复习上文 – 重点回顾 – 部分内容。

多分支 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

重点回顾

回顾重点

  1. 多分支 if...else if...else if ...switch
  2. 逻辑运算符:&& || !
  3. 逻辑表达式

内容较少,但都是重点,爬楼查看 ~

课后练习

在洛谷上注册自己的账户。完成一下入门题单 – B2035-B2051。


版权声明:本文为HackerBeginner原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/HackerBeginner/article/details/124298022