6、h>
int amount=123;
void main()
{ int amount=456;
cout<<::amount<<',';
cout<
using namespace std;
7、
int max(int a,int b,int c) //求3个整数中的最大者
{if (b>a) a=b;
if (c>a) a=c;
return a;
}
int max(int a, int b) //求两个整数中的最大者
{if (a>b) return a;
else return b;
}
int main( )
{int a=7,b=-4,c=9;
cout<8、x(a,b)<
using namespace std;
int main()
{int max(int a,int b,int c=0);
int a,b,c;
cin>>a>>b>>c;
cout<<"max(a,b,c)="<9、int b,int c)
{if(b>a) a=b;
if(c>a) a=c;
return a;
}
3、有5个字符串,要求对它们按由小到大顺序排列,用string方法。
#include
#include
using namespace std;
int main()
{ int i;
string str[5]={"BASIC","C","FORTRAN","C++","PASCAL"};
void sort(string []);
sort(str);
cout<<"the sorted strin
10、gs :"<s[i+1])
{t=s[i];s[i]=s[i+1];s[i+1]=t;}
}
4、定义一个求两个数中较小值的函数模板min( ),要求在main( )函数中进行调用求两个
浮点型数据和两个
11、整型数据中较小的数。
#include "iostream"
#include "string"
using namespace std;
template
T min(T a,T b)
{
return a12、 and "<
using namespace std;
class Date
{public:
Date(int,int,int);
Date(int,int);
Date(int);
13、
Date( );
void display( );
private:
int month;
int day;
int year;
};
Date∷Date(int m,int d,int y):month(m),day(d),year(y){ }
Date∷Date(int m,int d):month(m),day(d) {year=2005;}
Date∷Date(int m):month(m)
{ day=1;
year=2005;
}
Date∷Date( )
{ month=1;
day=1;
year=2005;
}
void Date∷d
14、isplay( )
{cout<15、成员变量:学生姓名、学号、性别、年龄。还有以下两个成员变量:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数,声明一个学生对象,然后调用成员函数在屏幕输出学生信息。
#include "iostream"
#include "string"
using namespace std;
class student
{
public:
student();
void display();
private:
string sName,sNum;
cha
16、r chSex;
int iAge;
};
student::student(string na,string num,char s,int a):sName(na),sNum(num),
chSex(s),iAge(a){}
void student::display()
{
cout << "----------THE INFORMATION OF STUDENT----------\n";
cout << "name: "<< sName << endl << "number: "<< sN
17、um<18、
int salary;
char tel[8];
public:
Person(char *xname,int xage,int xsalary,char *xtel);
void disp();
};
解:
#include
#include
Person::person(char *Xname,int Xage,int Xsalary,char *Xtel)
{ strcpy ( name, xname);
age=xage;
salary=xsalary;
strcpy
19、 (tel,xtel);}
void Person::disp()
{ cout<<“ 姓名:”<20、握友元的概念和使用。
4、了解类模板的使用方法。
二、实验要求
1、分析并比较下列程序运行的结果。
程序一:
#include
#include
class smallone
{public:
smallone(int sma)
{ cout<<"sm constr:"<22、"in function fn with n="<
using namespace std;
clas
23、s Student
{public:
Student(int n,float s):num(n),score(s){}
int num;
float score;
};
void main()
{Student stud[5]={
Student(101,78.5),Student(102,85.5),Student(103,98.5),
Student(104,100.0),Student(105,95.5)};
void max(Student* );
Student *p=&stud[0];
max(p);
reyurn 0
24、
}
void max(Student *arr)
{float max_score=arr[0].score;
int k=0;
for(int i=1;i<5;i++)
if(arr[i].score>max_score) {max_score=arr[i].score;k=i;}
cout<
using namespace std;
template25、lass numtype>
class Compare
{public:
Compare(numtype a,numtype b)
{x=a;y=b;}
numtype max()
{return (x>y)?x:y;}
numtype min()
{return (x cmp1(3,7);
cout<26、numbers."< cmp2(45.78,93.6);
cout< cmp3('a','A');
27、cout<28、示例,分别编写程序,求两个复数之和。
#include
using namespace std;
class Complex //定义Complex类
{public:
Complex(float x=0,float y=0){real=x;imag=y;} //构造函数
Complex complex_add(Complex &c2); //声明复数相加函数
void display() { cout<29、<<'+'<30、 complex1(3.34f, 4.8f), complex2(12.8f, 5.2f);
Complex complex; //定义3个复数对象
complex=plex_add(complex2); // 进行两个复数的加运算
complex.display( );
return 0;
}
//16.14+10i
//普通函数(非成员、非友元)
#include
using namespace std;
class Complex
{public:
31、 Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
double get_real();
double get_imag();
void display();
private:
double real;
double imag;
};
double Complex::get_real()
{return real;}
double Complex::get_imag()
{return imag;}
void Complex
32、display()
{cout<<"("<33、函数
#include
using namespace std;
class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r,double i){real=r;imag=i;}
Complex operator + (Complex &c2);
void display();
private:
double real;
double imag;
};
Complex Complex::operator + (Complex &c2)
34、
{Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;}
void Complex::display()
{cout<<"("<35、}
//将运算符重载为友元函数
#include
using namespace std;
class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r){real=r;imag=0;}
Complex(double r,double i){real=r;imag=i;}
friend Complex operator+ (Complex &c1,Complex &c2);
void display();
private:
double
36、real;
double imag;
};
Complex operator+ (Complex &c1,Complex &c2)
{return Complex(c1.real+c2.real, c1.imag+c2.imag);}
void Complex::display()
{cout<<"("<37、 c2.display();
cout<<"c1+c2="; c3.display();
return 0;
}
实验六 继承和派生
一、实验目的
1、了解继承在面向对象程序设计中的重要作用。
2、进一步理解继承与派生的概念。
3、掌握通过继承派生出一个新的类的方法。
4、了解虚基类的作用和用法。
二、实验要求
1、运行程序,分析构造函数与析构函数的调用顺序。
程序一:
#include
class A
{ public:
A(){cout<<"A:Constructor"<38、Destructor" <
class A
{ int a;
public :
A(int aa=0)
39、{ a=aa; }
~A() { cout<<”Destructor A!”<40、用顺序:构造x.A a=5 构造x.B a=5 b=0 构造y.A // 不匹配,不调用A() 构造y.B a=6 b=7 析构y.B B!7 析构y.A A!6 析构x.B B!0 析构x.A A!5
2、分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cader类。要求:
①在两个基类种豆包含姓名、年龄、性别、地址、电话等数据成员。
②在Teacher类中还包含数据成员title(职称),在Cader 类中还包含数据成员post(职务)。在Teacher_Cader类中还包含数据成员wag
41、es(工资)。
③在对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。
④在类体中声明成员函数,在类外定义数据成员。
⑤在派生类Teacher_Cader的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再调用cout语句输出职务和工资。
#include
#include
using namespace std;
class Teacher
{public:
Teacher(string nam,int a,char s,
42、string tit,string ad,string t);
void display();
protected:
string name;
int age;
char sex;
string title;
string addr;
string tel;
};
Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t):
name(nam),age(a),sex(s),title(tit),addr(ad),tel(t
43、){ }
void Teacher::display()
{cout<<"name:"<44、tring p,string ad,string t);
void display();
protected:
string name;
int age;
char sex;
string post;
string addr;
string tel;
};
Cadre::Cadre(string nam,int a,char s,string p,string ad,string t):
name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}
void Cadre
45、display()
{cout<<"name:"<46、am,int a,char s,string tit,string p,string ad,string t,float w);
void show( );
private:
float wage;
};
Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w):
Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) {}
void Teacher_C
47、adre::show( )
{Teacher::display();
cout<<"post:"<48、实验目的
1、了解多态性的概念。
2、了解虚函数的作用及其使用方法。
3、了解静态关联和动态关联的概念和用法。
4、了解纯虚函数和抽象类的概念和用法。
二、实验要求
1、分析程序运行结果,掌握虚函数的使用。
程序一:
#include
class ONE
{ public:
virtual void f(){cout<<"l"<49、O
{ public:
virtual void f(){TWO::f(); cout<<"3";}
};
void main()
{ ONE aa, *p;
TWO bb;
THREE cc;
p = &cc;
p->f();
}
//2
2
1
3
程序二:
#include
class Base
{ public:
virtual void fn() { cout <<"In Base Class\n";}
};
class SubClass :public Base
{ public:
virtual void fn(){ cout <<"In Sub Class\n"; }
};
void main()
{ Base bc,*p;
SubClass sc;
p=&bc; p->fn();
p=≻ p->fn();
}
//In Base Class
In Sub Class
2、实现一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。实现类B从A继承,覆盖geta(),使其返回a的2倍。主函数中声明类B对象,调用