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

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

    friend Date operator++ (Date& t);
    void display();
};
Date operator++ (Date& t)
{
    t.d++;
    if(t.d>30)
    {
        t.d=t.d%30;
        t.m++;
        if(t.m>12)
        {
            t.m=t.m%12;
            t.y++;
        }
    }
    return t;
}
void Date::display()
{
    cout<<y<<"-"<<m<<"-"<<d<<endl;
}
void main()
{
    int yy,mm,dd;
    cout<<"请输入日期:";
    cin>>yy>>mm>>dd;
    while(y<0||m<0||m>12||d<0||d>30)
        {
                cout<<"非法,请重新输入(年 月 日):";
                cin>>y>>m>>d;
        }

    Date t(yy,mm,dd);
    t++;
    t.display();
}
或者:
#include<iostream>

using namespace std;

class Date
{
private:
    int y, m, d;
public:
    Date(int yy, int mm, int dd) :y(yy), m(mm), d(dd) {}
    Date(){}
    void increase()
    {
        d++;
        if (d > 30)
        {
            d = 1;
            m++;
            if (m > 12)
            {
                m = 1;
                y++;
            }
        }
    }
    void display()
    {
        cout << y << "-" << m << "-" << d << endl;
    }
};

int main()
{
   
    int y, m, d;
    cin >> y >> m >> d;
    if (y < 0 || m < 0 || d < 0 || m>12 || d>30)
    {
        cout << "error." << endl;
    }
    Date date(y, m, d);
    date.increase();
    date.display();
    system("pause");
}

第三题要求编写一个复数类,要求有4条。一是有构造函数,能对复数初始化。二是对复数c1,c2,c3.....能实现连加运算,令c=c1+c2+c3+.....此处可以重载加法操作符。三是有函数实现两个复数相加,并按照a+ib的形式输出。四是能实现对一个复数c=a+ib,定义double x=c有效,使x的值为实部和虚部之和。本题满分50。”
 #include<iostream>
using namespace std;
class complex
{
    int a,b;
public:
    complex(){}
    complex(int aa,int bb):a(aa),b(bb){}
    complex operator+ (complex c);
    void add_c(complex x1);
    double add();
    int geta(){return a;}
    int getb(){return b;}
};
complex complex::operator + (complex c)
{
    c.a=c.a+a;
    c.b=c.b+b;
    return c;
}
void complex::add_c(complex x1)
{
    cout<<x1.geta()+a<<"+"<<x1.getb()+b<<"i"<<endl;
}
double complex::add()
{
    double c=a+b;
    return c;
}
void main()
{
    complex a1(1,1),a2(2,2),a3(3,3),a4,a5;
    a4=a1+a2+a3;
    a3.add_c(a2);
    double c=a4.add();
    cout<<c<<endl;
}
2006年
1.写一个程序判断字符串中数字的位置(不限制使用面向对象编程)
例如: 输入   a3b4c5
            输出   2 4 6
#include<iostream>
#include<string>
#include<ctype.h>
using namespace std;
void main()
{
    string s;
    cout<<"请输入一串字符串:";
    cin>>s;
    for(int i=0;i<s.length();i++)
    {
        if(isdigit(s[i]))   //s[i] >= '0'&&s[i] <= '9'
        {
            cout<<" "<<i+1<<" ";
        }
    }
    cout<<endl;
}
2.写一个类,能接受int型的变量,接收变量后能存储原变量(譬如12345)和其反向变量(54321),最多处理数量为10个,当输入达到10个或者输入变量为0的时候停止。并且在类销毁前输出存储的所有变量。例如:
输入:
12345
2234
0
 输出:
12345   54321
2234  4322

有错误算法:
#include<iostream>
#include<string>
using namespace std;
class Int
{
    string s;
    //string rs;
public:
    Int(){}
    Int(string s1){s=s1;}
    string Reverse();
    string gets(){return s;}
};
string Int::Reverse()
{
    string rs;      //错在没有rs=s;rs是指针,需指向一块地方
    for(int i=0;i<s.size();i++)
    {
        rs[i]=s[s.size()-1-i];
       
    }
    return rs;
}
void main()
{
    string str1[10];
    int i=0;
    cout<<"请输入至多十组数字当小于十组时以0结束:"<<endl;
    while(i<10)
    {
        string s;
        cin>>s;
        str1[i]=s;
        if(str1[i]=="0")
        {
            break;
        }
        i++;
    }
    int k=i;
    for(i=0;i<k;i++)
    {
        Int a(str1[i]);
        cout<<a.gets()<<"   "<<a.Reverse()<<endl;
    }
}
正确算法:
#include<iostream.h>
#include<stdlib.h>

class Int
{
    int num;
    //int renum;
public:
    Int(int n):num(n){}
    int reverse();
    int getnum(){return num;}
};
int Int::reverse()
{
    int r=num;
    int b=0,a;
    while(num>0)
    {
        b*=10;
        a=num%10;
        b+=a;
        num/=10;
    }
    num=r;
    return b;
}

void main()
{
    int n[10];
    cout<<"请输入至多十组数字当小于十组时以0结束:"<<endl;
    int i=0;
    while(i<10)
    {
        cin>>n[i];
        if(n[i]==0)
        {
            break;
        }
        i++;
    }
发表评论 已经有0条评论 查看全部评论

关键字

相关信息