#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
void trans(string a, int n);
string res;
int main() {
char a[1000000];
int n;
gets_s(a);
cin >> n;
trans(a, n);
cout << res<<endl;
return 0;
}
void trans(string s, int n) {
if (n == 0) {
res = s;
return;
}
for (int i = 0; i < n; i++) {
//大小写转换
if (s[i] <= 'Z' && s[i] >= 'A')
res += s[i] - 'A' + 'a';
else if (s[i] >= 'a' && s[i] <= 'z')
res += s[i] - 'a' + 'A';
else
//空格直接复制
res += s[i];
}
//翻转整个字符串
reverse(res.begin(), res.end());
for (int i = 0; i < n; i++) {
int j = i;
//以空格为界,二次翻转
while (j < n && res[j] != ' ')
j++;
reverse(res.begin() + i, res.begin() + j);
i = j;
}
}
ACM模式
测试用例:
This is a sample
16
笔记:
C++字符串输入输出
输入:
scanf("%s",s) 遇到空字符直接停止
cin>>s 遇到空字符直接停止
gets_s(a) 对空字符不敏感(可以读取空字符),遇到“\0”停止
输出:
printf(“%s”,s) 可以输出空字符,遇到“\0”停止
cout<<s<<endl;可以输出空字符,遇到“\0”停止