面向对象实例编程
来源:互联网 发布:忧伤的嫖客 知乎 编辑:程序博客网 时间:2024/04/29 12:10
第一题:
代码如下:
#include <iostream>#include<stdio.h>using namespace std;class UniversityObject{ public: virtual char * getSummary() = 0;};class Student:public UniversityObject{ public: Student(char * name, char * stu_id); char * getSummary(); ~Student(){delete[] summary;} private: char * Name; char * Stu_ID; char *summary;};Student::Student(char * name, char * stu_id){ Name = name; Stu_ID = stu_id; summary = new char[4096];}char * Student::getSummary(){ sprintf(summary, "学号 %s, %s", Stu_ID, Name); return summary;}class LectureTheatre:public UniversityObject{ public: LectureTheatre(double room_num, int seat_num); char * getSummary(); ~LectureTheatre(){delete[] summary;} private: double Room_num; int Seat_num; char *summary;};LectureTheatre::LectureTheatre(double room_num, int seat_num){ Room_num = room_num; Seat_num = seat_num; summary = new char[4096];}char * LectureTheatre::getSummary(){ int i,d; i = (int)Room_num; d = (int)(Room_num * 1000 - i * 1000); sprintf(summary, "%d号楼%d, 共%d个座位", i, d, Seat_num); return summary;}class Module:public UniversityObject{ public: Module(char * title, char * code, int stu_num); char * getSummary(); ~Module(){delete[] summary;} private: char * Title; char * Code; int Stu_num; char *summary;};Module::Module(char * title, char * code, int stu_num){ Title = title; Code = code; Stu_num = stu_num; summary = new char[4096];}char * Module::getSummary(){ sprintf(summary, "编号%s, 《%s》,%d人选修", Code, Title, Stu_num); return summary;}int main(){ UniversityObject *a1 = (UniversityObject *) new Student ("张三", "0320121113"); UniversityObject *a2 = (UniversityObject *) new LectureTheatre (3.205, 186); UniversityObject *a3 = (UniversityObject *) new Module ("面向对象技术", "0321011", 185); printf("汇总结果:\n 学生: %s\n 教室: %s\n 课程: %s\n", a1->getSummary(),a2->getSummary(),a3->getSummary()); return 0;}
第二题:
代码如下:
#include <iostream>using namespace std;const int Capacity = 30;template <class T> class CQueue{ public: CQueue(){Queue = new T[Capacity];} void init(){front = rear = 0;} int size(); //current size bool EnQueue(T e);//enter element bool DeQueue(T &e);//delete element bool GetElement(int i, T &e);//get element ~CQueue(){delete[] Queue;} private: int front; int rear; T *Queue;};template <class T>int CQueue<T>::size(){ return (rear - front + Capacity) % Capacity;}template <class T>bool CQueue<T>::EnQueue(T e){ if((rear+1) % Capacity == front)//CQueue is full return false; Queue[rear] = e; rear = (rear+1) % Capacity; return true;}template <class T>bool CQueue<T>::DeQueue(T &e){ if(front==rear)//CQueue is empty return false; e = Queue[front]; front = (front+1) % Capacity; return true;}template <class T>bool CQueue<T>::GetElement(int i, T &e){ if(i<1||i>size()) return false; e = Queue[i-1]; return true;}int main(){ int elem,in,index; char YorN1, YorN2; CQueue<int> q; q.init(); cout<<"Enter 10 elements automatically:"<<endl; for(int i=1;i<=10;i++) { //Enter elements automatically q.EnQueue(i*2); cout<<i*2<<" "; } cout<<endl<<"The number of the valid elements: "<<q.size()<<endl<<endl; while(q.size() < Capacity) { cout<<"Do you wanna enter a number by yourself? y/n: "; cin>>YorN1; if(YorN1=='y') { cout<<"Enter a number: "; cin>>in; if(q.EnQueue(in)) { cout<<"Successful enter: "<<in<<endl; } } else break; } cout<<endl<<"The number of the valid elements: "<<q.size()<<endl; for(int j=1;j<=q.size();j++) { //Get all elements if(q.GetElement(j, elem)) cout<<"Queue["<<j<<"]:"<<elem<<endl; } cout<<endl; while(1) { cout<<"Do you wanna get an element? y/n: "; cin>>YorN2; if(YorN2=='y') { cout<<"Enter the index of the element:"; cin>>index; if(q.GetElement(index, elem)) cout<<"Queue["<<index<<"]:"<<elem<<endl; } else break; } cout<<endl<<"Delete elements from the CQueue:"<<endl; while(q.size()) { q.DeQueue(elem); cout<<elem<<" "; } cout<<endl; if(!q.DeQueue(elem)) cout<<"CQueue is empty"<<endl<<endl; cout<<"Maxsize of the CQueue: "<<Capacity<<endl<<endl; return 0;}
运行结果:
Enter 10 elements automatically:2 4 6 8 10 12 14 16 18 20The number of the valid elements: 10Do you wanna enter a number by yourself? y/n: yEnter a number: 5Successful enter: 5Do you wanna enter a number by yourself? y/n: yEnter a number: 2Successful enter: 2Do you wanna enter a number by yourself? y/n: nThe number of the valid elements: 12Queue[1]:2Queue[2]:4Queue[3]:6Queue[4]:8Queue[5]:10Queue[6]:12Queue[7]:14Queue[8]:16Queue[9]:18Queue[10]:20Queue[11]:5Queue[12]:2Do you wanna get an element? y/n: yEnter the index of the element:3Queue[3]:6Do you wanna get an element? y/n: nDelete elements from the CQueue:2 4 6 8 10 12 14 16 18 20 5 2CQueue is emptyMaxsize of the CQueue: 30Process returned 0 (0x0) execution time : 89.872 sPress any key to continue.
0 0
- 面向对象编程实例
- 面向对象实例编程
- 面向对象编程与面向实例编程
- Flex面向对象编程 - 实例
- js 面向对象编程实例
- Java面向对象编程实例详解
- Javascript中的面向对象编程实例
- 从实例面向对象的编程思想
- [Python]面向对象编程---实例(3)
- [TwistedFate]面向对象编程、类和对象、实例变量操作
- java基础; 面向对象编程; 对象的实例化
- Linux C++ 面向对象多线程编程实例之“生产者-消费者”
- javascript 面向对象编程方法的实现与实例
- 一个简单的Matlab面向对象编程实例
- 面向对象编程实例——句柄类的使用
- C++面向对象编程实例——文本查询程序
- js面向对象编程之静态方法与实例方法
- 【设计分享】一个面向对象思想的perl编程实例
- 在线编程刷题碰到的一些问题
- Handler相关的弱引用
- DLL项目生成时,老是事儿生成成功,时而生成失败
- singleton单例模式
- CoreData
- 面向对象实例编程
- MySql性能优化之分析命令
- 【leetcode每日一题】100.same treet
- 索引与sql优化问题汇总
- TOMCAT控制台日志输出到指定文件中
- 9月10日
- 关于 项目中用到shiro如何通过token鉴权登录,模拟登录,代码直接登录的问题!
- C# WinForm开发系列 - 文章索引
- 相似图片搜索的原理