北理复试上机题2004年

1、建立一个角类,在这个类中重载减号运算符,并实现求出角度的正弦值的函数。

#include <iostream>
#include<cmath>
using namespace std;

double const pi=3.1415926;

class angle{
	//建立一个角类,在这个类中重载减号运算符,并实现求出角度的正弦值的函数。
	public:
		//友元函数-全局函数的形式重载 
		friend	angle operator-(const angle & a, const angle & b);
		
	public:
		//成员函数
		double getAngle(){
			return degree;
		} 
		double calcSin(); 
		//构造函数
		angle(){};
		angle(int _de); 
	private:
		double degree;		
};
angle::angle(int _de):degree(_de){}
double angle::calcSin(){
	return sin(pi/180 * this->degree);//this是指针,其指向用-> 成员访问符 
}
angle operator-(const angle &a, const angle& b){
	angle c;
	c.degree = a.degree - b.degree;//可以用.是因为逻辑上相当于在类中 
	return c;
}

int main(){
    angle a1(60);
    angle a2(30);
    angle a3 = a1 - a2;
	cout<<a3.calcSin();
    return 0;
}

2、建 立一 个 求 一 元二 次 方 程 解的 类( a*x^2+b*x+c=0 ),输入系数 a,b,c 的值后打印出这个方程的解来,也比较简单。 需要注意的是系数 a 不能为零以及方程有无解,单解还是双解的情况。

#include <iostream>
#include<cmath>
using namespace std;
 

int main(){
    cout<<"输入一 元二 次 方 程  a*x^2+b*x+c=0 的系数 a,b,c 的值:";
    double a,b,c;
    cin>>a>>b>>c;
    if(a==0){
    	cout<<"系数a不能为0"<<endl;
    	exit(0);
	}
	int x = pow(b,2)-4*a*c;
	if(x<0) {
		cout<<"方程无解"<<endl;
		exit(0); 
	} 
	else if(abs(x)<0.000001){//==0 浮点数的==判断 
    	cout<<"有一个解:"<<endl;
    	cout<<(-1*b)/(2*a)<<endl;
	}else{
		cout<<"有两个解"<<endl;
		cout<<(-b+sqrt(pow(b,2)-4*a*c))/(2*a)<<" "<<(-b-sqrt(pow(b,2)-4*a*c))/(2*a)<<endl;
	}
	return 0;
}

3、实现一个多项式的类(a+b*x+c*x^2+d*x^3+...+),要求输入该多项式的系数和 x 的值后打印出这个多项式的值。这道题本身并不难,但他要求用好的算法(实际上就是递归)。(比较经典)

a+b*x+c*x^2+d*x^3=a+(b+c*x+d*x^2)*x=a+(b+(c+d*x)*x)*x

#include <iostream>
#include<cmath>
using namespace std;

int a[1000];
int x; 
int fun(int n){
	if(n==0) return a[0];//用数组存储数据
	else {
		return fun(n-1)+a[n]*pow(x,n);
	}
}

int main(){
	int n;
    cout<<"请输入最高次项的次数:"<<endl;
	cin>>n;
	cout<<"请输入各个项的系数:"<<endl;
	for(int i=0;i<=n;++i)
		cin>>a[i];
	cout<<"请输入x:"<<endl;
	cin>>x;
	if(n==0)
	{
		cout<<"结果:"<<a[0]<<endl;
	}
	cout<<"结果:"<<fun(n)<<endl;
	return 0;
}

作者:无涯明月

上篇:北理复试上机题2003年

猜你喜欢

转载自blog.csdn.net/qq_26460841/article/details/88117994