开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 14 天,点击查看活动详情
解决算法问题的步骤
(1)分析问题,理解题意
首先需要明确程序应该 “做什么”,并且从题目描述中知道给什么输入,需要怎么处理数据,以及如何输出这些数据。
(2)建立模型,设计算法
算法指的是一套确定的,有限的,能解决特定问题的流程。通过思考程序应该“如何做”,来设计一套有效甚至高效的算法,是我们的目标。
(3)编写程序
根据我们之前的分析,来一步步编写程序。
(4)调试、编译运行与测试
写完程序后,很可能会有一些错误,其中包括逻辑错误和编译错误等。
如果是逻辑错误,我们需要重新审视一下题目,思考是否理解错了题意或者算法本身是不正确的,这样我们就需要重新设计新的算法。
如果是编译错误,根据编译器的提示,我们需要更正错误,最后让计算机进行编译运行,并检查是否符合我们的期望。
简单的数学运算
整除
在 C++ 中,符号 / 表示整除的意思。
比如:
#include<bits/stdc++.h>
using namespace std;
int main() {
cout << 14 / 4 * 4;
return 0;
}
上述语句运行结果为:
12
在数学中,14 / 4 * 4 应该还是 14,但是在C++中,就是 14除以4后向下取整,得到 3 ,再乘以 4 得到结果 12。
浮点数
#include<bits/stdc++.h>
using namespace std;
int main() {
cout << 100.0 / 3;
return 0;
}
运行程序,输出:
33.3333
在计算机中,100 被认为是整数,但是 100..0 是浮点数,二者不同。如果我们希望得到一个带有小数的结果,那么需要将运算符两边至少一个数字以浮点数的形式表示(在整数后面添加上 .0)。
另外,使用 cout 输出浮点数,默认保留不超过 6 位有效数字。如果在计算过程中,数字过大或者过小,就会使用科学计数法来输出。
比如:
#include<iostream>
using namespace std;
int main() {
cout << 5000000.0 / 3;
return 0;
}
运行结果:
1.66667e+006
数学函数
一个长方形的长和宽分别是 3cm、4cm,求它的对角线长度。
解题:根据勾股定理,答案为:
#include<iostream>
#include<cmath>
using namespace std;
int main() {
cout << sqrt(pow(3, 2) + pow(4, 2));
return 0;
}
运行结果:
5
可以看到,这里使用了新的头文件:<cmath>。该头文件和数学有关。上面这个程序使用了pow()、sqrt()两个函数,都是在<cmath> 头文件中的。
函数可以被认为是一种实现特定功能的工具,把数据调入对应功能的函数中,这个函数就会在计算后返回值。不同函数的输入变量和输出类型会不同,有的函数甚至没有输入或者输出。
pow(3, 2) 的意思是计算 3 的 2 次方,即 。sqrt() 的意思是计算括号里的算术平方根。这两个函数都是返回一个浮点数。
当然,<cmath> 头文件中不止这两个函数,还有很多其他实用的数学函数。函数原型如下:
sin(double x):三角函数正弦,x是弧度cos(double x):三角函数余弦,x是弧度exp(double x):返回,其中是自然常数log(double x):返回 的自然对数fabs(double x):返回 的绝对值ceil(double x):返回大于或等于 的最小整数(向上取整)floor(double x):返回小于或等于 的最大整数(向下取整)
注意,上述函数的返回值都是 double 类型的值,并且如果输入的参数 是 int、float 等类型,就会自动转换为 double 类型。