C++编程:利用键盘输入统计单词数

需积分: 3 1 下载量 47 浏览量 更新于2024-08-24 收藏 8.66MB PPT 举报
"《C++程序设计》是谭浩强编著的一本教材,由清华大学出版社出版。本书主要介绍C++编程基础知识,包括C++语言的发展历史、特点以及如何使用C++进行程序设计。其中,章节涉及从键盘接收一行字符并统计单词数的问题,讲解了如何通过状态变量识别单词边界来实现计数的方法。" 在C++编程中,从键盘接收一行字符并统计单词数是一项基础任务。这个过程通常涉及到字符输入处理、字符串分析以及状态跟踪。在给出的描述中,提到了一个具体的方法来解决这个问题。首先,定义一个状态变量`word`,它的值为0或1,表示当前字符是否位于单词内部。初始设置`word`为0,意味着开始时处于非单词状态。 在遍历输入的字符序列时,如果遇到字母,`word`值变为1,表明进入了一个新的单词。如果遇到空格、制表符或其他非字母字符,`word`值变为0,表示离开单词。当`word`从0变到1时,单词计数增加1。例如,对于输入的字符串"we are students.",状态变化如下: - `w`: 字母,`word`从0变到1,单词数加1,当前单词数为1。 - `e`: 字母,`word`仍为1。 - ` `: 空格,`word`从1变到0。 - `a`: 字母,`word`从0变到1,单词数不变,当前单词数为1。 - `r`: 字母,`word`仍为1。 - `e`: 字母,`word`仍为1。 - ` `: 空格,`word`从1变到0。 - `s`: 字母,`word`从0变到1,单词数不变,当前单词数为1。 - `t`: 字母,`word`仍为1。 - `u`: 字母,`word`仍为1。 - `d`: 字母,`word`仍为1。 - `e`: 字母,`word`仍为1。 - `n`: 字母,`word`仍为1。 - `t`: 字母,`word`仍为1。 - `i`: 字母,`word`仍为1。 - ` `: 空格,`word`从1变到0。 在这个过程中,我们总共遇到了3次从0到1的状态变化,因此,单词数为3。 在C++中实现这个功能,可以使用标准库中的`std::getline`函数从键盘读取一行输入,然后通过迭代每个字符并检查其是否为字母来更新`word`状态。可以使用`std::isalpha`函数来判断字符是否为字母。以下是一个简单的实现框架: ```cpp #include <iostream> #include <string> #include <cctype> int countWords(const std::string& input) { int wordCount = 0; bool inWord = false; for (char c : input) { if (std::isalpha(c)) { if (!inWord) { ++wordCount; inWord = true; } } else { inWord = false; } } return wordCount; } int main() { std::string line; std::getline(std::cin, line); int numWords = countWords(line); std::cout << "Number of words: " << numWords << std::endl; return 0; } ``` 在这个程序中,`countWords`函数接受一个字符串参数,逐字符检查并计算单词数。`main`函数则负责从标准输入读取一行,调用`countWords`并打印结果。 C++语言因其高效、可移植性和灵活性而被广泛应用于系统编程、游戏开发、图形用户界面以及各种复杂的应用程序。学习C++时,理解如何处理字符输入和字符串分析是非常基础且重要的技能。通过这样的练习,可以更好地理解和掌握C++中的基本概念和编程技巧。