Skip to content

1066: 小恶魔的字符串

题目

题目描述

助教是个小恶魔,因为她不知道要出什么机考题了。然后她发现,大家终于可以面向对象编程了。于是她想让大家写个mystring~ 你需要完成以下内容:(注意这里的i都为0-base) - 构造一个长度为len以某个字符初始化的mystring。 - 从string中构造一个mystring。(请注意,mystring中char数组长度应和传入的string长度保持一致。可调用c.length()获得传入字符串的长度)。 - 用下标输出mystring变量中的第x位(若x超过字符串长度输出'0'). - 重载运算符<, 比较两个mystring类型字符串的大小.(比较方式:先比较每一位上字符,再比较长度。例:aaaa<b) - 写一个ADD函数,将一个mystring类型字符串接到另一个之后。 - 写一个out函数(你也可以重载输出运算符)输出mystring类型字符串。(使用重载运算符即是采用主程序注释中的输出方式,主程序仅允许此种情况的修改。) - 写一个get_len函数,输出mystring类型中储存的字符串长度。 - 为防止内存泄漏,写一个析构函数。同时也请注意其他位置可能的内存泄漏。 - 不得修改超出要求允许的部分。 - 如未按要求完成,对应测试点不得分。

输入格式

第一行一个$id$表示操作号。 其余输入具体见给定代码的主程序部分。

输出格式

输出方式详见主程序。 你的out函数中不需要进行换行。

样例输入

text 0 aabbcc abcdef 3 0 3 5

样例输出

text a d f 6 6 1 aabbccabcdef

数据范围

保证所有字符串长度$1 \leq len \leq 200$.

测试点编号 | id|
-|-| 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | 5 | 0 |

sample.cpp如下

```C++

include

include

include

include

include

using namespace std;

class mystring { private: char *ch = nullptr; int len = 0;

public:

mystring()
{
    // TODO
}
mystring(int _len, int c)
{
    // TODO
}
mystring(string &c)
{
    // TODO
}
~mystring()
{
    // TODO
}

// TODO

};

string str_in1, str_in2; int n, id; int main() { cin >> id; if (id == 1) { mystring str1(100,'a'); str1.out(); puts(""); // cout << str1 << endl; } else if (id == 2) { cin >> str_in1; mystring str2 = str_in1; cin >> n; for (int i = 0, x; i < n; ++ i) { cin >> x; cout << str2[x] << endl; } } else if (id == 3) { cin >> str_in1 >> str_in2; mystring str2 = str_in1; mystring str3 = str_in2; cout << (int)(str2 < str3) << endl; } else if (id == 4) { cin >> str_in1 >> str_in2; mystring str2 = str_in1; mystring str3 = str_in2; str2.ADD(str3); str2.out(); puts(""); // cout << str2 << endl; } else { cin >> str_in1 >> str_in2; mystring str2 = str_in1; mystring str3 = str_in2; cin >> n; for (int i = 0, x; i < n; ++ i) { cin >> x; cout << str3[x] << endl; } cout << str2.get_len() << " " << str3.get_len() << endl; cout << (int)(str2 < str3) << endl; str2.ADD(str3); str2.out(); puts(""); // cout << str2 << endl; cout << str2.get_len() << endl; } return 0; } ```

Oops! 本题目还没有解答!

助教老师们编题的速度,已经超过了解题的速度!

OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。

如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!