编写一个函数void Shift(int m, char s[]),其作用是字符串(长度>=2m)的后m个字符移动到字符串的最前面,并输出改变后的字符串
时间: 2024-04-09 07:27:59 浏览: 98
好的,这是一个将字符串后m个字符移动到最前面的函数实现:
```c++
#include <iostream>
#include <cstring>
void Shift(int m, char s[])
{
int len = strlen(s);
char temp[m];
// 将后m个字符保存到临时数组中
for (int i = len - m, j = 0; i < len; i++, j++)
{
temp[j] = s[i];
}
// 将前len-m个字符依次向后移动m个位置
for (int i = len - 1; i >= m; i--)
{
s[i] = s[i - m];
}
// 将临时数组中的字符插入到字符串最前面
for (int i = 0; i < m; i++)
{
s[i] = temp[i];
}
}
int main()
{
char str[] = "abcdefgh";
int m = 3;
std::cout << "移动前的字符串:" << str << std::endl;
Shift(m, str);
std::cout << "移动后的字符串:" << str << std::endl;
return 0;
}
```
在这个函数中,我们首先计算字符串的长度 `len`,然后创建一个临时数组 `temp`,将后m个字符保存到 `temp` 中。接下来,我们使用循环将前 `len-m` 个字符向后移动 `m` 个位置。最后,我们将临时数组中的字符插入到字符串的最前面。
在 `main` 函数中,我们创建了一个测试字符串 `str`,并调用 `Shift` 函数进行移动操作。最后,打印出移动前后的字符串内容。
阅读全文