希望人没事的函数题

6-1 学生类的构造与析构 (10分)
#include<iostream>
#include<string>
using namespace std;
class Student {
private:
int num;
string name;
char sex;
public:
Student(int n,string na,char s){
num=n;
name=na;
sex=s;
cout<<"Constructor called."<<endl;}
void display(){
cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
cout<<"sex:"<<sex<<endl;
cout<<endl;
}
~Student(){
cout<<"Destructor called."<<endl;}
};
6-2 体育俱乐部I(构造函数) (10分)
Club::Club(string n1,int y,string n2,int wr):name(n1),year(y),c(n2,wr){};
void Coach::show(){cout<<name<<" "<<winRate<<"%"<<endl;}
void Club::show(){cout<<name<<" "<<year<<endl;
c.show();}
6-3 2017final友元函数之全班同学的平均绩点 (10分)
double averagegrade(student *stu,int count){
int i,j;
double sum1=0,sum2=0,sum;
for(i==0;i<count;i++)
for(j=0;stu[i].score[j]!=-1;j++){
sum1+=stu[i].score[j]*(stu[i].grade[j]/10-5);
sum2+=stu[i].score[j];}
if(sum2==0||sum1==0)
return 0;
return sum1/sum2;}
6-4 大整数求和(运算符重载) (10分)
class BigInt
{
    int *a;
    int max;
    string num;
    public:
    BigInt()
    {
        a = new int[101];   
        max=0;
    }
    void swap_string_to_dig()
    {
        int len = num.length();
        max = len;
        for(int i=len-1;i>=0;i--)
            a[len-i-1] = num[i]-'0';
        for(int i=len;i<101;i++)
            a[i] = 0;
    }
    friend istream& operator>>(istream &is,BigInt &x)
    {
        is>>x.num;
        return is;
    }
    friend ostream& operator<<(ostream &os,BigInt &x)
    {
        os<<x.num;
        return os;
    }
    BigInt operator+(BigInt &x)
    {
        BigInt c;
        int n,i=0,j=0,k=0;
        x.swap_string_to_dig();
        swap_string_to_dig();
        int l=0;
        while(j<max || k<x.max)
        {
            c.a[i] = a[j++] + x.a[k++] + l;
            l = c.a[i]/10;
            c.a[i]%=10;
            i++;
        }
        while(l>0)
        {
            c.a[i] += l; 
            l = c.a[i]/10;
            c.a[i]%=10;
            i++;
        }
        c.max = i;
        for(i=c.max-1;i>=0;i--)
        c.num += c.a[i]+'0';
        return c;
    }
};
6-5 时间相加 (10分)
Time::Time(int h,int m,int s)
{
    hours=h;
    minutes=m;
    seconds=s;
}
void Time::DispTime()
{
    cout<<hours<<"h:"<<minutes<<"m:"<<seconds<<"s"<<endl;
}
Time Time::operator +(Time & k)
{
    Time temp;
    temp.minutes=this->minutes+k.minutes;
    temp.seconds=this->seconds+k.seconds;
    temp.hours=this->hours+k.hours;
    if(temp.seconds>59)
    {
        temp.seconds-=60;
        temp.minutes++;
    }
    if(temp.minutes>59)
    {
        temp.minutes-=60;
        temp.hours++;
    }
    return temp;
}
6-6 派生类的定义和使用 (10分)
class Animal
{
public:
    void speak()
    {
        cout<<"animal language!"<<endl;
    }
};
class Cat:public Animal
{
private:
    string m_strName;
public:
    Cat(string name)
    {
        m_strName=name;
    }
    void print_name()
    {
        cout<<"cat name: "<<m_strName<<endl;
    }
};
6-7 多重继承派生类构造函数 (10分)
class Graduate:public Teacher,public Student{
public:
    Graduate(string nam,int a,char s,string t,float sco,float w)
    :Student(nam,s,sco),Teacher(nam,a,t)
    {
        wages=w;
    }
    void show(){
    cout<<"name:"<<name<<endl;
    cout<<"age:"<<age<<endl;
    cout<<"sex:"<<sex<<endl;
    cout<<"score:"<<score<<endl;
    cout<<"title:"<<title<<endl;
    cout<<"wages:"<<wages<<endl;
    }
private:
    float wages;
};
6-8 虚函数的应用 (10分)
class CMyClassB:public CMyClassA{
         int va;
        public:
         CMyClassB(int v):CMyClassA(3*v){
             va=v;
             cout<<"B:"<<va<<endl;
         }
         void print(){
             cout<<va<<endl;
         }
};
6-9 数组排序输出(函数模板) (10分)
template <class T>
        void sort(T *data,int size){
            int i,j,min;
            T t;
            for(i=0;i<size;i++)
             cin>>data[i];
            for(i=0;i<size-1;i++){
                min=i;
                for(j=i+1;j<size;j++)
                 if(data[j]<data[min])
                  min=j;
                t=data[i];
                data[i]=data[min];
                data[min]=t; 
            }
        }
6-10 筛法求质数 (10分)
int a[10000002]={0};
vector<int> sieve(int n){
    vector<int> temp;
    int i,j;
    for(i=2;i*i<=n;i++){
        if(a[i]==1)
            continue;
        int tp=2;
        while(tp*i<=n){
            a[tp*i]=1;
            tp++;
        }
    }
    for(int i=2;i<=n;i++){
        if(a[i]!=1)
            temp.push_back(i);
    }
    return temp;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务