C++基础OJ习题

长方柱类【C++ 类定义】

编写基于对象的程序,求长方柱(Bulk)的体积。数据成员包括长(length)、宽(width)、高(heigth)、体积,要求用成员函数实现下面的功能:
1)由键盘输入长方柱的长、宽、高;
2)计算长方柱的体积(volume)和表面积(areas);
3)输出这长方柱的体积和表面积。

#include

using namespace std;

class Bulk

{

public:

    void set_value();

    double get_volume();

    double get_area();

private:

    double lengh;

    double width;

    double height;

};

//下面定义成员函数

 void Bulk::set_value()

{

    cin>>lengh>>width>>height;

}

//main()函数测试,完成输入输出

double Bulk::get_volume()

{

    return lengh*width*height;

}

double Bulk::get_area()

{

    return 2*(lengh*width+lengh*height+width*height);

}

int main()

{

    Bulk b1;

    b1.set_value();

    cout<

    cout<

    return 0;

}

大斐波那契数列

斐波那契数列,又称黄金比例数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F[0]=1,F[1]=1,F[n]=F[n-1]+F[n-2](n>=2,n∈N*)。总之斐波纳契数列有很多应用,现在你能用类的方法实现吗?

 

#include

using namespace std;

class ff

{

public:

    void count();

    void output()

    {

        for(int i=0; i<51; i++)

            cout<

    }

private:

    long long f[100000];

};

void ff::count()

{

    int i;

    f[0]=f[1]=1;

    for(i=2; i<51; i++)

        f[i]=f[i-1]+f[i-2];

}

int main()

{

    ff a;

    a.count();

    a.output();

    return 0;

}

删除线性表节点(线性表)

 

已知长度为n的线性表A采用链式存储结构,请写一时间复杂度为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为item的数据元素。(O1)表示算法的辅助空间为常量)。

#include

using namespace std;

struct node

{

    int data;

    node *next;

};

node *createlist(node *head,int n)

{

    node *previous;              //前驱结点

    node *current;               //当前结点

    if(n<1)

    {

        return NULL;           //建立空链表

    }

    previous=head=new node;         //建立首结点

    cin>>head->data;                //输入数据

    while(--n)

    {

        current=new node;            //建立新结点

        cin>>current->data;          //输入数据

        previous->next=current;      //新节点挂在表尾

        previous=current;

    }

    previous->next=NULL;          //置表尾结束标志

    return head;                  //返回首结点指针

}

node *listdel(node *head,int item)

{

    node *temp;

    /* 从头找到第一个不等于item的结点 */

    while(head!=NULL&&head->data==item)

    {

        temp = head;

        head=head->next;

        delete temp; //删除该节点

    }

    if(head==NULL)

        return NULL;

    node *previous=head;        //前驱结点

    node *current = head->next; //当前结点

    while(current!=NULL)

    {

        /* 删除连续相同的结点*/

        while(current!=NULL&¤t->data==item)

        {

            current=current->next;

        }

        previous->next=current; //重新连接结点

        if(current==NULL)

            break;

        previous=current;

        current=current->next;  //当前结点后移

    }

    return head;

}

void output(node *head)

{

    node *current=head;

    while(current!=NULL)

    {

        cout<data<<" ";    //输出结点数据

        current=current->next;        //结点指针后移

    }

}

int main()

{

    node *head=NULL;

    int n,item;

    cin>>n;

    head=createlist(head,n);

    cin>>item;

    head=listdel(head,item);

    output(head);

    return 0;

}

处理成绩(c++类训练)

小平帮老师处理期末成绩时遇到了问题。他需要计算每个同学的平均成绩,并判断他们是否通过了期末考试不及格成绩(<60),若都通过才能pass,若没通过要说明是哪几科未通过。因此他需要两个函数,一个求平均成绩(不考虑小数),另一个判断是否通过考试,通过输出pass,否则输出未通过的科目。请你们帮帮他!

期末包括Chinese,Math,English三门课程。

#include

 

using namespace std;

 

int main()

{

    int n,Chinese,Math,English;

    cin>>n>>Chinese>>Math>>English;

    cout << "student:" <

    int avg=(Chinese+Math+English)/3;

    cout<

    if(avg>=60)

        cout<<"pass";

    else

    {

        if(Chinese<60)

            cout<<"Chinese"<

        if(Math<60)

            cout<<"Math"<

        if(English<60)

            cout<<"English"<

    }

    return 0;

}

C++类实现最大数的输出

输入n个数,找出最大的数并输出。

#include

using namespace std;

class Q

{

public:

//此处声明需要的成员函数

void set_value();

int get_Max();

private:

  int n;

  int a[100];

};

//下面定义成员函数

//main()函数测试,完成输入输出

void Q::set_value()

{

    cin>>n;

    for(int i=0;i

        cin>>a[i];

}

int Q::get_Max()

{

    int Max=a[0];

    for(int i=0;i

        if(Max

            Max=a[i];

    return Max;

}

int main()

{

  Q b1;

  b1.set_value();

  cout<

  return 0;

}

类的应用

设计一个栈类完成压栈和出栈操作。

栈有下面这样的特点:
1) 用数组描述的顺序栈,只有一个对数据进行存入和取出的端口;
2) 后进者先出,即最后被存入的数据将首先被取出。取出也只可以从顶端进行,即后进先出。

提交压栈,出栈函数即可

#include

using namespace std;

 

class stack

{

    float data[6];

    int top;

public:

    stack(void);

    void push(float a);

    float pop(void);

};

stack::stack(void)

{

    top=0;

    cout<<"stack initialized" ;

}

// 此处为进栈、出栈函数

void stack::push(float a)

{

    data[top++]=a;

}

float stack::pop(void)

{

    return data[--top];

}

int main()

{

    stack s1;

    int i;

    for(i=1; i<=6; i++)

        s1.push(2*i);

    for(i=1; i<=6; i++)

        cout<

}

A类设计--正方形

设计一个基于对象的程序,计算正方形的周长和面积并输出。

#include

#include

using namespace std;

 

class Square

{

private:

    int SideLength;

    int Perimeter ;

    int Area;

public:

    Square(int len);

    void calcPerimeter();

    void calcArea();

    void showPeriArea();

};

Square::Square(int len)

{

    SideLength=len;

}

void Square::calcPerimeter()

{

    Perimeter=4*SideLength;

}

void Square::calcArea()

{

    Area=SideLength*SideLength;

}

void Square::showPeriArea()

{

    cout<

}

 

int  main()

{

    int len;

    cin>>len;

    Square sq(len); //边长

    sq.calcPerimeter(); //计算周长

    sq.calcArea(); //计算面积

    sq.showPeriArea();  //输出周长和面积

    return 0;

}

 

编程题:类---矩形类

---矩形类Rectangle

设计一个面向对象的程序,计算矩形的周长和面积并输出。

矩形类中有两个数据成员,width成员表示矩形的宽,length成员表示矩形的长;

矩形类中有成员函数getArea来获取矩形的面积,成员getPerimeter来获取矩形的周长,还有适当的构造函数。

请在下面的程序段基础上完成设计,只提交beginend部分的代码:

#include

using namespace std;

class Rectangle

{

public:

    Rectangle(int w,int l);

    int getArea();

    int getPerimeter();

private:

    int width;

    int length;

};

Rectangle::Rectangle(int w,int l)

{

    width=w;

    length=l;

}

int Rectangle::getArea()

{

    return length*width;

}

int Rectangle::getPerimeter()

{

    return 2*(length+width);

}

int main()

{

    int width,length;

    cin>>width>>length;

    Rectangle r(width,length);

    cout<<"Area="<

    cout<<"Perimeter="<

    return 0;

}

xiaoping学构造函数

xiaoping刚接触类的构造和析构函数,对于构造函数的编写比较困惑。zhuangzhuang给小平布置了一道题目,xiaoping苦思两天也无法解答,请你帮帮xiaoping吧。

#include

using namespace std;

class XiaoPing

{

private:

    int state;   //用来记录是否有参数

    int data;

public:

 

    XiaoPing();

    XiaoPing(int data);

    ~XiaoPing();

};

XiaoPing::XiaoPing()

{

    state=0;

    cout<<"create an object with no parameter"<

}

XiaoPing::XiaoPing(int data)

{

    state=1;

    this->data=data;

    cout<<"create an object with a parameter:"<

}

XiaoPing::~XiaoPing()

{

    if(state)

        cout<<"destory an object with a parameter:"<

    else

        cout<<"destory an object with no parameter"<

}

int main()

{

    int data;

    XiaoPing zeropara1;

    cin>>data;

    XiaoPing onepara1(data);

    XiaoPing zeropara2;

    cin>>data;

    XiaoPing onepara2(data);

    return 0;

}

对象数组输入与输出

Description

建立一个对象数组,内放n(n<10)个学生的数据(学号、成绩),用指针指向数组首元素,输出第奇数(1,3,5,7)个学生的数据

#include

#include

using namespace std;

 

class Student

{

private:

    int num;

    double grades;

public:

    void input();

    void display();

} ;

 

void Student::input()

{

    cin>>num>>grades;

}

void Student::display()

{

    cout<

}

int main()

{

    const int NUM=10;

    Student stud[NUM];

    int n,i;

    cin>>n;

    for(i=0; i

        stud[i].input();

    cout<

    cout<

    Student *p=stud;

    for(i=0; i

        p->display();

    return 0;

}

矩形类定义【C++】

定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数、输入坐标的函数,以及计算并输出矩形面积的函数。要求使用提示中给出的测试函数并不得改动

#include

using namespace std;

class Rectangle

{

private:

    double a,b,c,d;

public:

    Rectangle(){}

    Rectangle(double a,double b,double c,double d);

    Rectangle(Rectangle &p);

    void input();

    void output();

};

void Rectangle::input()

{

    cin>>a>>b>>c>>d;

}

void Rectangle::output()

{

    cout<<(c-a)*(d-b)<

}

Rectangle::Rectangle(double a,double b,double c,double d)

{

    this->a=a;

    this->b=b;

    this->c=c;

    this->d=d;

}

Rectangle::Rectangle(Rectangle &p)

{

    a=p.a;

    b=p.b;

    c=p.c;

    d=p.d;

}

int main()

{

    Rectangle p1;

    p1.input();

    p1.output();

    Rectangle p2(p1);

    p2.output();

    Rectangle p3(1,1,6,3);

    p3.output();

    return 0;

}

 

统计程序设计基础课程学生的平均成绩

程序设计基础课程的学生成绩出来了,老师需要统计出学生个数和平均成绩。学生信息的输入如下:

               学号(num)                     学生姓名(name)            成绩(score)

               101                                           张三                           100

               102                                           李四                           89

               103                                           王五                           59

在下面的程序段基础上完成整个设计,统计学生个数和计算学生的平均成绩。
注意:
(1)程序中与成绩相关的数据都用整型数据,得到的平均成绩也用整数表示    
(2)要求用静态数据成员和静态成员函数
(3)只提交begin到end部分的代码

#include

using namespace std;

 

class student

{

private:

    int num;  //学号

    char name[20];   //姓名

    int score;  //成绩

    static int count;  //记录对象个数

    static int sum;    //记录总成绩

public:

    student(); //构造函数

    void input() //学生信息输入

    {

        cin>>num>>name>>score;

    }

    int getsum();  //计算总成绩

    static int average(); //获取成绩平均值

    static int getcount();  //获取对象个数

};

 

//将程序需要的其他成份写在下面,只提交beginend部分的代码

//******************** begin ********************

student::student(){}

int student::count=0;

int student::sum=0;

int student::getsum()

{

    sum+=score;

    count++;

    return sum;

}

int student::average()

{

    if(count==0)

        return 0;

    else

        return sum/count;

}

int student::getcount()

{

    return count;

}

//********************* end ********************

int main()

{

    int n;

    cin>>n;

    student *p=new student[n];

    while(n--)

    {

        p->input();

        p->getsum();

        p++;

    }

    cout<<"student count="<

    cout<<"average score="<

    return 0;

}

输出日期时间--友元函数

 

设计一个日期类和时间类,编写display函数用于显示日期和时间。要求:display函数作为类外的普通函数,分别在Time和Date类中将display声明为友元函数。在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。

#include

using namespace std;

 

class Time;

class Date

{

private:

    int year,month,day;

public:

    Date(int year,int month,int day);

    friend void display(const Date &,const Time &);

};

Date::Date(int year,int month,int day)

{

    this->year=year;

    this->month=month;

    this->day=day;

}

class Time

{

private:

    int hour,minute,second;

public:

     Time(int hour,int minute,int second);

     friend void display(const Date &,const Time &);

};

Time::Time(int hour,int minute,int second){

    this->hour=hour;

    this->minute=minute;

    this->second=second;

}

void display(const Date &date,const Time &time)

{

    cout<

    cout<

}

 

int main()

{

    void display(const Date &,const Time &);

    int year,month,day;

    cin>>year>>month>>day;

    Date d1(year,month,day);

    int hour,minute,second;

    cin>>hour>>minute>>second;

    Time t1(hour,minute,second);

    display(d1,t1);

    return 0;

}

 

你可能感兴趣的:(C++基础OJ习题)