c++顺时针旋转句子90度
时间: 2023-10-28 12:05:46 浏览: 151
要将一个句子顺时针旋转90度,可以先将句子按照空格分割成单词,然后将这些单词存储在一个二维字符数组中,再对这个二维数组进行旋转操作,最后将旋转后的二维数组按行输出即可。
具体实现步骤如下:
1. 将句子按照空格分割成单词,存储在一个vector<string>中。
2. 计算出旋转后的二维数组的行数和列数,行数为单词数,列数为最长单词的长度。
3. 创建一个二维字符数组,将单词逐个复制到这个数组中。
4. 对这个二维数组进行旋转操作,可以使用两个for循环,将每个元素旋转到对应的位置。
5. 将旋转后的二维数组按行输出即可。
下面是C++代码实现:
```
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
void rotate(vector<string>& words) {
int n = words.size();
int m = 0;
for (int i = 0; i < n; i++) {
m = max(m, (int)words[i].size());
}
char arr[n][m];
memset(arr, ' ', sizeof(arr));
for (int i = 0; i < n; i++) {
for (int j = 0; j < words[i].size(); j++) {
arr[i][j] = words[i][j];
}
}
for (int i = 0; i < n / 2; i++) {
for (int j = i; j < m - 1 - i; j++) {
char tmp = arr[i][j];
arr[i][j] = arr[n - 1 - j][i];
arr[n - 1 - j][i] = arr[n - 1 - i][m - 1 - j];
arr[n - 1 - i][m - 1 - j] = arr[j][m - 1 - i];
arr[j][m - 1 - i] = tmp;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << arr[i][j];
}
cout << endl;
}
}
int main() {
string s;
getline(cin, s);
vector<string> words;
string word = "";
for (int i = 0; i < s.size(); i++) {
if (s[i] == ' ') {
words.push_back(word);
word = "";
} else {
word += s[i];
}
}
words.push_back(word);
rotate(words);
return 0;
}
```
阅读全文