使用c++新特性编写程序,输入一个字符串,按单词将该字符串逆序输出,该字符串最多包含20个单词,为了简化问题,字符串中不包含标点符号。 提示:可用c++中string类数组
时间: 2023-05-31 20:20:48 浏览: 281
### 回答1:
可以使用C++中的string类和数组来解决这个问题。具体来说,可以先使用getline函数从输入流中读取一行字符串,然后使用for循环和条件判断来实现逆序输出该字符串,并计算该字符串中最多包含的单词数。需要注意的是,字符串中不包含空格或者其他分隔符时可以使用句点符号作为单词之间的分隔符。如果想要更加简洁高效的代码,可以使用STL库中的算法函数,如reverse和count_if等来实现该功能。
### 回答2:
本题需要使用c新特性来编写程序,需要借助string类数组来实现。首先,我们可以用一个string类型的变量来输入字符串,并用空格分隔单词,将单词存入string类数组中,最后再逆序输出该数组即可。
代码如下:
```C
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string str;
string words[20];
int cnt = 0;
getline(cin, str); // 输入字符串
string word = "";
for (int i = 0; i < str.size(); i++) { // 按空格分隔单词
if (str[i] == ' ') {
words[cnt++] = word;
word = "";
} else {
word += str[i];
}
}
words[cnt++] = word; // 最后一个单词
for (int i = cnt - 1; i >= 0; i--) { // 逆序输出数组
cout << words[i] << ' ';
}
cout << endl;
return 0;
}
```
这里利用了C++中的string类型来方便地存储单词和操作字符串,也使用了数组来存储单词,这也是C++中的基本数据结构之一。当然,如果对于输入的字符串有更复杂的要求(比如包含标点符号、特殊字符等),可以在代码中进行相应的处理。
### 回答3:
为了实现这个任务,我们可以使用C++11中的新特性,在输入数据的同时将字符串分割为单个单词。我们可以用string类数组来实现,它可以存储多个字符串。然后,我们可以使用一个for循环来逆序输出这些单词。
首先,让我们定义一个字符串数组并初始化为20个空字符串:
string str[20] = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
然后,我们可以使用getline(cin, input)函数来输入一个字符串。该函数每次从输入流读取一行输入并存储在变量input中。接着,我们可以使用一个istringstream对象来将输入字符串分割成单个单词:
istringstream ss(input); // 定义一个istringstream对象
string word; // 定义一个字符串
int i = 0; // 定义一个变量i,用来记录单词的数量
while (ss >> word) {
str[i++] = word; // 将分割出来的单词存入字符串数组str中
}
这样,我们就可以将输入的字符串分割成单个单词并存储到字符串数组str中了。接着,我们可以使用一个for循环逆序输出这些单词:
for (int j = i - 1; j >= 0; j--) {
cout << str[j] << " "; // 按逆序输出单词
}
完整的程序代码如下:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string str[20] = {"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""};
string input;
getline(cin, input);
istringstream ss(input);
string word;
int i = 0;
while (ss >> word) {
str[i++] = word;
}
for (int j = i - 1; j >= 0; j--) {
cout << str[j] << " ";
}
cout << endl;
return 0;
}
需要注意的是,本程序忽略了字符串中的标点符号,并且最多只能输出20个单词。如果需要更高的可扩展性,可以将字符串数组大小设置为动态取值即可。
阅读全文