ex0305.cpp

来自「Visual+C+++6[1].0实用教程代码 Visual+C+++6[1]」· C++ 代码 · 共 98 行

CPP
98
字号
// ex0305.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h>
#include <iomanip.h>

class baseClass { //基类baseClass
  protected: 
   int n; 
  public:
   baseClass(int n0){n=n0;} //构造函数
   virtual void reversedata()=0; //虚函数reversedata,且为纯虚函数
  };
 
class method1Cla:public baseClass { //派生类method1Cla
  public:
   method1Cla(int n0):baseClass (n0) {}
  
  void reversedata() {//常界数组求解方法
   int a[100];
   cout<<"输入"<<n<<"整数:"<<endl;
   for(int i=0; i<n; i++)
    cin>>a[i];
    cout<<"---- 反序输出结果 ----"<<endl;
    for(i=n-1; i>=0; i--) cout<<a[i]<<" ";
     cout<<endl;
   }
  };

  class method2Cla:public baseClass { //派生类method2Cla
   public:
    method2Cla(int n0):baseClass (n0) {}
   
   void reversedata() { //动态数组求解方法
   int i, *a, *p;
   a=new int[n]; //申请大小为n 的动态数组
   cout<<"输入"<<n<<"整数:"<<endl;
   for(i=0; i<n; i++) cin>>*(a+i); 
   cout<<"---- 反序输出结果 ----"<<endl;
   for(p=a+n-1; p>=a; p--) cout<<*p<<" ";
   cout<<endl;
   }
  };

  class method3Cla:public baseClass { //派生类method3Cla
   public:
   method3Cla(int n0):baseClass (n0) {}
  
   void reversedata() {  //指针与链表的求解方法
   struct item { //结构类型,用于形成链表项
    int data; //存放数据
    item * next; //指向本结构的指针,由它“串联”起后项
   };
   item *first=NULL, *temp; //由first 指向链表首
   int i, x;
   cout<<"输入"<<n<<"整数:"<<endl;
   for(i=0; i<n; i++) {
    cin>>x; 
    temp=new item;
    temp->data=x; 
    temp->next=first;
    first=temp;
   }
   cout<<"---- 反序输出结果 ----"<<endl;
   temp=first;
   while(temp!=NULL) { 
    cout<<temp->data<<" ";
    temp=temp->next;
   }
   cout<<endl;
 }
 
 };
  
  
 void f(baseClass *p) { //自定义函数f,形参p 为指向基类的指针
   p->reversedata(); //根据p 值的不同去调用不同派生类的虚函数
  }


int main(int argc, char* argv[])
{
int n; 
 cout<<"输入数据长度n="; 
 cin>>n;
 method1Cla obj1(n); //说明method1Cla 类对象obj1
 method2Cla obj2(n); //method2Cla 类对象obj2
 method3Cla obj3(n); //method3Cla 的类对象obj3
 cout<<"===== method1Cla ====="<<endl;
 f(&obj1); //常界数组求解方法
 cout<<"===== method2Cla ====="<<endl;
 f(&obj2); //动态数组求解方法
 cout<<"===== method3Cla ====="<<endl;
 f(&obj3); //指针与链表的求解方法
 return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?