算术运算与关系运算
中等5算算术,比大小——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 / 3 或 10 / 3.0,结果就是 3.33333。我们以后会专门学浮点数运算。
关系运算:比大小,判相等
关系运算用来比较两个数的关系:“大于”“小于”“等于”等等。比较的结果只有两个:成立(true) 或 不成立(false) 。以后可以用这些结果来决定程序走哪条路(比如判断是否及格再打印不同的话)。
常用的关系运算符:
| 运算符 | 含义 | 例子(假设 score = 85) | 结果 |
|---|---|---|---|
> | 大于 | score > 60 | true |
< | 小于 | score < 100 | true |
>= | 大于等于 | score >= 85 | true |
<= | 小于等于 | score <= 50 | false |
== | 等于(注意是两个等号) | score == 85 | true |
!= | 不等于 | score != 100 | true |
代码示例:
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是否为真(非零就是真),结果永远成立,这就是一个经典错误!
新手容易踩的坑
-
整数除法丢小数
int result = 7 / 2;得到 3,而不是 3.5。如果你想要精确的小数,一定要用浮点数。 -
取余数只能对整数
7.0 % 2会报错,因为%只能用于int类型的操作数。 -
==和=搞混
写条件时总想着“等于”,顺手写了一个等号,结果程序逻辑全错了。养成习惯:判断相等用两个等号,赋值用一个等号。 -
关系运算结果直接输出时,显示 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 5、100 100,看看结果有什么变化。
接下来学什么
算术运算和关系运算是编程的“砖块”,接下来这些“砖块”会搭成更复杂的建筑:
- 分支结构(if / else):利用关系运算的结果,决定程序执行哪一段代码。比如“如果分数>=60,输出‘及格’,否则输出‘不及格’”。
- 逻辑运算(&&、||、!):把多个关系运算组合起来,比如“分数>=90 且 作业已交”。
- 浮点数运算:小数运算及注意事项(精度问题)。
- 循环(for / while):需要反复比较条件,比如“一直扣零花钱,直到余额小于0”。
把这些运算练熟,你就能写出更多有趣的程序了!
例题精讲
在C++中,表达式 (5 % 2) + (3 > 1) 的值是?
已知 int a = 5, b = 2; double c = a / b; 则 c 的值是?
在C++中,取模运算符 % 可以对浮点数进行操作。
关系表达式 (a <= b) 的结果是 bool 类型,可以直接赋值给 int 变量,此时 true 转换为 1,false 转换为 0。
以下代码用于判断两个整数的和是否大于10,并输出结果。请填空。
int x = 4, y = 7;
int sum = x ___ y;
bool flag = sum ___ 10;
cout << flag;