建立一个类NUM,并统计特定序列中相同的字符的个数。 具体要求如下: (1)私有数据成员 char data[25]:随机生成25个字符。 int num[128]:储存每个字符出现的个数。 (2)公有数据成员 NUM(int data):构造函数,同时初始化数组data。 void process( ):统计数组data中每个字符出现的个数,并保存到数组num中。 void print( ):输出每个出现过的字符及其出现的个数,每行输出5个,没有出现过的字符不显示。 (3)在主程序中定义一个对象,对该类进行测试。
时间: 2024-02-22 13:56:56 浏览: 66
好的,以下是符合要求的 NUM 类的实现:
```python
import random
class NUM:
def __init__(self):
self.__data = [chr(random.randint(97, 122)) for i in range(25)]
self.__num = [0] * 128
def process(self):
for c in self.__data:
self.__num[ord(c)] += 1
def print(self):
count = 0
for i in range(128):
if self.__num[i] != 0:
print(f"{chr(i)}: {self.__num[i]}", end='\t')
count += 1
if count % 5 == 0:
print()
print()
```
在这个类中,我们定义了一个私有数据成员 `__data` 和 `__num`,分别用于存储随机生成的字符序列和每个字符出现的个数。我们使用 `random` 模块中的 `randint` 函数来生成随机字符。
构造函数 `__init__` 用于初始化 `__data` 和 `__num`。我们使用 `[0] * 128` 的方式来创建一个长度为 128 的数组,并将其中每个元素初始化为 0。
`process` 方法用于统计 `__data` 中每个字符出现的个数,并保存到 `__num` 数组中。我们使用 `ord` 函数将字符转换为其对应的 ASCII 码,然后在 `__num` 数组中对应位置加 1。
`print` 方法用于输出每个出现过的字符及其出现的个数,每行输出 5 个,没有出现过的字符不显示。我们使用一个计数器 `count` 来控制每行输出的字符数量。如果 `count` 的值可以被 5 整除,则输出一个换行符。
在主程序中,我们可以创建一个 NUM 对象,并分别调用 `process` 和 `print` 方法来测试该类:
```python
num = NUM()
num.process()
num.print()
```
输出结果可能如下所示:
```
a: 1 d: 2 e: 3 h: 1 i: 2
j: 1 k: 1 m: 1 n: 1 o: 2
p: 1 s: 1 t: 1 u: 1 y: 1
```
阅读全文