1.2 简单的数学运算
数学运算,包括加减乘除四则运算和cmath库的特殊数学运算函数,例如平方,开方的。
例 1-3
分苹果。现在有14个苹果,要均分给4名同学,分不掉的苹果放回冰箱。请问:
- 每位同学能分得几个苹果?
- 一共分出去多少个苹果?
- 把几个苹果放回冰箱?
解答
#include<iostream>
using namespace std;
int main()
{
cout<<14/4<<endl;
cout<<14/4*4<<endl;
cout<<14-14/4*4<<endl;
//cout<<14%4<<endl;
return 0;
}
程序运算遵循:
- 括号优先级别最高
- 先乘除,后加减
- 从左到右
的规则。
* 有时候为了逻辑清晰,可加括号区分
例 1-4
均分肥宅水。 现有500毫升的肥宅快乐水,要均分给3位同学,每位同学可以分到多少毫升?请输出一个数字作为答案。
解答
#include<iostream>
using namespace std;
int main()
{
cout<<500.0/3<<endl;
return 0;
}
输出:
166.667
500.0加上.0后,计算机会认为它是浮点数。否则计算机会认为数字是整数。
例 1-5
输入以下程序,观察输出:
#include<iostream>
using namespace std;
int main()
{
cout<<500.0/3<<endl;
cout<<5000000.0/3<<endl;
cout<<0.000005/3<<endl;
cout<<5e6/3 + 5e-6/3 + 5e6/3<<endl;
return 0;
}
输出
166.667
1.66667e+006
1.66667e-006
1.6666e-006
1.66667e+006就是 1.66667 X 106 的意思。
- cout输出浮点数,默认保留不超过6位有效数字。
- 如果数字过大或者过小,就会使用科学记数法输出(同样保留不超过6位有效数字)。
- 计算机浮点数存储机制决定了浮点数的精度是有限的,所以会导致误差。
例 1-6
火车问题。 甲列火车车长260m,每秒前进12m;乙列火车长220m,每秒前进20m,两车相向而行,从两车的火车头相遇开始计时,多长时间后两车车尾相离?
已知答案是整数。
分析:
以甲火车为参照物,从甲火车上看,甲自己不动,乙向甲移动。乙的速度是 12m/s + 20m/s = 32m/s,乙从和甲车头相遇到离开车尾,经过的距离是 260m + 220m = 480m。
所以,题目所求可以转化成求 480÷32 的结果。
解答
#include<iostream>
using namespace std;
int main()
{
cout<<480/32<<endl;
return 0;
}
题目已经保证答案是整数,所以直接用整数计算即可。
例 1-7
对角线问题。一个长方形的长和宽分别是9cm,6cm,求它的对角线长度。
分析:
根据勾股定理,答案就是:
$\sqrt{6^2+9^2}$
解答
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
cout<<sqrt(pow(6,2)+pow(9,2))<<endl;
return 0;
}
新头文件#include<cmath>,该头文件和数学有关。
cmath常见数学函数:
表 1-1 数学函数
| 函数原型 | 样例 | 说明 |
|---|---|---|
double sin(double x)double cos(double x) |
sin(3.14159/2 |
三角函数正弦和余弦,x是弧度 |
double exp(double x) |
exp(1) |
返回ex,其中e是自然常数 |
double log(double x) |
log(10) |
返回x的自然对数 |
double pow(double x,double y) |
pow(3,2) |
返回xy,也可以用来运算多次根式 |
double sqrt(double x) |
sqrt(9) |
返回$\sqrt{x}$ |
double fabs(double x) |
fabs(-10) |
返回x的绝对值 |
double ceil(x) |
ceil(2.1) |
对x进行向上取整 |
double floor(double x) |
floor(2.9) |
对x进行向下取整 |
第一节结束,祝学习愉快!
博主的个人网站:https://codespark.cn/

浙公网安备 33010602011771号