课程大作业C++.docx
- 文档编号:23615614
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:36
- 大小:24.03KB
课程大作业C++.docx
《课程大作业C++.docx》由会员分享,可在线阅读,更多相关《课程大作业C++.docx(36页珍藏版)》请在冰豆网上搜索。
课程大作业C++
C++课程大作业
总体要求:
1、大作业共4大题,每题25分。
2、所有结果程序以手写方式提交。
第一题
编写函数实现3个字符串连接的功能,并将生成的新字符串的首地址作为函数返回值,编写主函数main(),从键盘输入不同字符串对函数进行测试。
(要求:
新生成的字符串所占据的内存空间采用堆分配方式。
)
#include
#include
char*linkstring(char*a,char*b,char*c)
{
char*p;
p=newchar[strlen(a)+strlen(b)+strlen(c)];
for(inti=0;i { p[i]=a[i]; } for(intk=0;k { p[strlen(a)+k]=b[k]; } for(intm=0;m { p[strlen(a)+strlen(b)+m]=c[m]; } p[strlen(a)+strlen(b)+strlen(c)]='\0'; returnp; } intmain(){ char*a=newchar[3]; char*b=newchar[3]; char*c=newchar[3]; cout<<"字符串a"< cin>>a; cout<<"字符串b"< cin>>b; cout<<"字符串c"< cin>>c; cout< return0; } 第二题 定义一个Client类。 要求: (1)数据成员有姓名、年龄、客户类别,包含1,2,3三种类型); (2)包含一个带参数的构造函数用来初始化每个数据成员以及一个无参数的构造函数将所有成员变量都初始化为默认值;(3)包含用于设置姓名和得到姓名的成员函数;(4)包含用于设置和得到客户类别的成员函数;(5)设计一个普通函数display(Clientc),通过调用Client类相应的成员函数将客户信息显示出来。 (6)包含用于比较两个Client类对象c1和c2的成员变量“姓名”的大小(字母表顺序)的成员函数(要求: 该函数为静态成员函数或友元函数);(7)编写一个函数sort(Client*pc,intn),该函数是将包含n个Client类对象的数组,按照姓名的升序排序。 (8)增加一个Manager类,将其设置为Client类的友元类,每个Manager对象可以管理一定数量的client对象,。 (9)编写主函数main(),从键盘输入不确定个数的客户信息,测试上述函数的结果。 #include #include enumtype{one=1,two=2,three=3}; classClient { friendclassManager; public: Client(); Client(char*newname,intnewage,typenewtype); ~Client(); voidsetname(char*newname); char*getname(); voidsettype(typenewtype); typegettype(); intgetage(); staticchar*compare(Clientc1,Clientc2); private: char*name; intage; typecategory; }; Client: : Client() { name="ming"; age=20; category=one; } Client: : Client(char*newname,intnewage,typenewtype){ name=newname; age=newage; category=newtype; } Client: : ~Client() { } voidClient: : setname(char*newname) { name=newname; } char*Client: : getname() { returnname; } voidClient: : settype(typenewtype) { category=newtype; } typeClient: : gettype() { returncategory; } intClient: : getage() { returnage; } char*Client: : compare(Clientc1,Clientc2) { intnum,flag=0; if(strlen(c1.name)>strlen(c2.name)) { num=strlen(c2.name); } else { num=strlen(c1.name); } for(inti=0;i { if(c1.name[i] { flag=1; returnc2.name; //cout< break; } elseif(c1.name[i]>c2.name[i]) { flag=1; returnc1.name; //cout< break; } elseif(c1.name[i]==c2.name[i]){ continue; } } if(flag==0){ if(strlen(c2.name)>strlen(c1.name)){ returnc2.name; //cout< } else { returnc1.name; //cout< } } return0; } voiddisplay(Clientc){ cout<<"客户姓名是: "< " < "< } //排序函数 Clientsort(Client*pc,intn){ for(inti=0;i { for(intk=i;k { if(Client: : compare(pc[i],pc[k])==pc[i].getname()){ Clienttemp=pc[i]; pc[i]=pc[k]; pc[k]=temp; } } } return*pc; } classManager { public: Manager(); voidsetclname(Client&a,char*newname); ~Manager(); }; Manager: : Manager() { } voidManager: : setclname(Client&a,char*newname){ a.name=newname; } Manager: : ~Manager() { } intmain(){ cout<<"请输入有几个成员"< inta=0; cin>>a; Client*pc=newClient[a]; for(inti=0;i { cout<<"请输入成员"< char*name=newchar[20]; cin>>name; cout<<"请输入成员"< intage; cin>>age; cout<<"请输入成员"< intcate; cin>>cate; if(cate==1) { Clientname(name,age,one); pc[i]=name; } elseif(cate==2) { Clientname(name,age,two); pc[i]=name; } elseif(cate==3) { Clientname(name,age,three); pc[i]=name; } else { cout<<"输入错误"< break; } } //输出所有成员 cout<<"成员列表"<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程 作业 C+