一,問題描述
二,問題分析
1.遍歷輸入的整個字符串,對每個字符進行判斷,判斷每個字符是否在字母範文內,並用一個char型數組接收單詞
2.判斷單詞是否唯一,我們可以採用map中find()函數
3.注意是多個輸入,輸出格式爲按順序輸入單詞,一個單詞一行
三,問題解答
#include<iostream>
#include<map>
#include<string>
#include<cstdio>
using namespace std;
char str[105]; //輸入的字符串
char word[105]; //記錄一個完整單詞
int main() {
int i, len, j;
map<string, int> m;
map<string, int>::iterator it;
while (scanf("%s", str) != EOF) {
len = strlen(str);
j = 0;
for (i = 0; i <= len; i++) {
if (str[i] >= 'A' && str[i] <= 'Z' || str[i] >= 'a' && str[i] <= 'z') {
word[j] = str[i];
++j;
}
//注意此處應該判斷單詞是否存在,否則出現多個非字母字符時打印多個換行符
else if (j > 0) {
word[j] = '\0'; //將word標記爲字符串,不可省
j = 0;
it = m.find(word);
if (it == m.end()) { //判斷map容器中是否又這個單詞
m.insert(map<string, int>::value_type(word, 1));
printf("%s\n", word);
}
}
}
m.clear();
}
}