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;} char *getsearch(){return search;} char *getcname(){return cname;} }; class teacher { int top; char name[10]; student stud[Max]; // 对象数组 public: teacher(char t[]){top=0;strcpy(name,t);} void add(student &s) // 对象引用作为参数 { stud[top]=s; top++; } void disp() { cout<<"指导教师:"<<name<<endl<<" 研究生:"<<endl; for(int i=0;i<top;i++) { cout<<""<<stud[i].getname()<<"("<<"方向:"<<stud[i].getsearch()<<"," <<stud[i].getcname()<<"班)"<<endl; } } }; void main() { teacher t[]={teacher("李明"),teacher("王华")}; student s1("孙强","数据库","99010"); student s2("陈文","软件工程","99010"); student s3("章锐","计算机网络","00010"); t[0].add(s1); t[0].add(s2); t[1].add(s3); for(int i=0;i<2;i++) t[i].disp(); } 本程序的执行结果如下: 指导教师:李明 研究生: 孙强(方向:数据库,99010班) 陈文(方向:软件工程,99010班) 指导教师:王华 研究生: 章锐(方向:计算机网络,00010班)
 
2/2 首页 上一页 1 2 |