C++从输入的一行字符串中求出最长英文单词长度及最长单词个数,并输出长度和个数,单词之间只能用一个或多 个空格隔开。
时间: 2023-05-31 22:06:59 浏览: 270
分析:
首先需要明确英文单词的定义,英文单词是由字母组成的字符串,不包含空格或其他符号。因此可以通过遍历字符串,找到每个单词的起始位置和结束位置,计算出单词的长度,再与当前最长单词长度比较,更新最长单词长度和最长单词个数。
具体实现可以使用循环遍历字符串,设置一个指针表示当前单词的起始位置,当遇到空格时,计算出当前单词的长度,与最长单词长度比较并更新,同时统计最长单词的个数,并将指针移动到下一个单词的起始位置继续遍历,直到遍历完整个字符串。
代码实现:
```c
#include <stdio.h>
int main()
{
char str[100];
int max_len = 0, cnt = 0, len = 0;
int i, flag = 0; // flag表示当前是否在单词中
printf("请输入字符串:");
gets(str);
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == ' ') {
if (flag) {
if (len > max_len) {
max_len = len;
cnt = 1;
} else if (len == max_len) {
cnt++;
}
len = 0;
flag = 0;
}
} else {
len++;
flag = 1;
}
}
if (flag) { // 处理最后一个单词
if (len > max_len) {
max_len = len;
cnt = 1;
} else if (len == max_len) {
cnt++;
}
}
printf("最长单词长度:%d,最长单词个数:%d\n", max_len, cnt);
return 0;
}
```
注意事项:
1. 在处理最后一个单词时需要特别注意,因为最后一个单词可能没有空格结尾,需要单独处理。
2. 输入字符串时需要使用gets()函数,因为scanf()函数遇到空格会停止读入,无法读入整个字符串。
阅读全文