CC++ & Algorithm

算术运算与关系运算

中等5
语言版本:C++
概述:学会做数学计算和比较大小,像计算器一样灵活。

算算术,比大小——C++中的算术与关系运算符

我们在生活和学习中经常要做数学计算和比较大小,比如算零花钱、比较考试成绩。C++也能做这些事,它就像一台聪明的计算器,不仅能算加减乘除,还能比较两个数哪个大、哪个小,或者判断是否相等。掌握这些运算,是编写程序的基础。

算术运算:像计算器一样算

C++里常见的算术运算符有:加(+)、减(-)、乘(*)、除(/)和取余数(%)。其中加减乘除和数学里的几乎一样,但有两个小秘密:整数除法会丢掉小数部分取余数只能用在整数上

下面用代码来看一看:

int a = 10, b = 3;           // 定义两个整数
int sum = a + b;      // 加法:10 + 3 = 13
int diff = a - b;     // 减法:10 - 3 = 7
int prod = a * b;     // 乘法:10 * 3 = 30
int quot = a / b;     // 除法:10 / 3 = 3(整数除法,小数部分被丢掉!)
int rem = a % b;      // 取余:10 % 3 = 1(10除以3余1)

生活例子:假如你有10块零花钱,要分给3个朋友,每人能分到3块(10 / 3 = 3),还剩1块(10 % 3 = 1)。如果没有取余运算,要算剩下的钱就很麻烦。

注意:整数除法和数学除法不同。10 / 3 在数学里是 3.333…,但在C++整数除法中结果是 3,小数部分直接被砍掉,不会四舍五入。如果你想得到小数,至少要让其中一个数是浮点数(带小数点),比如 10.0 / 310 / 3.0,结果就是 3.33333。我们以后会专门学浮点数运算。

关系运算:比大小,判相等

关系运算用来比较两个数的关系:“大于”“小于”“等于”等等。比较的结果只有两个:成立(true)不成立(false) 。以后可以用这些结果来决定程序走哪条路(比如判断是否及格再打印不同的话)。

常用的关系运算符:

运算符含义例子(假设 score = 85结果
>大于score > 60true
<小于score < 100true
>=大于等于score >= 85true
<=小于等于score <= 50false
==等于(注意是两个等号)score == 85true
!=不等于score != 100true

代码示例:

int score = 85;                     // 考试成绩
bool isPass = score >= 60;          // 是否及格?85 >= 60 成立,isPass 为 true
bool isFull = score == 100;         // 是否满分?85 == 100 不成立,isFull 为 false

生活例子:你要买一个游戏机,价格是300元。你手里的零花钱是 money。那么 money >= 300 就是你是否买得起,结果是true或false。

千万注意:判断两个数是否相等,要用两个等号 ==,一个等号 = 是赋值(把右边的值放进左边的变量里)。如果把 if (score == 100) 写成 if (score = 100),程序会先把100赋给score,然后判断100是否为真(非零就是真),结果永远成立,这就是一个经典错误!

新手容易踩的坑

  1. 整数除法丢小数
    int result = 7 / 2; 得到 3,而不是 3.5。如果你想要精确的小数,一定要用浮点数。

  2. 取余数只能对整数
    7.0 % 2 会报错,因为 % 只能用于 int 类型的操作数。

  3. === 搞混
    写条件时总想着“等于”,顺手写了一个等号,结果程序逻辑全错了。养成习惯:判断相等用两个等号,赋值用一个等号。

  4. 关系运算结果直接输出时,显示 1 或 0
    例如 cout << (10 > 5); 会输出 1(true)而不是单词“true”。如果需要显示“true”或“false”,要用到后面学的 if 语句或者 boolalpha

完整可运行的示例

下面这个程序,输入两个整数,计算它们的和、差、积、商和余数,并比较大小。这是算术运算和关系运算的综合应用。

#include <iostream>
using namespace std;

int main() {
    int x, y;                              // 定义两个整数
    cout << "请输入两个整数: ";
    cin >> x >> y;                         // 从键盘读入

    cout << "和: " << x + y << endl;
    cout << "差: " << x - y << endl;
    cout << "积: " << x * y << endl;
    cout << "商: " << x / y << " 余数: " << x % y << endl;

    // 关系运算的结果输出 1 或 0
    cout << x << " 大于 " << y << " ? " << (x > y) << endl;
    cout << x << " 等于 " << y << " ? " << (x == y) << endl;

    return 0;
}

运行示例
输入 10 3,会得到:

和: 13
差: 7
积: 30
商: 3 余数: 1
10 大于 3 ? 1
10 等于 3 ? 0

你还可以试试输入 7 5100 100,看看结果有什么变化。

接下来学什么

算术运算和关系运算是编程的“砖块”,接下来这些“砖块”会搭成更复杂的建筑:

  • 分支结构(if / else):利用关系运算的结果,决定程序执行哪一段代码。比如“如果分数>=60,输出‘及格’,否则输出‘不及格’”。
  • 逻辑运算(&&、||、!):把多个关系运算组合起来,比如“分数>=90 且 作业已交”。
  • 浮点数运算:小数运算及注意事项(精度问题)。
  • 循环(for / while):需要反复比较条件,比如“一直扣零花钱,直到余额小于0”。

把这些运算练熟,你就能写出更多有趣的程序了!

例题精讲

1单选题

在C++中,表达式 (5 % 2) + (3 > 1) 的值是?

A1
B2
C3
D4
2单选题

已知 int a = 5, b = 2; double c = a / b; 则 c 的值是?

A2.5
B2.0
C2
D3.0
3判断题

在C++中,取模运算符 % 可以对浮点数进行操作。

4判断题

关系表达式 (a <= b) 的结果是 bool 类型,可以直接赋值给 int 变量,此时 true 转换为 1,false 转换为 0。

5填空题
以下代码用于判断两个整数的和是否大于10,并输出结果。请填空。
int x = 4, y = 7;
int sum = x ___ y;
bool flag = sum ___ 10;
cout << flag;