C 班 第 3 课:让电脑自己做决定

适用对象: 完成了第 2 课(变量盒子、四则运算、cin)的同学 使用方式: 自学讲义。放在电脑旁边,边读边照着做 学完本课,你应该能:

  1. 让电脑"比较"两个数的大小
  2. if 让电脑根据情况做出不同的反应
  3. 做一个"猜数字"小游戏

遇到问题怎么办: 老规矩——先把出问题的那一步重新读一遍,逐字对照。这节课最容易错的地方是把"判断相等"的 == 少写了一个等号。


1. 热身:把上节课的加法机再敲一遍(10 分钟)

打开 Dev-C++,新建源代码,保存为 lesson3.cpp。照着敲一遍上节课的翻倍机,确认还记得 cin/cout 怎么用:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    cout << n * 2 << endl;
    return 0;
}

运行成功(敲个数字试试)再往下读。


2. 比较:电脑也会分对错(20 分钟)

生活里你天天在比大小:"这个玩具比那个贵""我比弟弟高"。电脑也能比,而且比出的结果只有两种:对(真)错(假)

C++ 里比较用这些符号:

符号 意思
== 等于(注意是两个等号!
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

试一试,把比较结果直接打印出来看看:

#include <bits/stdc++.h>
using namespace std;

int main() {
    cout << (3 > 5) << endl;
    cout << (3 < 5) << endl;
    cout << (3 == 3) << endl;
    return 0;
}

屏幕显示:

0
1
1

📝 电脑里"对"用数字 1 表示,"错"用数字 0 表示。 3 > 5 是错的,显示 03 < 53 == 3 都是对的,显示 1

⚠️ === 是两回事! = 是"放数字进盒子"(上节课学的赋值),== 才是"问电脑相不相等"。这个符号本课会反复用到,一开始就记牢:一个等号是放东西,两个等号是问问题。


3. if:如果……就……(25 分钟)

if 就是"如果"——满足条件就做一件事,不满足就跳过。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int score;
    cin >> score;
    if (score >= 60) {
        cout << "及格了" << endl;
    }
    return 0;
}

三步读:if 后面的小括号里放条件;条件成立,就执行紧跟着的大括号 { } 里的内容;条件不成立,大括号里的内容整个跳过不执行

分别输入 8050 各跑一次,看看有什么不同——输入 50 时,屏幕什么都不显示,这是正常的,因为条件不成立,大括号被跳过了。

else:不满足的时候也想做点什么

#include <bits/stdc++.h>
using namespace std;

int main() {
    int score;
    cin >> score;
    if (score >= 60) {
        cout << "及格了" << endl;
    } else {
        cout << "不及格" << endl;
    }
    return 0;
}

else 跟在 if 的大括号后面,意思是"上面条件不成立的话,就做这个"。这次不管输入什么分数,屏幕都会有话说。分别输入 8050 验证两种情况。

⚠️ 别忘了 if 后面的小括号和大括号 { }——这是 C++ 的硬性规定,少一个都会报错。


4. 练习:猜数字游戏(20 分钟)

做一个小游戏:电脑心里"想"了一个数 13(直接写在代码里),你猜一个数,电脑告诉你"猜对了"还是"猜错了"。

⭐ 基础:对不对(就用 lesson3.cpp

#include <bits/stdc++.h>
using namespace std;

int main() {
    int guess;
    cin >> guess;
    if (guess == 13) {
        cout << "猜对了!" << endl;
    } else {
        cout << "猜错了" << endl;
    }
    return 0;
}

试着输入 13、再输入别的数字,各跑一次。

⭐⭐ 进阶:加个提示(新建 guess2.cpp

猜错的时候,再告诉玩家"猜大了"还是"猜小了"——这需要三选一,if 后面接一个 else if

输入样例:      输入样例:
20             5

输出样例:      输出样例:
猜大了          猜小了
参考答案
#include <bits/stdc++.h>
using namespace std;

int main() {
    int guess;
    cin >> guess;
    if (guess == 13) {
        cout << "猜对了!" << endl;
    } else if (guess > 13) {
        cout << "猜大了" << endl;
    } else {
        cout << "猜小了" << endl;
    }
    return 0;
}

else if 的意思是"上面不成立,就再判断一个新条件"——三条路只会走一条:等于走第一条,大于走第二条,剩下的(也就是小于)走第三条。

⭐⭐⭐ 挑战:成年了没有(新建 age_check.cpp

输入一个年龄,如果 大于等于 18,输出 成年了;否则输出 再等等,并且顺便算出还差几年(提示:18 - age)。

输入样例:      输入样例:
20             10

输出样例:      输出样例:
成年了          再等等
               还差8年
参考答案
#include <bits/stdc++.h>
using namespace std;

int main() {
    int age;
    cin >> age;
    if (age >= 18) {
        cout << "成年了" << endl;
    } else {
        cout << "再等等" << endl;
        cout << "还差" << 18 - age << "年" << endl;
    }
    return 0;
}

大括号 { } 里可以写不止一行——else 的大括号里这次写了两行 cout,都会执行。


本课要点速查

代码 意思
== 判断相等(两个等号,和赋值的 = 不一样!)
!= > < >= <= 不等于、大于、小于、大于等于、小于等于
if (条件) { ... } 条件成立才执行大括号里的内容
else { ... } 上面条件不成立时执行
else if (条件) { ... } 再加一层判断,用于三选一或更多

电脑的"对"和"错": 对 = 1,错 = 0cout << (3 > 5) 显示 0


结束前的自我检查

  1. 向家里人解释 === 有什么不同,各举一个例子
  2. 猜数字游戏三个练习都运行成功,分别验证"猜对""猜大""猜小"三种情况
  3. 不看讲义,把 if / else if / else 的框架默写出来
  4. ⭐ 和 ⭐⭐ 练习完成(⭐⭐⭐ 做不出来没关系,多输入几组数字试试就懂了)