决定按照北大OJ的练习顺序进行学习算法,使用的编程语言为C++
由于以前只是粗略的看了一下c++的语法,并且对算法这部分一无所知,甚至于连数据结构都没有好好学习,所以一开始准备先行抄写别人的代码进行学习。所以文章的结构暂时定为先行粘贴处摘抄的来源,而后写问题总的问题解决方式方法感想,贴出代码,再解释其中自己理解的部分,而后是算法中运用到的函数,头文件等等知识点的解释部分。
本次学习代码来源https://blog.csdn.net/lyy289065406/article/details/6642582
本次编写的POJ3299是比较基础的一题,并没有什么可以说的技巧。
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main() {
char alpha;
double t, d, h;
int i;
for (;;) {
t = d = h = 200;
for (i = 0; i < 2; i++) {
cin >> alpha;
if (alpha == 'E')
return 0;
else if (alpha == 'T')
cin >> t;
else if (alpha == 'D')
cin >> d;
else if (alpha == 'H')
cin >> h;
}
if(h==200)
h = t + 0.5555*(6.11*exp(5417.7530*(1 / 273.16 - 1 / (d + 273.16))) - 10);
else if (t == 200)
t = h - 0.5555*(6.11*exp(5417.7530*(1 / 273.16 - 1 / (d + 273.16))) - 10);
else if (d == 200)
d = 1 / ((1 / 273.16) - ((log((((h - t) / 0.5555) + 10.0) / 6.11)) / 5417.7530)) - 273.16;
cout << setprecision(1) << fixed << "T " << t << " D " << d << " H " << h << endl;
}
return 0;
}
- 由于需要精确到小数点后,故使用浮点类double,用float也可以,float7位有效数字,double是16位,注意有四舍五入
- 无限循环直到检测到某参数的输出后退出,这种基本框架
- #include<iomanip>设置格式结构,例如:setprecision(6)代表小数点前面和后面接起来的位数为6个有效数字 https://www.cnblogs.com/lsgxeva/p/7696410.htm https://blog.csdn.net/u011321546/article/details/9293547