输入一串字符串,将所有单词颠序输出,只能在main函数里实现
时间: 2023-06-10 07:05:33 浏览: 41
你好!我明白你的要求了。以下是代码实现:
```C++
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <sstream>
using namespace std;
int main() {
string input;
getline(cin, input); // 输入一串字符串,可以带有空格和标点符号
// 把字符串转换成vector<string>
vector<string> words;
stringstream ss(input);
string word;
while (ss >> word) {
words.push_back(word);
}
// 颠倒vector中单词的顺序
reverse(words.begin(), words.end());
// 输出所有单词
for (auto word : words) {
cout << word << " ";
}
cout << endl;
return 0;
}
```
这段代码将输入的字符串按空格分割成单词,并存储在一个vector中。然后,使用reverse函数将单词的顺序颠倒,并在最后输出所有单词。
请注意,此程序只能在main函数中实现,因为AI不能直接编辑代码文件。
相关问题
C语言输入一串字符串,将所有单词颠序输出,只能在main函数里实现
好的,我听明白了。对于您的问题,可以按照以下步骤实现:
1. 在main函数中声明一个字符数组,用于存储输入的字符串。
2. 使用scanf函数从标准输入中读取一行字符串,并将其存储到刚刚声明的字符数组中。
3. 声明一个指向字符的指针数组,用于存储颠倒后的单词。
4. 使用strtok函数将输入的字符串按照空格分割成多个单词,并依次将它们存储到指针数组中。
5. 计算指针数组的长度,并从尾到头依次输出其中的元素。
具体实现代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[1000];
scanf("%[^\n]", str); // 读取一行字符串,遇到换行符则停止
char* p[1000]; // 指向字符的指针数组
int count = 0; // 指针数组的长度计数器
// 使用strtok函数将字符串按照空格划分成多个单词,并依次存储到指针数组中
char* token = strtok(str, " ");
while (token != NULL) {
p[count++] = token;
token = strtok(NULL, " ");
}
// 从指针数组的尾部开始逆序输出单词
for (int i = count - 1; i >= 0; i--) {
printf("%s ", p[i]);
}
printf("\n");
return 0;
}
```
该代码通过使用strtok函数将原始字符串按照空格拆分成多个单词,并将每个单词存储到指针数组中。然后,根据指针数组的长度从后往前输出每个单词。由于使用了指针数组,因此不需要修改原始字符串,也不需要使用额外的空间来存储颠倒后的单词。
C语言输入一串字符串,将所有单词颠序输出
好的,让我来回答你的问题。
对于这个问题,可以先把输入的字符串以空格为分隔符分割成若干个单词,然后再将这些单词颠倒顺序输出即可。具体实现可以使用C语言中的字符串处理函数strtok和strrev来完成。
以下是基本实现代码:
```
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
fgets(str, 100, stdin); // 以 fgets() 函数读取字符串
char *word = strtok(str, " "); // 以空格为分隔符分割字符串
char *words[100]; // 存储分割后的单词
int i = 0;
while (word != NULL)
{
words[i++] = word; // 将单词存储到数组中
word = strtok(NULL, " ");
}
for (int j = i - 1; j >= 0; j--)
{
printf("%s ", strrev(words[j])); // 颠倒单词顺序并输出
}
return 0;
}
```
注意,这里的strrev函数需要先定义一下,可以使用如下实现:
```
char *strrev(char *str)
{
if (!str || ! *str)
return str;
int i = strlen(str) - 1, j = 0;
char ch;
while (i > j)
{
ch = str[i];
str[i] = str[j];
str[j] = ch;
i--;
j++;
}
return str;
}
```
这样就可以实现输入一串字符串,将所有单词颠序输出的功能了。希望对你有所帮助!