(C++)如何实现将任意单词的字母反转,在将每个字符的ascii码往前减30位,
如:输入abc 得到 cba 得到 EDC
#include <iostream>
using namespace std;
int main()
{
string s = "abc";
const char *t = s.c_str();
char * rev = new char[s.length() + 1];
for (int i = 0; i < s.length(); i++)
rev[i] = (char)(*(t + s.length() - i - 1) - 30);
rev[s.length()] = '\0';
string result = rev;
cout << result;
return 0;
}
用char字符串的话,只需要把str.length() 改为strlen(str),头文件string.h
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
cin >> str;
for (int i = 0; i < str.length(); i++)
str[i] -= 30;
cout << string(str.rbegin(),str.rend());
return 0;
}
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
cin >> str;
char tmp;
for (int i = 0; i < str.length(); i++)
str[i] -= 30;
for (int i = 0; i < str.length() / 2; i++) { //首尾交换位置
tmp = str[i];
str[i] = str[str.length() - i - 1];
str[str.length() - i - 1] = tmp;
}
cout << str;
return 0;
}