希望人没事的编程题

7-1 例4-3游泳池改造预算 (10分)
#include<iostream>
#define pi 3.141592
using namespace std;
class pool {
    private:
        double r;
    public:
        void inti(double R) {
            r=R;
        }
        double money1() {
            return 2*(r+3)*pi*35;
        }
        double money2() {
            double r1=r+3;
            return (r1*r1*pi-r*r*pi)*20;
        }
};
int main() {
    int R;
    pool a;
    cin>>R;
    a.inti(R);
    cout<<"Fencing Cost is $"<<a.money1()<<endl;
    cout<<"Concrete Cost is $"<<a.money2()<<endl;
    return 0;
}
7-2 复数类的操作 (10分)
#include<iostream>
using namespace std;
class Complex{
   double real,image;
  public:
   Complex()
   {
     real=0;
     image=0;
   }
   void get(double r,double i)
   {
     real=r;
     image=i;
   }
   void fan()
   {
     real=-real;
     image=-image;
   }
   void Print()
   {
     cout<<"("<<real<<", "<<image<<")"<<endl;
   }
   friend void jiao(Complex ob1,Complex ob2)
   {
     cout<<"("<<ob1.real+ob2.real<<", "<<ob1.image+ob2.image<<")"<<endl;
   }
};
int main(void)
{
  double c11,c12,c21,c22;
  cin>>c11>>c12>>c21>>c22;
  Complex ob1,ob2;
  ob1.get(c11,c12);
  ob2.get(c21,c22);
  jiao(ob1,ob2);
  ob2.fan();
  jiao(ob1,ob2);
  ob2.fan();
  ob2.Print();
}
7-3 运算符重载 (15分)
#include<iostream>
#include<math.h>
using namespace std;
class Fs{
    int fz,fm;
    public:
        void display();
        Fs(int x = 0, int y = 0);


           Fs operator+(Fs &op2)
        {
            int max = (this->fm > op2.fm) ? this->fm : op2.fm;
            do
            {
                if (max % this->fm == 0 && max % op2.fm == 0)
                {
                    break;
                }
                else
                    ++max;

            } while (true);
             Fs temp;
            this->fz *= max / this->fm;
            op2.fz *= max / op2.fm;
            this->fz += op2.fz;
            temp.fz=this->fz;
            temp.fm=max;
            max = 1;
            for (int i = 1; i <= abs(this->fz); i++)
            {
                if (temp.fz % i == 0 && temp.fm%i == 0)
                    max = i;
            }

            temp.fm /=  max;
            temp.fz/=   max;
            return temp;
        }
};
Fs::Fs(int x,int y){
    fz = x;
    fm = y;
}
void Fs::display(){
    cout << fz;

    if(fm!=1&&fz!=0)
        cout << " " << fm;
}
int main(){

    int a[4];
    cin >> a[0] >> a[1] >> a[2] >> a[3];
    Fs x1(a[0],a[1]), x2(a[2],a[3]),x3;
    x3 = x1 + x2;
    x3.display();
}
7-4 日程安排(多重继承+重载) (15分)
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<iomanip>
#include<iostream>
using namespace std;
class Date
{
protected:
    int year;
    int month;
    int day;
public:
    Date(int a = 0, int b = 0, int c = 0):year(a), month(b), day(c) {};
};

class Time
{
protected:
    int hour;
    int minute;
    int second;
public:
    Time(int a = 0, int b = 0, int c = 0):hour(a), minute(b), second(c) {};
};

class Schedule : protected Date, protected Time
{
public:
    bool operator < (const Schedule & s){
        if(year<s.year){
            return true;
        }
        if(year==s.year&&month<s.month){
            return true;
        }
        if(year==s.year&&month==s.month&&day<s.day){
            return true;
        }
       int sum1=hour*3600+minute*60+second;
       int sum2=s.hour*3600+s.minute*60+s.second;
        if(year==s.year&&month==s.month&&day==s.day&&sum1<sum2){
            return true;
        }
        return false;

    }

    Schedule(int y = 99999, int m = 0, int d = 0, int h = 0, int min = 0, int s = 0, int id = 0)
    :Date(y, m, d), Time(h, min, s)
    {
        ID=id;
    };
    void show(){
    cout<<ID<<": "<<year<<"/"<<month<<"/"<<day<<" "<<hour<<":"<<minute<<":"<<second<<endl;
    }
protected:
    int ID;
};
int main()
{   int y,m,d,h,min,s,id;
    Schedule mx;
    cin>>id;
    while(id!=0){

        scanf("%d/%d/%d%d:%d:%d",&y,&m,&d,&h,&min,&s);
        Schedule sch(y,m,d,h,min,s,id);
        if(!(mx<sch)){
            mx=sch;
        }
        cin>>id;
    }
    cout<<"The urgent schedule is No.";
    mx.show();
    return 0;
}
7-5 汽车收费 (10分)
#include<iostream>
using namespace std;
class Vehicle
{ 
    protected:
        string NO;
    public:
        Vehicle(string N){NO=N;}
        virtual void display()=0;
};
class Car:public Vehicle
{
    int num;
    int weight;
    public:
        Car(string N,int n,int w):Vehicle(N)
        {
            num=n;
            weight=w;
        }
        virtual void display()
        {
            cout<<NO<<" "<<num*8+weight*2<<endl;
        }
};
class Truck:public Vehicle
{
    int weight;
    public:
        Truck(string N,int w):Vehicle(N){weight=w;}
        virtual void display()
        {
            cout<<NO<<" "<<weight*5<<endl;
        }
};
class Bus:public Vehicle
{
    int num;
    public:
        Bus(string N,int n):Vehicle(N){num=n;}
        virtual void display()
        {
            cout<<NO<<" "<<num*3<<endl;
        }
};
int main()
{
    Vehicle *pv[10];
    int type;
    cin>>type;
    int i=0;
    int a,b;
    string N;
    while(type!=0)
    {
        cin>>N;
        switch(type)
        {
            case 1:
                cin>>a>>b;
                pv[i]=new Car(N,a,b);
                break;
            case 2:
                cin>>a;
                pv[i]=new Truck(N,a);
                break;
            case 3:
                cin>>b;
                pv[i]=new Bus(N,b);
                break;
        }
        pv[i]->display();
        i++;
        cin>>type;
    }
}
7-6 师生信息管理 (10分)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

class Person
{
protected:
    int NO;
public:
    virtual void display()=0;
    Person(int n){NO=n;}
    virtual ~Person(){};
};

class Student:public Person
{
    double pj;
    int num=0;
public:
    Student(int n,int n1,int n2,int n3,int n4,int n5):Person(n)
    {
        if(n1==-1) num++;
        else pj+=n1;
        if(n2==-1) num++;
        else pj+=n2;
        if(n3==-1) num++;
        else pj+=n3;
        if(n4==-1) num++;
        else pj+=n4;
        if(n5==-1) num++;
        else pj+=n5;
        pj=pj/(5-num);
    }

    virtual void display()
    {
        cout<<NO<<" "<<num;
         if(num!=5){
            cout<<" "<<setiosflags(ios::fixed)<<setprecision(1)<<pj;
         }
         cout<<endl;
    }
};

class Teacher:public Person
{
int num;
public:
    Teacher(int n,int n1,int n2,int n3):Person(n)
    {
        num=n1+n2+n3;
    }

    virtual void display()
    {
        cout<<NO<<" "<<num<<endl;
    }
};

int main()
{
    Person *pd[10];
    string s;
    int t,n,i=0,n1,n2,n3,n4,n5;
    cin>>t;
    while(t){
        cin>>n;
        if(t==1){
            cin>>n1>>n2>>n3>>n4>>n5;
            pd[i]=new Student(n,n1,n2,n3,n4,n5);
        }else if(t==2){
            cin>>n1>>n2>>n3;
            pd[i]=new Teacher(n,n1,n2,n3);
        }
        pd[i]->display();
        i++;
        cin>>t;
    }
    delete *pd;
    return 0;
}
7-7 数据的最大值问题(重载+函数模板) (20分)
#include <iostream> 
#include <cmath>
#include <sstream>
#include <string>
using namespace std;

int main()
{
    int ty;
    cin>>ty;
    while(ty!=-1)
    {
        if(ty==1)
        {
            int n,m=-1e9;
            while(cin>>n&&n!=0)
            {
                m=max(n,m);
            }
            cout<<m<<endl;
        }

        if(ty==2)
        {
            double n,m=-1e9;
            while(cin>>n&&n!=0)
            {
                m=max(n,m);
            }
            cout<<m<<endl;
        }

        if(ty==3)
        {
            int a,b,c,s1=0;
            int d,e,g,s2=0;
            string s;
            getline(cin,s);
            stringstream ss(s);
            while(ss>>a>>b>>c)
            {

                s1=a*3600+b*60+c;
                if(s1>s2)
                {
                    d=a,e=b,g=c;
                }
                a=0,b=0,c=0;
            }
            cout<<d<<" "<<e<<" "<<g<<endl;
        }

        if(ty==4)
        {

            int a,b,c,s1=0;
            int d=0,e=0,g=0,s2=0;
            string s;
            getline(cin,s);
            stringstream ss(s);
//            cout<<"sdsd"<<endl;
            while(ss>>a>>b>>c)
            {

                if(a>d)
                {
                    d=a,e=b,g=c;
                }
                else if(a==d)
                {
                    if(b>e)
                    {
                        d=a,e=b,g=c;
                    }
                    else if(b==e)
                    {
                        if(c>g)
                        {
                            d=a,e=b,g=c;
                        }
                    }
                }
                a=0,b=0,c=0;
            }
            cout<<d<<" "<<e<<" "<<g<<endl;

        }

        cin>>ty;
    }
    return 0;
}
7-8 数据的间距问题 (15分)
#include<iostream>
#include<cmath>
using namespace std;
class Complex{
private:  
    double a, b;
public:
    Complex(){    
        a = 0;    
        b = 0;    
    }    
    Complex(double x, double y){    
        a = x;    
        b = y;    
        }
 };
template < class T >
double dist(T a, T b)
{    
    return abs(a-b);
}
double s(double m1, double m2)
{       
    return pow(abs(m2-m1), 2);
}

int main()
{    
    int n;    
    while(cin >> n, n != 0){     
       if(n == 1){       
            int a, b;      
            cin >> a >> b;            
            cout << dist(a, b) << endl;        
        }        
        else if(n == 2){       
             float a, b;            
             cin >> a >> b;            
             cout << dist(a, b) << endl;        
        }        
        else if(n == 3){      
              double a, b;           
              double a1, b1, a2, b2;            
              cin >> a1 >> b1 >> a2 >> b2;            
              a = s(a1, a2);           
              b = s(b1, b2);            
              cout << sqrt(a+b) << endl;        
         }    
       }
       return 0;
}
7-9 组最大数 (15分)
#include <iostream>
#include <algorithm>
#include<vector>
using namespace std;
bool campare(string i, string j)
{
    return (i+j) > (j+i);
}
int main()
{
    int n;
    while(cin >> n)
    {
        vector<string> tmp(n, "");
        for(int i=0; i<n; i++)
        {
            cin >> tmp[i];
        }
        sort(tmp.begin(), tmp.end(), campare);
        for(int i=0; i<n; i++)
        {
            cout << tmp[i];
        }
        cout << endl;
    }
}
7-10 对称排序 (15分)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n=-1,cnt=0;
    while(1)
    {
        string str="";
        vector<string> v;
        vector<string> v2;
        bool flag=true;
        cin>>n;
        if(n==0)
        {
            break;
        }
        cnt++;
        for(int i=0;i<n;i++)
        {
            cin>>str;
            if(flag)
            {
                v2.push_back(str);
                flag=false;
            }
            else
            {
                v.push_back(str);
                flag=true;
            }
        }
        cout<<"SET "<<cnt<<endl;
        for(int k=0;k<v2.size();k++)
        {
            cout<<v2[k]<<endl;
        }
        for(int i=v.size()-1;i>=0;i--)
        {
            cout<<v[i]<<endl;
        }
    }
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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