蓝桥杯还愿

d92689f104c64450bb7493f8491439ed.png

 得了个一等奖,原本还挺高兴,后面发现身边参加的全都得奖了,突然觉得也没多大意思,准备准备参加国赛了。虽然他们也得奖了,但我这个奖是最高的,也算对得起寒假的努力了💪

好的,我来为您编写一个C++程序,实现您所描述的功能。以下是代码实现: ```cpp #include <iostream> #include <string> #include <algorithm> using namespace std; // 自定义函数,将字符串中的字符右移4位 string shiftRight(string str) { // 将字符串转换为字符数组 char arr[str.length()]; strcpy(arr, str.c_str()); // 右移4位 for (int i = 0; i < str.length(); i++) { arr[i] = arr[i] < ' ' ? arr[i] + 60 : arr[i] - 4; } // 将字符数组转换回字符串 string result(arr); return result; } // 自定义函数,将字符串还原 string shiftLeft(string str) { // 将字符串转换为字符数组 char arr[str.length()]; strcpy(arr, str.c_str()); // 左移4位 for (int i = 0; i < str.length(); i++) { arr[i] = arr[i] > '~' ? arr[i] - 60 : arr[i] + 4; } // 将字符数组转换回字符串 string result(arr); return result; } int main() { string input; // 输入字符串 cout << "请输入一个由数字和字母构成的字符串: "; cin >> input; // 右移4位 string shifted = shiftRight(input); cout << "右移4位后的字符串: " << shifted << endl; // 还原字符串 string restored = shiftLeft(shifted); cout << "还原后的字符串: " << restored << endl; return 0; } ``` 这个程序的工作原理如下: 1. 定义了两个自定义函数 `shiftRight` 和 `shiftLeft`,分别用于右移和左移字符串中的字符。 2. 在 `shiftRight` 函数中,我们首先将字符串转换为字符数组,然后对每个字符执行右移4位的操作。这里使用了ASCII码的特性,对于非可打印字符也进行了处理。 3. `shiftLeft` 函数与 `shiftRight` 类似,但执行的是相反的操作,即将字符左移4位。 4. 在 `main` 函数中,我们首先接收用户输入的字符串。 5. 然后调用 `shiftRight` 函数对字符串进行右移,并输出结果。 6. 接着调用 `shiftLeft` 函数对右移后的字符串进行还原,并输出最终结果。 这个程序可以处理包含数字和字母的字符串,并且可以正确地进行右移和还原操作。请注意,这个实现假设输入的字符串只包含ASCII字符。如果需要处理Unicode字符,可能需要使用更复杂的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值