实现几个字符串的字典序排序

本文介绍了一个使用C++实现的简单用户数据管理系统。该系统利用类`person`存储用户姓名和电话号码,并通过类`compute`对用户数据进行管理,包括输入、按姓名排序及输出用户信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写程序对用户数据进行简单的管理,要求按姓名的字典序对用户信息进行排序。试定义表示用户信息的类person和处理用户信息的类compute实现上述功能。具体要求如下:
(1)定义类person,其成员如下:
(a)私有成员。
char name[10], num[10]:分别保存用户的姓名和电话号码。
(2)定义类compute,类compute必须声明为类person的友元类,其成员如下:
(a)私有成员。
        person pn[3]:表示3个用户。
(b)公有成员函数。
void setdata():通过键盘输入3个用户的数据。
void sort():将数组pn表示的用户信息按姓名的字典序进行排序。
void print():按照指定格式输出用户信息。
在主函数中定义一个compute对象,再通过键盘输入每个用户的基本信息,调用相关成员函数完成对类compute和person进行测试。
输入/输出示例(下划线部分为键盘输入):
输入姓名和电话号码:
Jeorge 32121212
Mike 34545454
Adam 34676767
排序后的用户信息为:
姓名 电话号码
Adam 34676767
Jeorge 23121212
Mike 34545454

完整的代码如下:

        #include "iostream"   

  1. #include "algorithm"   
  2. using namespace std;  
  3.   
  4. class person  
  5. {  
  6. private:  
  7.     char name[10];  
  8.     char num[10];  
  9.     friend class compute;   //类compute必须声明为类person的友元类   
  10. public:  
  11.     bool friend cmp(const person &a,const person &b); //友元函数从语法上看,它与普通函数一样,友元函数的特点是能够访问类中的私有成员的非成员函数。   
  12. };  
  13. class compute  
  14. {  
  15. private:  
  16.     person pn[3];     //表示3个用户   
  17. public:  
  18.     void setdata();   //通过键盘输入3个用户的数据   
  19.     void sort_name(); //将数组pn表示的用户信息按姓名的字典序进行排序   
  20.     void print();     //按照指定格式输出用户信息   
  21. };  
  22. void compute::setdata()  
  23. {  
  24.     for(int i=0;i<3;i++)  
  25.         cin>>pn[i].name>>pn[i].num;  
  26. }  
  27. bool cmp(const person &a,const person &b)  
  28. {  
  29.     return strcmp(a.name,b.name)<0;  
  30. }  
  31. void compute::sort_name()  
  32. {  
  33.     sort(pn,pn+3,cmp);  
  34. }  
  35. void compute::print()  
  36. {  
  37.     for(int i=0;i<3;i++)  
  38.         cout<<pn[i].name<<"  "<<pn[i].num<<endl;  
  39. }  
  40. int main(void)  
  41. {  
  42.     compute com;  
  43.     cout<<"请输入用户的数据:"<<endl;  
  44.     com.setdata();  
  45.     com.sort_name();  
  46.     cout<<"将用户信息按姓名的字典序进行排序:"<<endl;  
  47.     com.print();  
  48.     system("pause");  
  49.     return 0;  
  50. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值