北京理工大学2000-2012考研计算机复试上机题详尽处理

点赞(0) 反对(0) 本站小编 福瑞考研网 2017-04-25 21:24:21 阅读(0)

        cout<<"error!";
        return 0;
    }
    cout<<"输入你要查找的学生的学号:";
    cin>>st_no;
    while(!file.eof())
    {
        file.getline(str,80);
        if(st_no==atoi(str))
        {
            cout<<"学号  "<<"姓名   "<<"性别   "<<"年龄"<<endl;
            cout<<str<<endl;
        }
       
    }
    return 0;
}
3、输入年月日,计算该天是本年的第几天。例如1990年9月20日是1990年的第263天,2000年5月1日是2000年第122天。(闰年:能被400正除,或能被4整除但不能被100整除。每年1、3、5、7、8、10为大月)
 #include<iostream>
using namespace std;
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
    int y,m,d;
    int sum=0;
    cout<<"输人年月日: ";
    cin>>y>>m>>d;
    for(int i=1;i<m;i++)
    {
        sum=sum+month[i-1];
       
    }
    if(m>2 && (y%400==0) || (y%4==0 && y%100!=0))
        {
            sum=sum+1;
        }
    sum=sum+d;
    cout<<y<<"年"<<m<<"月"<<d<<"日"<<"是"<<y<<"年的第"<<sum<<"天"<<endl;
}
           
2004年
第一题是建立一个角类,在这个类中重载减号运算符,并实现求出角度的正弦值的函数。
#include<iostream>
#include<math.h>
using namespace std;
double const PI=3.14159;
class angle
{
    int X;
public:
    void xsin();
    angle(){};
    angle(int x){X=x;}
    angle operator- (angle c);
};
angle angle::operator- (angle c)
{
    return angle(X-c.X);
}
void angle::xsin()
{
    double x=X*PI/180;
    cout<<"正弦值为:"<<sin(x)<<endl;
}
void main()
{
    angle a(30),b(60),d;
    a.xsin();
    b.xsin();
    d=b-a;
    d.xsin();
}
第二题是建立一个求一元二次方程解的类(a*x^2+b*x+c=0),输入系数a,b,c的值后打印出这个方程的解来,也比较简单。需要注意的是系数a不能为零以及方程有无解,单解还是双解的情况。
#include<iostream>
#include<cmath>
using namespace std;
class Root
{
    int a,b,c;
public:
    Root(int aa,int bb,int cc):a(aa),b(bb),c(cc){}
    Root(){}
    void result();
    //void print();
};
void Root::result()
{
    if(a==0)
        cout<<"error!";
    double delta=b*b-4*a*c;
    if(delta==0)
        cout<<"单根:"<<"x="<<-b/(2*a)<<endl;
    else if(delta<0)
        cout<<"无解!"<<endl;
    else
        cout<<"双根:"<<"x1="<<-b/(2*a)+sqrt(delta)/(2*a)<<"  "<<"x2="<<-b/(2*a)-sqrt(delta)/(2*a)<<endl;
}
void main()
{
   
    int aa,bb,cc;
    cout<<"请输入系数:";
    cin>>aa>>bb>>cc;
    Root x(aa,bb,cc);
    //x.a=aa;x.b=bb;x.c=cc;
    x.result();
}
 第三道题是实现一个多项式的类(a+b*x+c*x^2+d*x^3+...+),要求输入该多项式的系数和x的值后打印出这个多项式的值。这道题本身并不难,但他要求用好的算法(实际上就是递归)。
实现一个多项式的类(...+a*x^3+b*x^2+c*x+d)
#include<iostream>
using namespace std;
int const size=60;
int fun(float num[],int x,int n,int N)
{
    if(n==0)
        return num[n];
    else
        return x*fun(num,x,n-1,N)+num[N-n];
}
void main()
{
    int n,x;
    float num[size];
    cout<<"请输入最高项次数:";
    cin>>n;
    cout<<"请输入各项系数:";
    for(int i=0;i<=n;i++)
        cin>>num[i];
    cout<<"请输入x: ";
    cin>>x;
    cout<<"结果为:"<<fun(num,x,n,n)<<endl;

}

实现一个多项式的类(a+b*x+c*x^2+d*x^3+...+):
#include<iostream>

using namespace std;

class polynomial
{
private:
    int* num;
    int x;
    int n;
public:
    polynomial(int num[], int n, int x)
    {
        this->num = num;
        this->n = n;
        this->x = x;
    }
    int resultp()
    {
        return result(num, n, x, n);
    }
    int result(int num[], int n, int x, int N)
    {
        if (n == 0)
            return num[N];
        else
        {
            return x * result(num, n - 1, x, N) + num[N-n];
        }
    }

};

int main()
{
   
    int x, n;
    int num[20] = { 0 };
    cout << "input x:";
    cin >> x;
    cout << "input the max n:";
    cin >> n;
    cout << "input the polynomial:";
    for (int i = 0; i <= n; i++)
    {
        cin >> num[i];
    }
    polynomial p(num, n, x);
    cout<<p.resultp();
    system("pause");
}

05年:
第一题是给定一个程序,关于字符串的,要求输入并调试,说出此程序的意图。意图是按字母顺序对两个字符串比较排序。第二问要求用尽可能少的语句对该程序进行修改,使其能够对两个字符串比较长度排序。本题满分20。
#include<iostream>
#include<string>
using namespace std;
void main()
{
    string str1,str2;
    cout<<"请输入两个字符串:";
    cin>>str1>>str2;
    if(str1.length()>str2.length())
        cout<<str1<<"is long than"<<str2<<endl;
    else if(str1.length()==str1.length())
        cout<<str1<<" and "<<str2<<" is equal long"<<endl;
    else
        cout<<str2<<"is long than "<<str1<<endl;
}
第二题是要求编写一个日期类,要求按xxxx-xx-xx的格式输出日期,实现加一天的操作,不考虑闰年问题,所有月份设为30天。本题黑盒测试时,输入2004年3月20日,得到加一天后时间为2004-3-21,能得一部分分数。输入2004年3月30日,得到加一天后时间为2004-4-1,能得一部分分数。输入2004年12月30日,得到加一天后时间为2005-1-1,且有时间越界处理,能得全部分数。本题满分30。
#include<iostream>
using namespace std;
class Date
{
    int y,m,d;
public:
    Date(){}
    Date(int year,int month,int day):y(year),m(month),d(day){}
发表评论 已经有0条评论 查看全部评论

关键字

相关信息