面B实验程序完整版.docx
- 文档编号:28963526
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:19
- 大小:102.13KB
面B实验程序完整版.docx
《面B实验程序完整版.docx》由会员分享,可在线阅读,更多相关《面B实验程序完整版.docx(19页珍藏版)》请在冰豆网上搜索。
面B实验程序完整版
第一次实验
四.实验源程序及实验结果
#include
#include
usingnamespacestd;
classCTeacher;
classCStudent//学生类
{public:
CStudent(int,string,double);
friendvoidDisplay(CStudent&);//定义友元函数
friendCTeacher;//定义友元类
private:
intID;//学号
stringName;//姓名
doubleScore;//成绩
};
CStudent:
:
CStudent(inta1,stringa2,doublea3):
ID(a1),Name(a2),Score(a3){}//构造函数初始化数据成员
voidDisplay(CStudent&a)//输出姓名、成绩、等级
{intd;
d=a.Score/10;
cout< switch(d) { case10: case9: cout<<"优秀"< case8: cout<<"良好"< case7: cout<<"中等"< case6: cout<<"及格"< default: cout<<"不及格"< } } classCTeacher//定义教师类 { public: voidModify(CStudent&); voidDisplays(CStudent&); }; voidCTeacher: : Modify(CStudent&b)//修改成绩 { doublechengji; cout<<"输入分数: "; cin>>chengji; b.Score=chengji; cout<<"修改成功! "< } voidCTeacher: : Displays(CStudent&c)//输出需要查找的学生信息 { Display(c); } intmain() {cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"\t"<<"成绩"<<"\t"<<"等级"< cout<<"-------------------------------------"< CStudentt1(1,"LeBronJames",75);//定义一个学生类的对象 CStudentt2(2,"MichealJordan",98); CStudentt3(3,"ChrisBosh",55); CStudentt4(4,"StephenCurry",80); CTeacherm;//定义一个教师类的对象 Display(t1);//输出学生信息 Display(t2); Display(t3); Display(t4); intxuhao; cout<<"请输入要修改分数的学生的序号: ";//修改成绩 cin>>xuhao; switch(xuhao) { case1: m.Modify(t1);break; case2: m.Modify(t2);break; case3: m.Modify(t3);break; case4: m.Modify(t4);break; } intv; cout<<"请输入要查找成绩的学生的序号: ";//查找成绩 cin>>v; switch(v) {case1: m.Displays(t1);break; case2: m.Displays(t2);break; case3: m.Displays(t3);break; case4: m.Displays(t4);break; } return0; } 实验结果 第三次实验运算符重载对字符串进行比较和运算 设计思路: 设计一个字符串的类,把所要进行的各种运算和操作设计成类的成员函数,另外设计一个字符串类型的数据,作为数据成员,然后,详细写出每个成员函数的实现方法,再在主函数中进行调用,实现字符串之间的运算。 源程序及实验结果 #include //usingnamespacestd; #include classString//字符串类 { public: String(char*b);//构造函数的声明 String(); friendintoperator>(String&s1,String&s2);//将运算符重载函数声明为友元函数 friendintoperator<(String&s1,String&s2); friendintoperator==(String&s1,String&s2); voiddisplay()//用于输出类的数据成员 { cout< } private: //数据成员一个字符串 char*a; }; String: : String(char*b): a(b){}//带参数的构造函数 String: : String()//不带参数的构造函数 {a="ABCD";} intoperator>(String&s1,String&s2)//对‘>’进行运算符重载 {returnstrcmp(s1.a,s2.a);} intoperator<(String&s1,String&s2)//对‘<’进行运算符重载 {returnstrcmp(s1.a,s2.a);} intoperator==(String&s1,String&s2)//对‘==’进行运算符重载 {returnstrcmp(s1.a,s2.a);} voidmain()//主函数 { Stringt1("aa"),t2("a");//定义两个字符串类的对象并赋初值 cout<<"要进行比较的两个字符串为: "< cout<<"t1: "; t1.display();//输出显示要进行比较的两个字符串 cout<<"t2: "; t2.display(); cout<<"式子: t1>t2"<<"\t"; cout<<((t1>t2)>0? "TRUE": "FALSE")< cout<<"式子: t1 cout<<((t1 "TRUE": "FALSE")< cout<<"式子: t1==t2"<<"\t"; cout<<((t1==t2)==0? "TRUE": "FALSE")< cout<<"字符串比较运算结束! "< } 运行结果: 派生类中构造函数与析构函数 #include usingnamespacestd; classA//基类A { public: A(){ a=0,b=0; flag=0; cout<<"A0"< } A(inti){ a=i,b=0; flag=1; cout<<"A1"< } A(inti,intj){ a=i,b=j; flag=2; cout<<"A2"< } ~A(){cout<<"~A"< voiddisplay(){cout<<"a="<<"b="< private: inta,b; intflag; }; classB: publicA { public: B(){ c=0; flag=0; cout<<"B0"< } B(inti): A(i){ c=0; flag=1; cout<<"B1"< } B(inti,intj): A(i,j){ c=0; flag=2; cout<<"B2"< } B(inti,intj,intk): A(i,j){ c=k; flag=3; cout<<"B3"< } ~B(){cout<<"~B"< voiddisplay(){ A: : display();cout<<"c="< private: intc; intflag; }; intmain() { Bb1; Bb2 (1); Bb3(1,3); Bb4(1,3,5); b1.display(); b2.display(); b3.display(); b4.display(); return0; } .关于虚函数的一些应用 #include usingnamespacestd; classA{//基类 public: A()//不带参数的构造函数 {a=0;} virtualvoiddisplay()//定义一个虚函数 {cout<<"A的虚函数!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 程序 完整版
