c++题目如下: 题目描述: 小新有一个单词本,上面记录着许多单词,但是小新不知道自己到底记录了多少个单词。现在给你单词本中所有的单词,你能帮助他计算出单词的数量吗? 输入格式: 一行若干个由空格分开的字符串,保证字符串长度的总和不超过106 10 6 。 输出格式: 一个整数,表示单词的个数。 输入样例: string algorithm array Dijkstra Fourier 输出样例: 5 请问该题的c++代码是什么
时间: 2024-03-25 15:40:20 浏览: 13
以下是该题的C++代码实现:
```
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
string line;
getline(cin, line); // 读入一行字符串
stringstream ss(line); // 将字符串转换为stringstream对象
string word;
int count = 0;
while (ss >> word) // 从stringstream中逐个取出单词
count++;
cout << count << endl; // 输出单词数量
return 0;
}
```
该代码的思路是将输入的一行字符串转换为stringstream对象,然后从对象中逐个取出单词并计数,最终输出单词数量。其中,stringstream对象是C++标准库中的一个类,用于实现字符串和基本数据类型之间的相互转换。
相关问题
以下这题c++代码怎么做:题目描述: 小新有一个单词本,上面记录着许多单词,当小新第一次遇到某个新单词时,小新会把他写在单词本上,如果小新再次遇到这个单词,并且他忘记了这个单词的含义,他也会将其写在单词本上,所以小新的单词本上有一些单词是重复的。现在小新想知道他一共写下了多少个新单词,你能帮帮他吗? 输入格式: 一行若干个由空格分开的字符串,保证字符串长度的总和不超过10000,新单词个数不超过1000,每个单词长度不超过20。 输出格式: 一个整数,表示小新写下的新单词的数量。 输出格式: 输出插入行和列之后的数组得到的新数组,结尾没有空格。 输入样例: string algorithm string map algorithm set stack queue 输出样例: 6
以下是 C++ 的代码实现:
```cpp
#include <iostream>
#include <string>
#include <unordered_set>
using namespace std;
int main() {
string s;
unordered_set<string> words;
int count = 0;
while (cin >> s) {
if (words.count(s) == 0) {
words.insert(s);
count++;
}
}
cout << count << endl;
return 0;
}
```
思路:使用哈希集合 unordered_set 记录已经出现过的单词,如果新的单词没有出现过,则插入到哈希集合中并增加计数器 count。最后输出计数器 count 即可。
c++输入一行字符,统计其中有多少个单词,单词之间用空格分隔开
以下是两种C++统计单词个数的例子:
1. 使用while循环和getchar()函数
```cpp
#include <stdio.h>
int main() {
char ch;
int num = 0;
printf("请输入一行字符,单词之间用一个空格分隔开\n");
while ((ch = getchar()) != '\n') {
if (ch == ' ') {
num++;
}
}
printf("该行字符有%d个单词", ++num);
return 0;
}
```
2. 使用for循环和gets()函数
```cpp
#include <stdio.h>
void main() {
char a[80];
int i, num = 0, word = 0;
printf("input:");
gets(a);
for (i = 0; a[i] != '\0'; i++) {
if (a[i] == ' ') {
word = 0;
} else if (word == 0) {
num++;
word = 1;
}
}
printf("num=%d\n", num);
}
```