复制
收藏
提问
简洁
函数题 6-5 cpp:纯字母明文串转换为纯大写字母的加密串并输出 上一题 下一题 题目描述 6-5 cpp:纯字母明文串转换为纯大写字母的加密串并输出 分数 5 全屏浏览 作者 xhh 单位 长春理工大学 [题目]编写一个程序,将一个包含大小写字母的纯字母明文串转换为纯大写字母的加密串输出。 加密规则为: 明文字母转换为其对应大写字母的后面第3个大写字母('X','Y','Z'转换为'A','B','C') 如 明文串为 "prZzbpP", 则 转换成大写加密串为"SUCCESS"输出。 [编程要求] 试建立一个类Strings,完成纯字母明文串转换为纯大写字母的加密串并输出。 (1)私有数据成员。 char a\[20\]; 存放明文串或加密串 (2)公有成员函数 Strings(char x\[\]);构造函数,初始化a数组 void process(): 将数组a中的明文串转换为大写加密串。 void show(): 将大写加密串输出 (3)在主函数中完成对该类的测试。定义一个Strings类的对象s,使用 "prZzbpP" 初始化数组a . 调用成员函数函数,将数组a中的明文串转换为大写加密串,最后输出大写加密串。 输出结果为: SUCCESS */ 函数接口定义: void Strings::process() 在这里解释接口参数。例如:其中 N 和 D 都是用户传入的参数。 N 的值不超过int的范围; D 是[0, 9]区间内的个位数。函数须返回 N 中 D 出现的次数。 裁判测试程序样例: #include<iostream> #include<fstream> #include<string.h> using namespace std; class Strings { char a[20]; public: Strings(char x[]) { strcpy(a, x); } void process(); void show(); }; void Strings::show() { cout << a << endl; } int main() { char *ss=(char*)"prZzbpP"; Strings s(ss); s.process(); s.show(); return 0; } /* 请在这里填写答案 */
3月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
根据题目要求,我们需要实现一个Strings
类,该类具有私有数据成员char a[20]
,用于存放明文串或加密串。同时,需要实现两个公有成员函数:Strings(char x[])
构造函数用于初始化a
数组,void process()
用于将数组a
中的明文串转换为大写加密串,void show()
用于输出大写加密串。
加密规则是将明文字母转换为其对应大写字母的后面第3个大写字母,对于'X'、'Y'和'Z',分别转换为'A'、'B'和'C'。
下面是Strings
类中process
函数的实现代码:
#include <iostream>
#include <cctype> // 包含字符类型处理函数
class Strings {
char a[20];
public:
Strings(char x[]) {
strcpy(a, x);
}
void process() {
for (int i = 0; i < strlen(a); i++) {
if (isalpha(a[i])) { // 检查是否为字母
char base = islower(a[i]) ? 'a' : 'A'; // 根据字母大小写确定基准点
a[i] = (a[i] - base + 3) % 26 + base; // 加3后对26取模,然后加上基准点
if (a[i] > 'Z') a[i] -= 26; // 处理'X'、'Y'和'Z'的情况
}
}
}
void show() {
cout << a << endl;
}
};
int main() {
char *ss = (char*)"prZzbpP";
Strings s(ss);
s.process();
s.show();
return 0;
}
在process
函数中,我们首先检查每个字符是否为字母,然后根据其大小写确定一个基准点('a'或'A')。接着,我们将字符转换为其对应大写字母的后面第3个字母,通过(a[i] - base + 3) % 26
实现。如果结果大于'Z',我们通过减去26来将其转换到正确的范围内。最后,我们使用show
函数输出转换后的大写加密串。156789
你觉得结果怎么样?