05.设计一个类Sample,实现两个复数的乘法运算。
解:
Sample类包括复数的实部和虚部,以及实现复数相乘的成员函数mult()和输出复数的成员函数disp()。
本题的程序如下:
#include<iostream.h>
class Sample
{
float a; // 实部
float b; // 虚部
public:
Sample(){}
Sample(float x,float y){a=x;b=y;}
void mult(Sample &s) // 对象引用作为参数
{
if(&s==this) // 不能自己相乘
cout<<"自己不能相乘"<<endl;
else
{
float x=a*s.a-b*s.b;
float y=a*s.b+b*s.a;
a=x;b=y;
}
}
void disp()
{
if(b>0)
cout<<a<<"+"<<b<<"i"<<endl;
else
cout<<a<<"-"<<-b<<"i"<<endl;
}
};
void main()
{
Sample s1(2,3),s2(3,4);
cout<<"复数s1:"; s1.disp();
cout<<"复数s2:"; s2.disp();
s1.mult(s2);
cout<<"相乘结果:"; s1.disp();
cout<<endl;
}
本程序执行结果如下:
复数s1:2+3i
复数s2:3+4i
相乘结果:-6+17i
------------------------------------------------------
06.有若干教师,每个教师只有姓名,一个教师可以指导多名研究生;每名研究生有姓名、研究方向和班号数据,编写一个程序,要求输出每个教师指导的所有研究生的姓名、研究方向和班号数据。
解:
先设计一个学生类student,然后设计一个教师类teacher。teacher类中添加一个student对象数组,存放该教师指导的所有研究生对象,top为当前研究生的指针。这样实现了两个类之间一对多的关系。
本题程序如下:
#include<iostream.h>
#include<string.h>
#define Max 10
class student
{
char name[10]; // 姓名
char search[20]; // 研究方向
char cname[10]; // 班号
public:
student(){}
student(char n[],char s[],char c[])
{
strcpy(name,n);
strcpy(search,s);
strcpy(cname,c);
}
char *getname(){return name;}