字符串反转
#include<stdio.h>
#include<cstring>
void reverse(const char* str);
int main() {
// 处理输入的字符串
char str[100];
while (scanf_s("%s", str, 100) != EOF) {
reverse(str);
}
return 0;
}
/*
* Function:给定一个字符串,将其逆序输出
* Input:无空格字符串
* Return:逆序字符串
*/
void reverse(const char *str) {
for (int i = strlen(str) - 1; i >= 0; i--) {
putchar(str[i]);
}
putchar(' ');
}
前后调换子字符串位置
#include<iostream>
#include<string>
using namespace std;
string reverse_size(string str, int size);
int main() {
// 处理输入的字符串
string str;
int size;
while (cin >> size >> str) {
cout << reverse_size(str, size) << endl;
}
return 0;
}
/*
* Function:给一个字符类型的数组str和一个整数size,请把大小为size的左半区整体右移到右半区,右半区整体移动到左边
* Input:字符串
* Return:移动后的字符串
*/
string reverse_size(string str, int size) {
char* temp = (char*)malloc(size * sizeof(char));
int len = str.size();
// 备份左边的字符串
for (int i = 0; i < size; i++) {
temp[i] = str[i];
}
// 右边字符串左移
for (int j = size, i = 0; j < len;i++,j++) {
str[i] = str[j];
}
// 还原右边最后size个字符串
for (int i = 0; i < size; i++) {
str[len - (size - i)] = temp[i];
}
return str;
}
该题只让输出,并不需要返回这么一个真实的调换位置的字符串,可以先输出后半部分子串,再输出前半部分子串
#include<iostream>
#include<string>
using namespace std;
int main() {
// 处理输入的字符串
string str;
int size;
while (cin >> str >> size) {
cout << str.substr(size) + str.substr(0, size) << endl;
}
return 0;
}