|
05.設(shè)計(jì)一個(gè)類(lèi)Sample,實(shí)現(xiàn)兩個(gè)復(fù)數(shù)的乘法運(yùn)算。 解: Sample類(lèi)包括復(fù)數(shù)的實(shí)部和虛部,以及實(shí)現(xiàn)復(fù)數(shù)相乘的成員函數(shù)mult()和輸出復(fù)數(shù)的成員函數(shù)disp()。 本題的程序如下: #include<iostream.h> class Sample { float a; // 實(shí)部 float b; // 虛部 public: Sample(){} Sample(float x,float y){a=x;b=y;} void mult(Sample &s) // 對(duì)象引用作為參數(shù) { 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<<"復(fù)數(shù)s1:"; s1.disp(); cout<<"復(fù)數(shù)s2:"; s2.disp(); s1.mult(s2); cout<<"相乘結(jié)果:"; s1.disp(); cout<<endl; } 本程序執(zhí)行結(jié)果如下: 復(fù)數(shù)s1:2+3i 復(fù)數(shù)s2:3+4i 相乘結(jié)果:-6+17i ------------------------------------------------------ 06.有若干教師,每個(gè)教師只有姓名,一個(gè)教師可以指導(dǎo)多名研究生;每名研究生有姓名、研究方向和班號(hào)數(shù)據(jù),編寫(xiě)一個(gè)程序,要求輸出每個(gè)教師指導(dǎo)的所有研究生的姓名、研究方向和班號(hào)數(shù)據(jù)。 解: 先設(shè)計(jì)一個(gè)學(xué)生類(lèi)student,然后設(shè)計(jì)一個(gè)教師類(lèi)teacher。teacher類(lèi)中添加一個(gè)student對(duì)象數(shù)組,存放該教師指導(dǎo)的所有研究生對(duì)象,top為當(dāng)前研究生的指針。這樣實(shí)現(xiàn)了兩個(gè)類(lèi)之間一對(duì)多的關(guān)系。 本題程序如下: #include<iostream.h> #include<string.h> #define Max 10 class student { char name[10]; // 姓名 char search[20]; // 研究方向 char cname[10]; // 班號(hào) 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]; // 對(duì)象數(shù)組 public: teacher(char t[]){top=0;strcpy(name,t);} void add(student &s) // 對(duì)象引用作為參數(shù) { stud[top]=s; top++; } void disp() { cout<<"指導(dǎo)教師:"<<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("孫強(qiáng)","數(shù)據(jù)庫(kù)","99010"); student s2("陳文","軟件工程","99010"); student s3("章銳","計(jì)算機(jī)網(wǎng)絡(luò)","00010"); t[0].add(s1); t[0].add(s2); t[1].add(s3); for(int i=0;i<2;i++) t[i].disp(); } 本程序的執(zhí)行結(jié)果如下: 指導(dǎo)教師:李明 研究生: 孫強(qiáng)(方向:數(shù)據(jù)庫(kù),99010班) 陳文(方向:軟件工程,99010班) 指導(dǎo)教師:王華 研究生: 章銳(方向:計(jì)算機(jī)網(wǎng)絡(luò),00010班) |
|
|