用C++计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000
时间: 2024-05-03 08:20:42 浏览: 110
好的,这是一个计算问题,可以回答。以下是代码示例:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[5001];
fgets(str, 5001, stdin); // 读入字符串
int len = strlen(str), lastWordLen = 0;
for (int i = len - 2; i >= 0; i--) {
if (str[i] == ' ') { // 找到空格就返回最后一个单词的长度
printf("%d\n", lastWordLen);
return 0;
}
lastWordLen++; // 统计最后一个单词的长度
}
printf("%d\n", lastWordLen); // 如果没有空格,整个字符串就是最后一个单词
return 0;
}
```
当然,也可以使用 strtok 函数进行字符串分割,不过比较麻烦,这里就不贴代码了。
相关问题
C++输入一行字符串(字符串长度 ≤100 ),包含若干个单词,约定相邻的两个单词用空格隔开(一个或多个空格),编程统计单词的个数。
您可以使用以下代码来统计单词的个数:
```cpp
#include <iostream>
#include <string>
using namespace std;
int countWords(string str) {
int count = 0;
bool isWord = false;
// 遍历字符串的每个字符
for (char c : str) {
// 判断当前字符是否是字母或数字
if (isalnum(c)) {
// 如果当前字符是字母或数字,并且之前不是单词,则将单词计数增加
if (!isWord) {
count++;
isWord = true;
}
}
else {
// 如果当前字符不是字母或数字,则之后的字符不属于单词
isWord = false;
}
}
return count;
}
int main() {
string str;
cout << "请输入一行字符串: ";
getline(cin, str);
int wordCount = countWords(str);
cout << "单词的个数为: " << wordCount << endl;
return 0;
}
```
这段代码会提示用户输入一行字符串,并通过 `getline()` 函数获取输入的字符串。然后,`countWords()` 函数会遍历字符串的每个字符,判断是否是字母或数字,从而统计出单词的个数。最后,程序会输出单词的个数。
请注意,这段代码假设单词只包含字母和数字,如果您的需求中还包含其他字符,请根据实际情况进行修改。
C++从输入的一行字符串中求出最长英文单词长度及最长单词个数,并输出长度和个数,单词之间只能用一个或多 个空格隔开。
分析:
首先需要明确英文单词的定义,英文单词是由字母组成的字符串,不包含空格或其他符号。因此可以通过遍历字符串,找到每个单词的起始位置和结束位置,计算出单词的长度,再与当前最长单词长度比较,更新最长单词长度和最长单词个数。
具体实现可以使用循环遍历字符串,设置一个指针表示当前单词的起始位置,当遇到空格时,计算出当前单词的长度,与最长单词长度比较并更新,同时统计最长单词的个数,并将指针移动到下一个单词的起始位置继续遍历,直到遍历完整个字符串。
代码实现:
```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()函数遇到空格会停止读入,无法读入整个字符串。
阅读全文