初学链表,练习V1.0

/*************InitList*************/

进展不是太快,删除节点部分还没搞懂,先把在表尾添加节点功能加上

/* 5、求一个3×3矩阵对角线元素之和。*/
#include<iostream.h>
int dia(int a[][3]);
void main()
{
int i,j,sum,a[3][3]={2,3,5,6,2,3,1,9,0};
cout<<“a= “;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<a[i][j];
cout<<endl<<”   “;
}
sum=dia(a);
cout<<“nsum=”<<sum<<endl;
}
int dia(int a[3][3])
{
int i,j,sum=0;
for(i=0;i<3;i++)//主对角线之和
for(j=i;j<=i;j++)
sum+=a[i][j];
for(j=0;j<3;j++)//另一个对角线之和
for(i=2-j;i<=2-j;i++)
if(i!=j)//避免重复累加两个对焦向重合的元素
sum+=a[i][j];
return sum;//返回对角线员素之和
}

#include <iostream>

class IntNode
{
public:
 int info;
 IntNode *next;
 IntNode(int el, IntNode *ptr)
 {
  info=el;
  next=ptr;
 }
};

#include “IntNode.h”
class InitList
{
public:
 IntNode *head;
 IntNode *tail;
 InitList()
 {
  head=tail=0;
 }
 int isEmpty();
 void addToHead(int);

template<typename T>void List<T>::MakeEmpty(){
Node<T> *temp;
while(head->next!=NULL){
temp = head->next ;
    head->next = temp->next ;
   delete temp ;
}
rear = head;
}

 

#include “IntNode.h”
class InitList
{
public:
 IntNode *head;
 InitList()
 {
  head=0;
 }
 void addToHead(int el)
 {
  head=new IntNode(el,head);
 }
 int isEmpty()
 {
  if(head==0)
  {
   return 0;
  }
  else
   return 1;
 }
};
/*************main.cpp***************/

 

Cstring::~Cstring()
{
delete []p;
}

private:

#include <iostream.h>
#include “InitList.h”
void main()
{
 InitList L;
 cout<<L.isEmpty()<<endl;
 L.addToHead(3);         //插入值为3的元素
 cout<<L.isEmpty()<<endl;
}

 

struct node *next;
struct node *parent;
}Node,*LinkNode;

A(){cout<<“constructing A”<<endl;} 

稍后版本会增加在表尾插入节点等功能。

class IntNode
{
public:
 int info;
 IntNode *next;
 IntNode(int el, IntNode *ptr=0)
 {
  info=el;
  next=ptr;
 }
};

for(int i=9;i>=0;i–)
{
node1[i].next=&node1[i-1];
}
}

void circle::setradius(float r) {radius=r;}

/************IntNode.h**************/

 void addToTail(int);
};
int InitList::isEmpty()
{
 if(head==0)
 {
  return 0;
 }
 else  
  return 1;
}
void InitList::addToHead(int el)
{
 head=new IntNode(el,head);
}

#include”CString.h”
#include”string.h”

int main()

刚懂一点儿,先做了一个,功能根本不完善,只有判断是否为空和在表头插入节点。

/*******************InitList.h*******************/

/*2、将圆类circle的计算面积和计算周长的功能分别抽象成class area和class
perimeter,并在这两个新类中利用纯虚函数功能实现面积和周长的统一调用接口显示函数Show。*/
using namespace std;

const {return 3.14*radius*radius;} 

程序如下。

template<typename T>List<T>::~List(){
MakeEmpty();
delete head;
}

float get_Y()const{return y;} 

void InitList::addToTail(int el)
{
 if(tail!=0)
 {
  tail->next=new IntNode(el);
  tail=tail->next;
 }
 else
 {
  head=tail=new IntNode(el);
 }
}

template<class T>
bool Temqueue<T>::isEmpty()
{
if (rear == front)
{
return true;
}
else
{
return false;
}
}

friend ostream &operator<<(ostream &,  const cyl &); 

#include <iostream.h>
#include “InitList.h”
void main()
{
 InitList L;
 cout<<L.isEmpty()<<endl;
// L.addToHead(3);
// cout<<L.isEmpty()<<endl;
 L.addToTail(3);
 cout<<L.isEmpty()<<endl;
}

struct stack
{
int *top;
int *base;
int stacksize;
    int initstack(stack &s)
{
s.base=(int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!s.base) return 0;
s.top=s.base;
s.stacksize =STACK_INIT_SIZE;
return 1;

    B b3(1,3);

 

public:
Temqueue();
virtual ~Temqueue();
bool isEmpty();
bool isFull();
bool push(T);
T pop();
};

{  x=a; 

下一版本将加入删除节点等功能。继续研发中……

/*
1、在主函数中输入10个字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。(用指针实现)*/
#include<iostream.h>
void psort(int *p);
void main()
{
int i,a[10];
cout<<“please input ten numbers:n”;
for(i=0;i<10;i++)
cin>>a[i];
psort(a);
cout<<“resort result=”;
for(i=0;i<10;i++)
cout<<a[i]<<” “;
}
void psort(int *p)
{
int i,j,temp;
for(i=0;i<10;i++) //每循环一次确定数组中一个数的位置
for(j=i+1;j<10;j++) //每次循环对比一个数的大小
{
if(p[i]>p[j])
{
temp=p[j];
p[j]=p[i];
p[i]=temp;
}
}

ostream &operator<<(ostream &output,const Point&p) { 
output<<“[“<<p.x()<<“,”<<p.y()<<“]”<<endl;

/*******************main.cpp***************/

Person::Person(char *name, int age)
{
strcpy(this->name,name);
this->age = age;
}

float area()const; 

/*****************IntNode.h********************/

template<class T>
bool Temqueue<T>::push(T e)
{
if (isFull())
{
return true;
}
queue[rear] = e;
rear = ++rear;
return true;
}

}; 

#include “Man.h”
#include “Person.h”
#include <string.h>

};

cout<<endl<<endl;
}
bool Judge(int **p,int n)//判断是否为n阶魔方阵
{
int i,j,sum = 0,NowSum = 0;
bool YesOrNo = true;

float get_y()const{return y;} 

struct num
{
int data;
struct num *next;
};

float  triangle:: PrintArea() const {return  
x*y*sqrt(1-(x*x+y*y-z*z)*(x*x+y*y-z*z)/4*x*x*y*y)/2;}  

void CString::cpystring(char *str)
{
int i=0;
while(*str!=’’)
{
cstr[i++]=*str;
str++;
}
cstr[i]=’’;
}

B(int i,int j):A(i,j){c=0;}

//闰年输出 
if((year%4==0&&year%100!=0)||(year%400==0)){
cout<<year<<“年”<<month<<“月份的日历如下”<<endl;
cout<<setw(30)<<endl;
cout << setw(8) << “Sun”;
        cout << setw(8) << “Mon”;
        cout << setw(8) << “Tue”;
        cout << setw(8) << “Wed”;
        cout << setw(8) << “Thu”;
        cout << setw(8) << “Fri”;
        cout << setw(8) << “Sat”;
        cout << endl;
k=(today%7+1)%7;
for(int i=1; i<=k; i++)
cout<<setw(8)<<“”;
for(int g=1; g<=(7-k); g++){
cout<<setw(8)<<g;
}
cout<<endl;
for(int h=8-k; h<=M0[month-1]; h++) {
cout<<setw(8)<<h;
j++;
if(j==7){
j=0;
cout<<endl;
}
}
}
//平年输出
else {
cout<<year<<“年”<<month<<“月份的日历如下”<<endl;
cout<<setw(30)<<“”<<endl;
cout << setw(8) << “Sun”;
        cout << setw(8) << “Mon”;
        cout << setw(8) << “Tue”;
        cout << setw(8) << “Wed”;
        cout << setw(8) << “Thu”;
        cout << setw(8) << “Fri”;
        cout << setw(8) << “Sat”;
        cout << endl;
k=(today%7+1)%7;
for(int i=1; i<=k; i++)
cout<<setw(8)<<“”;
for(int g=1; g<=(7-k); g++){
cout<<setw(8)<<g;
}
cout<<endl;
for(int h=8-k; h<=M[month-1]; h++) {
cout<<setw(8)<<h;
j++;
if(j==7){
j=0;
cout<<endl;
}
}
}
cout<<endl;
cout<<“是否继续输入(Y/N||y/n)?”;
cin>>c;
if(c==’Y’||c==’y’) continue;
else exit(0);
}while(true);
}

    int a;

struct student
{
public:
int num;
char name[20];
int score[3];
};

{

#include “Person.h”
#include <string.h>

{

/* 8、将一个5 x
5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放),写一函数实现之。用main函数调用。*/
#include<iostream.h>
void psort(int a[]);
void main()
{
int i;
int
a[25]={5,3,52,6,2,1,8,0,23,56,7,21,23,4,57,62,15,31,45,6,43,78,12,53,41};
for(i=0;i<25;i++)
{
cout<<” “<<a[i];
}
cout<<endl;
psort(a);
}
void psort(int a[])
{
int i,j,k=0,temp,b[5][5];
for(i=0;i<25;i++) //每循环一次确定数组中一个数的位置
for(j=i+1;j<25;j++) //每次循环对比一个数的大小
{
if(a[i]>a[j])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
b[i][j]=a[k++];
}
temp=b[4][4]; //确定5个位置的数值
b[4][4]=b[2][2];
b[2][2]=temp;
temp=b[0][1];
b[0][1]=b[0][4];
b[0][4]=temp;
temp=b[0][2];
b[0][2]=b[4][0];
b[4][0]=temp;
temp=b[0][3];
b[0][3]=b[4][4];
b[4][4]=temp;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
cout<<“t”<<b[i][j];
}
cout<<endl;
}
}

class shape

/*
4、打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如:三阶魔方阵:
      8 1 6
      3 5 7
      4 9 2
要求打印由1到n2的自然数构成的所有魔方阵。 */
//方法一:输出N介魔方阵,但每介只输出一种。
#include<iostream.h>
void square(int a[][10],int k,int n);
void main()
{
int n,i,j,k,a[10][10]={0};
cout<<“input an odd number:”<<endl;
cin>>n;
k=n/2;//确定第一个数列数
square(a,k,n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<“t”<<a[i][j];
cout<<endl;
}
}
void square(int a[][10],int k,int n)
{
int i,j;
for(i=1,j=0;i<=n*n;i++,j–,k++)//n为阶数,从1开始给数组赋值
{
if(j<0&&k>=n)//当数组行列都越出范围时候,确定数组正确位置
{
j+=2;k-=1;
}
else if(j<0)//当数组行越出范围时候,确定数组正确位置
j+=n;
else if(k>=n)//当数组列越出范围时候,确定数组正确位置
          k-=n;
  else if(a[j][k]!=0)//当数组原位置有数时候,确定数组位置
  {
j+=2;k-=1;
  }
a[j][k]=i;
}
}
//方法二:输出N介魔方阵所有魔方阵。
#include <string>
#include <iomanip>
#include <iostream>

    return 0;

class Io{
public:
void input(){
fstream infile;
int i;
infile.open(“score.dat”,ios::out|ios::binary);
if(!infile){
cout<<“score.dat can’t writed.n”;
abort();
}
for(i=0;i<NUM;i++){
cout<<“请输入第”<<i+1<<“位考生信息:n”;
cout<<“input 准考证号:”;
cin>>data[i].ID;
cout<<“input 姓名:”;
cin>>data[i].name;
cout<<“input 英语成绩:”;
cin>>data[i].score;
cout<<endl;
infile.write((char *) &data[i], sizeof(data[i]));
}
infile.close();
system(“cls”);
}

结果分析与实验体会

if(!strcmp(s.c_str(),”e”) || !strcmp(s.c_str(),”E”))
{
break;
}
else if(s.find_first_not_of(“0123456789”) != string::npos)
{
cout<<“请输入有效的数字,不能含有非数字的字符。”<<endl;

 

END:
return YesOrNo;
}
void combination(int **p,int n,int *a)//求m =
n*n个数(1,2,3…..m)的全排列
{
int m = n*n;
static int Num = 0;
int *b_val = new int[m];
int c = 0,k,i,j;

point(float a=0,float b=0);

#define STACK_INIT_SIZE 100
#define STACKIN 10

int main() 

typedef struct node
{
int number;

    cyl cy(1,2,3,4); 

Transexual::Transexual(char *name, int age, char *sex1,char
*sex2):Person(name,age),Man(name,age,sex1),Woman(name,age,sex2)
{

};

void main(){
Circle *ptr;
Area area(10);
Perimeter perimeter(10);
ptr=&area;
cout<<ptr->shapeName()<<ptr->show()<<endl;
ptr=&perimeter;
cout<<ptr->shapeName()<<ptr->show()<<endl;
}
第14章  I/O流

{ x=a;y=b;}

protected:
int age;
char name[20];
};

void setpoint(float,float); 

//判断是否为n阶魔方阵
if(Judge(p,n))
{
printA(p,n);
}
}
}
}
else
{
c–;
}
}

   

void main(){
List <int>l;
    l.CreateList();
l.PrintList();
cout<<“over!”<<endl;
}

(4)了解虚函数的作用与使用方法

/* 4、统计一字符串在另一个字符串中出现的次数。*/
#include<iostream.h>
#include<string.h>
int change(char *,char *);
void main()
{
int sum;
char a[10]=”dog”;
char b[20]=”sdlkdogsddydodog”;
cout.write(a,10)<<endl;
cout.write(b,20)<<endl;
sum=change(a,b);
cout<<“sum=”<<sum<<endl;
}
int change(char *p,char *q)
{
    int sum=0,i=0;
while(*q!=’’)
{
while(*p==*q&&*p!=’’)//对比是否含有相等字符串
{
*p++;
*q++;
i++;
}
if(*p==’’)
{
sum+=1;//含有字符串个数
}
p=p-i;//第一个字符串重新定位
q=q-i;//第二个字符串重新定位
i=0;//重新累加移动次数
q++;
}
return sum;
}

float getheight()const{return height;}

void main()
{
int k;
cout<<“请输入要给数列初始化的长度,队列长度为50。”<<endl;
cin>>k;
Temqueue<int> cQueue;
for (int i=0 ; i<k; i++)
{
cQueue.push(i);
}
if(k>0)
{
for (i=0; i<k; i++)
{
if (i>=MAX_SIZE)
{
cout<<“队列已满!”<<endl;
break;
}
else
cout<<cQueue.pop()<< ” “;
}
cout<<endl;
}
else
cout<<“队列为空!”<<endl;
}

#include<iostream>

class Light{
public:
Light();
void setStatus(bool status);
bool getStatus();
void setBright(int bright);
int getBright();
void setStyle(int style);
int getStyle();
int input();
void output();
private:
bool status;//表状态:开启或者关闭
int bright;//表亮度
int style;//表亮度类型:普通或者增强
};

    cout<<pt[1]->PrintArea()<<endl;    

template<typename T>class List{                    
//定义一个描述链表的类
public:
List();                                        
//空链表的构造(链表中只含表头结点)
~List();                                        //析构函数
void MakeEmpty();                              
//清空链表(删除链表中除表头结点以外的所有结点)
Node<T> * Find(T d);                           
//查找数据域与d相同的结点(返回所找到结点的指针)
void PrintList();                              
//输出链表中各结点的数据域
void CreateList(); //初始化链表
private:
Node<T> * head,* rear;
};

   

第4章 函数

cout<<“npRef as Circle:”<<cRef;

template<class T>
class Temqueue
{
private:
T queue[MAX_SIZE];
T front;
T rear;

float getradius()const{return radius;}

bool Light::getStatus(){
return status;
}

#include “ex_1_1(head).h”

void main()
{
CircularQueue cQueue;
for (int i=0 ; i<75; i++)
{
cQueue.push(i);
}

    return 0;

template <class T>
class Tte:public Te<T>{
public:
T tte;
};

#include<iostream.h>

#include<iostream>
#include”Te.h”
#include”Tte.h”
#include”Fte.h”

class circle:public shape

int contral::input(struct student *p,int count)
{
while(true)
{
cout<<“请输入学号:”<<endl;
cin>>p->num;
cout<<“请输入姓名:”<<endl;
cin>>p->name;
cout<<“请输入JAVA分数:”<<endl;
cin>>p->score[0];
cout<<“请输入C++分数:”<<endl;
cin>>p->score[1];
cout<<“请输入English分数:”<<endl;
cin>>p->score[2];
p++;
count++;
cout<<“输入Q退出,输入其它继续”<<endl;
char str[8];
cin>>str;
if(strcmp(str, “q”)==0)
{
break;
}
}
return count;
}

circle c(1,2,3);    

/*
5、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
*/
#include<iostream.h>
int cdivisor(int,int);
int cmultiple(int,int,int);
void main()
{
int x,y,d,m;
cout<<“input two number: “;
cin>>x>>y;
d=cdivisor(x,y);
m=cmultiple(x,y,d);
cout<<“common divisor is “<<d<<endl<<“common
multiple is “<<m<<endl;
}
int cdivisor(int x1,int y1)//最大公约数
{
int r,temp;
if (x1<y1)
{
temp=x1;
x1=y1;
y1=temp;
}
while(x1%y1)//当较大数除以较小数余数等于0时,较小数为最大公约数
{
r=x1%y1;
x1=y1;
y1=r;
}
return y1;
}
int cmultiple(int x2,int y2,int d1)//最小公倍数
{
return x2*y2/d1;//两数相乘结果除以它们的最大公约数为最小公倍数
}

};

goto END;
}
}

 

/* 8、用选择法对10个整数排序。*/
#include<iostream.h>
void csort(int a[10]);
void main()
{
int i;
int a[10]={6,4,2,7,9,0,1,6,3,0};
for(i=0;i<10;i++)//输出原数组数据顺序
cout<<a[i];
cout<<endl;
csort(a);
for(i=0;i<10;i++)//输出排序后的顺序
cout<<a[i];
cout<<endl;
}
void csort(int a[10])//排序
{
int i,j,k,temp=0;
for(i=1;i<10;i++)
{
k=i;
for(j=k+1;j<10;j++)//找出最小数的数组下标
if(a[k]>a[j])k=j;
if(k!=i)
{
temp=a[i];//把数放到正确位置
a[i]=a[k];
a[k]=temp;
}
}
}

           
<<cy1.getRadius()<<“,h=”<<cy1.getHeight()<<“narea=”<<cy1.area()<<“,volume=”<<cy1.volume()<<endl;

sum+=h2;
h1=h1/2.0;
h2=h1*2;
}
cout<<“sum=”<<sum<<”  
“<<“h1=”<<h1<<endl;
}

class  rectangle:public shape

void main()
{
Cstring s1(“first hello”);
Cstring s2(“second hello”);
cout<<“赋值之前:”<<endl;
cout<<“s1=”;
s1.display();
cout<<“s2=”;
s2.display();
cout<<“赋值之后:”<<endl;
s1=s2;
cout<<“s1=”;
s1.display();
cout<<“s2=”;
s2.display();
cout<<“相加之后:”<<endl;
cout<<“s1+s2″<<endl;
(s1+s2).display();
}
第11章 继承和派生类

{

class Circle:virtual public Point{
public:
Circle(double x):Point(x){
cout<<“Circle Constructor called”<<endl;
}
~Circle(){
cout<<“Circle Destructor called”<<endl;
}
void setCarea(){
carea=PI*x/2*x/2;
}
double getCarea(){
return carea;
}
protected:
double carea;

virtual float PrintArea() const{return 0.0;}

void main()
{
stack s;
int result,e=0;
result=s.initstack(s);
if(result==1)
cout<<“建栈成功!”<<endl;
else
cout<<“建栈失败!”<<endl;
for(int i=0;i<5;i++)
result=s.push(s,i);
if(result==1)
cout<<“初始化栈成功!”<<endl;
else
cout<<“初始化栈失败!”<<endl;
s.gettop(s,e);
cout<<“栈顶元素为:”<<e<<endl;
result=s.pop(s,e);
if(result==1)
cout<<“删除栈顶元素成功!”<<endl;
else
cout<<“删除栈顶元素失败!”<<endl;
s.pop(s,e);
cout<<“删除的栈顶元素为:”<<e<<endl;
}

protected:  float x,y;

/*1、利用C++的模板机制定义单向队列类模板、链表类模板,并实例化应用之。*/
/*单向队列类模板*/
#define MAX_SIZE 50

#include”ex_1_1(head).h”

/*
3、编写一函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。
  
4、在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。*/
#include <string.h>
#include <iostream.h>

void Point::setPoint(float a,float b)

void main(){
Te<int> te;
te.te=10;
cout<<“te=”<<te.te<<endl;
Tte<int> itte;
itte.tte=20;
cout<<“itte=”<<itte.tte<<endl;
Tte<double> dtte;
dtte.tte=3.14;
cout<<“dtte=”<<dtte.tte<<endl;
Fte fte;
fte.fte=10;
cout<<“fte=”<<fte.fte<<endl;
}
第13章 多态性与虚函数

{ public: 

class Fte:public Te<int>{
public:
int fte;
};

};  

}

   

bool CircularQueue::isFull()
{
if ((rear+1)%MAX_SIZE == front)
{
return true;
}
else
{
return false;
}
}

{ public: 

for(i = 0;i < n;i++)
{
for(j = 0;j < n;j++)
{
cout<<setw(4)<<p[i][j];
}

friend ostream &operator<<(ostream &,  point &); 

1、自己写一个程序,在某种条件下抛出各种类型异常(如:整数、字符串、类对象、引用等),再捕捉这些异常,并进行相关处理,保证自己的程序不被中断,让它继续执行。
#include<iostream>
#include<string>
using namespace std;

评语:

/*
2、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6
= 1 + 2 +
3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面的格式输出其因子:
6 -〉1,2,3 */
#include<iostream.h>
void main()
{
int i,j,sum=0,a[50],k,t;
for(i=1;i<=1000;i++)
{
sum=0;
        for(j=1;j<i;j++)
{
if(i%j==0)
{
sum+=j;
a[k++]=j;
}
}
t=k;
if(sum==i)
{
cout<<i<<“->”;
for(k=0;k<t;k++)
{
cout<<a[k];
if(k<t-1)cout<<“,”;
}
cout<<endl;
}
    k=0;
}
}

成绩:                   
        指导教师:                  

for(i = 0; i < n; i++)
{
delete []a[i];
}
delete []a;
}
}while(1);

#include “ex_1_1(head).h”

/*
6、编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy函数。拷贝时,‘’也要拷贝过去。
‘’后面的字符不拷贝。*/
#include<iostream.h>
void scopy(char a[],char b[]);
void main()
{
int i;
char a[10];
char b[10]=”Hello”;
scopy(a,b);
for(i=0;a[i]!=’’;i++)
cout<<a[i];
cout<<endl;
}
void scopy(char a[],char b[])
{
int i;
for(i=0;b[i]!=’’;i++)
{
a[i]=b[i];
}
a[i]=’’;
}

{  x=a;

#include<iostream.h>
#include”Vector.h”

}

void CString::getSubstring(int beginStr,int endStr)
{
int i,j=0;
char pstr[MAX_LENGTH];
if(beginStr<0||endStr>MAX_LENGTH||beginStr>endStr)
{
cout<<“error!”<<endl;
}
for(i=beginStr;i<endStr;i++,j++)
{
pstr[j]=cstr[i];
}
pstr[j]=’’;
cpystring(pstr);
}

头文件1

/*万年历*/
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
void main()
{
int year,month,startyear,today,day0,day1,k,j;
char a,b,c;
int M[12]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int M0[12]={ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

    int b;

class Man: virtual public Person
{
public:
Man(char *name,int age,char *sex);
Man();
virtual ~Man();

~C(){cout<<“destrucing C”<<endl;} 

cout<<“运算结束!”<<endl;

 

protected:
char sex[8];
};

float get_x()const{return x;} 

bool CircularQueue::isEmpty()
{
if (rear == front)
{
return true;
}
else
{
return false;
}
}

⑵ 源代码

/*2、定义一个类模板,然后生成其模板类并定义该类模板的派生类模板和派生类。*/
using namespace std;

    pt[2]=&tri;    

/*2、将第一题中的相关重载项改为用友元函数的方式重载。*/
class Vector
{
public:
Vector();
Vector(int x,int y);
friend void operator ++(Vector &v);
friend void operator ++(Vector &v,int);
friend Vector operator +(const Vector &v1,const Vector &v2);
void display();
private:
int x,y;
};

实验报告书

/* 7、写一函数,将一个字符串的元音字母复制到另一个字符串,然后输出。
*/
#include<iostream.h>
#include<string.h>
void scpy(char *,char *);
void main()
{
const int size=100;
char a[size]=”Hello world”;
char b[size]=”Net”;
cout<<“a= “<<a<<“b= “<<b<<endl;
scpy(a,b);
cout<<“a= “<<a<<endl;
}
void scpy(char *p,char *q)
{
while(*q!=’’)
{
if
(*q==’a’||*q==’A’||*q==’e’||*q==’E’||*q==’i’||*q==’I’||*q==’o’||*q==’O’||*q==’u’||*q==’U’)
*p++=*q;
q++;
}
}

{return Circle::area()*height;}

using namespace std;

const{return 0.0;}

template<typename T>List<T>::List(){
head=rear=new Node<T>;
}

 

void f()
{
//代码区1
try{
//代码区2
String s(“abcdefghijklmnop”, 10);
g(s);
}
catch(String::Range r)
{
cerr <<“->out of range: ” <<r.index <<endl;
//代码区3
}
catch(String::Size)
{
cerr <<“size illegal!n”;
}
cout <<“The program will be continued here.nn”;
//代码区4
}

   y=b;

int e = queue[front];
front = ++front % MAX_SIZE;
return e;
}
*********************************************************************

{ public:  

cout<<endl;
}

#include”ex_1_1(head).h”

continue;
}
else
{
n = atoi(s.c_str());

    int c;

/*2、通过Point类派生出Circle和Rectangle类,再通过Circle和Rectangle派生出“足球场图形”类Football,并实例化调用Football这个类,且用cout打印跟踪所有类的构造函数和析构函数的调用过程。(注:下面是这几个类的图形描述,且要求每个类都重载构造函数,且都不用默认构造函数)*/
#include<iostream.h>

{  public:  

if(NowSum != sum)
{
YesOrNo = false;

{  x=a;  y=b; }

void g(String& str){
int num=10;
for(int n=0; n<num; n++)
   cout <<str[n];
cout <<endl;
}

ostream &operator<<(ostream  &output,const Circle &c)

#include “i_Data.h”
#define NUM 2

void Cstring::display()
{
cout<<p<<endl;
}

 

template<typename T>Node<T>::Node(){
data=0;
next=NULL;
}

源文件3

main.cpp文件
*********************************************************************
#include “CircularQueue.h”
#include <iostream>

float Cylinder::volume()const

void output(){
fstream outfile;
int i;
outfile.open(“score.dat”,ios::in|ios::binary);
if(!outfile){
cout<<“score.dat can’t opened.n”;
abort();
}
for(i=0;i<NUM;i++){
outfile.read((char *) &data[i], sizeof(data[i]));
cout<<“第”<<i+1<<“位考生信息为:n”;
cout<<“准考证号:”<<data[i].ID<<endl;
cout<<“姓名:”<<data[i].name<<endl;
cout<<“英语成绩:”<<data[i].score<<endl;
cout<<endl;
}
outfile.close();
}
private:
struct i_Data data[NUM];
};

float point::get_x()const{return x;}

};

cyl cy(1,2,3,4); 

template<typename T>void List<T>::PrintList(){
rear = head->next;
while(rear!=NULL){
cout<<rear->data<<endl ;
rear = rear->next ;
}
}

{public:

goto END;
}

return 0;

combination(p,n,AllNum);

    b1.display1();

#include<iostream>
#include”Light.h”

void setradius(float); 

class Triangle:public Shape{
public:
Triangle(double length,double height){
this->length=length;
this->height=height;
}
virtual double show_area(){
return length*height/2;
}
virtual char* shapeName(){
return “Triangle: “;
}
protected:
double length,height;
};

float circle:: PrintArea()

发表评论

电子邮件地址不会被公开。 必填项已用*标注