北京理工大学复试上机--2004
Posted ache
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了北京理工大学复试上机--2004相关的知识,希望对你有一定的参考价值。
1、建立一个角类,在这个类中重载减号运算符,并实现求出角度的正弦值的函数。
#include <iostream> #include <cmath> using namespace std; class angel { public: double x1, x2; double getangel() { return (x1 - x2) / 180 * 3.1415926927;//转为角度 } double getsin(void) { cout << sin(getangel()) << endl; } }; int main() { angel a; while(cin >> a.x1 >> a.x2) { a.getangel(); a.getsin(); } return 0; }
2、建立一个求一元二次方程解的类(a*x^2+b*x+c=0),输入系数 a,b,c 的值后打印出这个方程的解来,也比较简单。
需要注意的是系数 a 不能为零以及方程有无解,单解还是双解的情况。
#include <iostream> #include <cmath> using namespace std; class anser { private: double a, b, c; public: anser (int x, int y, int z) { a = x; b = y; c = z; }; void show() { double x1, x2; if(a == 0) { x1 = -c / b; x2 = -c / b; cout << "x1 = x2 = " << x1 << endl; } else if((b * b - 4 * a * c) < 0) { cout << "No solution" << endl; } else { x1 = (-b + sqrt(b * b - 4 * a * c)) / 2 * a; x2 = (-b - sqrt(b * b - 4 * a * c)) / 2 * a; if(x1 == -0 || x2 == -0) { x1 = 0; x2 = 0; } cout << "x1 = " << x1 << " x2 = " << x2 << endl; } } }; int main() { double a, b, c; while(cin >> a >> b >> c) { anser ans(a, b, c); ans.show(); } return 0; }
3、实现一个多项式的类(a+b*x+c*x^2+d*x^3+...+),要求输入该多项式的系数和x的值后打印出这个多项式的值。
输入:
第一行为多项式最高项次数n,接下来n+1个整数表示每项系数,最后一个整数x,n不超过10。
输出:
多项式代入x后的值。
#include <iostream> #include <cmath> #include <vector> using namespace std; class formula { public: vector<double> v; int n; double x; double fun(int n, int N, double x, vector<double> v) { if(n == 0) { return v[N]; } else { return fun(n - 1, N, x, v) * x + v[N-n]; } } void show(){ cout << fun(n, n, x, v) << endl; } }; int main() { int n; while (cin >> n) { vector<double> v(n + 1); double x; for(int i = 0; i <= n; i++) cin >> v[i]; cin >> x; formula f; f.n = n; f.v = v; f.x = x; f.show(); } return 0; }
PS: 这个类我是真的搞不懂,裂开~ 只能是照葫芦画瓢写一写,也不知道准不准确,希望复试不要遇到这种题。 T_T
以上是关于北京理工大学复试上机--2004的主要内容,如果未能解决你的问题,请参考以下文章