如何修改C++单词计数程序实现统计输入文本最长、最短单词及字符数
修改现有循环实现最长/最短单词统计
实现思路
完全可以在原有循环的基础上新增变量实现需求,不需要改动整体逻辑:
- 新增4个变量,分别记录当前最长单词、最长单词长度、当前最短单词、最短单词长度
- 每次读入新单词后,除了累加单词计数,分别和当前最长、最短长度做对比,匹配条件就更新对应变量
- 输出前判断是否有有效单词输入,避免空输入触发异常
修改后的完整代码
#include <iostream> #include <string> #include <climits> using namespace std; int main() { int count_words = 0; string word; string longest_word, shortest_word; size_t longest_len = 0; size_t shortest_len = INT_MAX; cout << "Type a text:" << endl; while (cin >> word) { count_words++; size_t current_len = word.size(); // 更新最长单词信息 if (current_len > longest_len) { longest_len = current_len; longest_word = word; } // 更新最短单词信息 if (current_len < shortest_len) { shortest_len = current_len; shortest_word = word; } } cout << "The text contains " << count_words << " words." << endl; if (count_words > 0) { cout << "The shortest word is \"" << shortest_word << "\" with " << shortest_len << " characters." << endl; cout << "The longest word is \"" << longest_word << "\" with " << longest_len << " characters." << endl; } else { cout << "No valid words entered." << endl; } return 0; }
注意事项
如果存在多个长度相同的最长/最短单词,上述代码会保留第一个出现的对应单词;如果需要保留最后一个出现的,把判断条件里的>改成>=、<改成<=即可。
内容的提问来源于stack exchange,提问作者leun
相关产品推荐
相关产品推荐

