cin.getline()的解析和使用
时间: 2024-04-14 17:27:52 浏览: 18
题目要求统计一篇英文文章中的单词数量和最长的单词,并找出包含最长单词的几个单词,同时保留空格。
为此,可以编写一个函数split,接收一个字符指针,将其切割为单词,并记录每个单词的长度。同时,记录最长的单词长度和单词数量。最后找出所有最长单词所在的位置,输出相应单词。
具体实现可以参考以下代码(注释已经解释了函数中每一步的作用):
```cpp
#include <iostream>
#include <cstring>
using namespace std;
void split(char *str) {
const int N = 500;
int cnt = 0, max_len = 0;
int len[N], pos[N];
char words[N][N];
memset(len, 0, sizeof(len)); // 初始化所有长度为0
for (int i = 0; str[i]; i++) {
if (isalpha(str[i])) { // 如果是字母
words[cnt][len[cnt]++] = str[i]; // 将其加到当前单词的末尾
} else if (len[cnt] > 0) { // 如果当前为单词结束
cnt++; // 单词数量+1
}
}
cnt++; // 最后一个单词需要额外+1
for (int i = 0; i < cnt; i++) {
if (len[i] > max_len) { // 找到更长的单词
max_len = len[i];
}
}
cout << "单词数量:" << cnt << endl;
cout << "最长单词长度:" << max_len << endl;
int cnt_max = 0;
for (int i = 0; i < cnt; i++) {
if (len[i] == max_len) { // 如果是最长单词
pos[cnt_max] = i; // 记录其位置
cnt_max++; // 个数+1
}
}
cout << "包含最长单词的单词有:" << endl;
for (int i = 0; i < cnt_max; i++) { // 输出所有最长单词所在的单词
int p = pos[i], l = len[p];
for (int j = 0; j < l; j++) {
cout << words[p][j]; // 输出单词
}
cout << " "; // 输出单词后面的空格
}
cout << endl;
}
int main() {
char str[500];
cout << "请输入文章,以回车结束:" << endl;
cin.getline(str, 500);
split(str);
return 0;
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)