C++——封装队列、班级

作业一:封装一个循环顺序队列

#include <iostream>
#define MAX 20
using namespace std;
typedef int datatype;
class Queue
{
private:
    datatype data[MAX];
    int front; //对头
    int tail; //队尾
public:
    void init();
    bool empty();
    bool full();
    int size();
    void push(datatype e);
    void pop();
    void show();
};

void Queue::init()
{
    this->front = 0;
    this->tail = 0;
}

bool Queue::empty()
{
    return front==tail;
}
bool Queue::full()
{
    return (tail+1)%MAX==front;
}
int Queue::size()
{
    return (tail+MAX-front)%MAX;
}
void Queue::push(datatype e)
{
    if(!full())
    {
        data[tail]=e;
        tail=(tail+1)%MAX;
        cout<<"入队成功"<<endl;
    }
}
void Queue::pop()
{
    if(!empty())
    {
    front=(front+1)%MAX;
    cout<<"出队成功"<<endl;
    }
}
void Queue::show()
{
    if(!empty())
    {
        for(int i=front;i!=tail;i=(i+1)%MAX)
        {
            cout<<data[i]<<"\t";
        }
        cout<<endl;
    }
}


int main()
{
    Queue q;
    q.init();
    q.push(7);
    q.push(8);
    q.push(7);
    q.push(7);
    q.push(7);
    q.show();
    q.pop();
    q.show();
    q.pop();
    q.show();
    q.pop();
    return 0;
}

 

 

作业二:封装一个班级 成员属性:存放学生成绩的数组 成员方法:输入学生成绩 输出学生成绩 排序 求最值 求总分 

#include <iostream>
using namespace std;
#define MAX 50
class stu
{
private:
    float score[MAX];
    int num;
public:
    bool empty();
    bool full();
    void init();
    void push(float e);
    void show();
    void sort();
    void max();
    void total();
};
bool stu::empty()
{
    return num==0;
}
bool stu::full()
{
    return num==MAX;
}
void stu::init()
{
    num=0;
}
void stu::push(float e)
{
    if(!full())
    {
        score[num]=e;
        num++;
        cout<<"输入成功"<<endl;
    }

}
void stu::show()
{
    if(!empty())
    {
        for(int i=0;i<num;i++)
        {
            cout<<score[i]<<"\t";
        }
        cout<<endl;
    }
}
void stu::sort()
{
    if(!empty())
    {
        for(int i=1;i<num;i++)
        {
           for(int j=0;j<num-i;j++)
            {
                if(score[j]>score[j+1])
                {
                    float temp=score[j];
                    score[j]=score[j+1];
                    score[j+1]=temp;
                }
            }
        }
        cout<<"排序完成"<<endl;
    }
    else
    {
        cout<<"暂无成绩,排序失败"<<endl;
    }
}
void stu::max()
{
    if(!empty())
    {
        float max=score[0];
        float min=score[0];
        for(int i=0;i<num;i++)
        {
            if(score[i]>max)
            {
                max=score[i];
            }
            else if(score[i]<min)
            {
                min=score[i];
            }
        }
        cout<<"最大值为:"<<max<<endl;
        cout<<"最小值为:"<<min<<endl;
    }
}
void stu::total()
{
    if(!empty())
    {
        float sum=0;
        for(int i=0;i<num;i++)
        {
            sum+=score[i];
        }
        cout<<"总分:"<<sum<<endl;
    }
}

int main()
{
    stu s1;
    s1.init();
    s1.show();
    s1.push(88);
    s1.push(99);
    s1.push(77);
    s1.push(65.3);
    s1.push(100);
    s1.show();
    s1.max();
    s1.sort();
    s1.show();
    s1.total();
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值