本文共 2039 字,大约阅读时间需要 6 分钟。
/*定义一个类,用于对10个字符串进行管理。要求:(1)在定义对象时,能够为字符串清空;(2)定义变换构造函数,能够为字符串赋以给定的字符串;(3)定义复制构造函数;(4)定义成员函数,能够为字符串输入数据;(5)定义成员函数,能够将字符串显示出来;(6)定义成员函数,用于找出每个字符串中的最小值(ASCII码最小的字符)及其个数,最小值由函数值返回,个数由参数带回;(7)定义成员函数,用于为字符串按从小到大顺序排序。(8)定义main函数,合理地调用上述每个函数。*/#include#include #include #define NUM 10using namespace std;class cString{private: string str[NUM];public: cString(); cString(string s[NUM]); cString(const cString &s); //~cString(); char* min_char(int num[]); void sort(); void input(); void disp();};char ch[NUM];cString::cString(){ for (int i = 0; i < NUM; i++) { str[i] = ""; }}cString::cString(string s[NUM]){ for (int i = 0; i < NUM; i++) { str[i] = s[i]; }}cString::cString(const cString& s){ for (int i = 0; i < 10; i++) { str[i] = s.str[i]; }}char* cString::min_char(int num[]){ for (int i = 0; i < NUM; i++) { ch[i] = str[i][0]; num[i] = 0; for (int j = 0; str[i][j] != '\0'; j++){ if (str[i][j] < ch[i]){ ch[i] = str[i][j]; num[i] = 0; } if (str[i][j] == ch[i]) num[i]++; } } return ch;}void cString::sort(){ cout << "字符串排序" << endl; int i = 9; //初始时,最后位置保持不变 while (i> 0) { int pos = 0; //每趟开始时,无记录交换 for (int j = 0; j < i; j++) { if (str[j]>str[j + 1]){ pos = j; //记录交换的位置 string tmp = str[j]; str[j] = str[j + 1]; str[j + 1] = tmp; } } i = pos; //为下一趟排序作准备 } disp();}void cString::input(){ cout << "请输入" << NUM << "个字符串:"<< endl; for (int i = 0; i < NUM; i++) { cin >> str[i]; }}void cString::disp(){ cout << "字符串组如下:" << endl; for (int i = 0; i < NUM; i++) { cout << str[i] << endl; }}int main(){ string s[NUM] = { "a11","s22","d33","f44","g55","h66","j77","k88","l99","a00" }; cString str1;//缺省构造并清零 str1.input(); cout << "str1 "; str1.disp(); int num[NUM] = { 0 }; char* min_ch = str1.min_char(num); cout << "最小值及对应个数依次为: " << endl; for (int i = 0; i < NUM; i++) { cout << min_ch[i] << '\t' << num[i] << endl; } cString str2(s); cout << "str2 "; str2.disp(); cString str3 = str2;//变换构造函数 cout << "str3 "; str3.disp(); str3.sort(); system("pause"); return 0;}
转载地址:http://mqdxi.baihongyu.com/