统计一行字符中有多少个单词
2016-06-18 19:43
369 查看
题目:如何统计一行字符中有多少个单词。
思路分析:
(1)单词的个数可以由空格出现的次数决定,连续的若干个空格作为出现一次空格,一行开头的空格不统计在内。
(2)如果测出某一字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了“,此时使单词数count累加1。
(3)如果当前字符为非空格,而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,count不应再累加1。
(4)添加一个标志word,用来标识当前字符的前一个字符是否为空格;若word等于0,则表示前一个字符是空格;若word等于1,则表示前一个字符为非空格。
备注:gets 和 cin.getline( ) 的区别请参考我的另一篇博客: scanf、gets、getchar、cin、cin.get、cin.getline、getline总结
思路分析:
(1)单词的个数可以由空格出现的次数决定,连续的若干个空格作为出现一次空格,一行开头的空格不统计在内。
(2)如果测出某一字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了“,此时使单词数count累加1。
(3)如果当前字符为非空格,而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,count不应再累加1。
(4)添加一个标志word,用来标识当前字符的前一个字符是否为空格;若word等于0,则表示前一个字符是空格;若word等于1,则表示前一个字符为非空格。
#include <iostream> using namespace std; #define MAXSIZE 1024 int main(int argc, const char * argv[]) { char str[MAXSIZE]; // gets(str); // 适用gets时,编译器会有警告,因为使用gets是有风险的。 cin.getline(str, MAXSIZE); int count = 0; int word = 0; for (int i = 0; str[i] != '\0' ; i++) { if (str[i] == ' ') word = 0; else if (word == 0) { word = 1; count++; } } printf("%d\n", count); return 0; } // 若想使用指针来完成,for循环部分要略作修改,如下: // char *p = str; // while (*p != '\0') // { // if (*p == ' ') // word = 0; // else if (word == 0) // { // count++; // word = 1; // } // // str++; // 不能改变str的指向,应借助指针p来完成。 // p++; // // }
备注:gets 和 cin.getline( ) 的区别请参考我的另一篇博客: scanf、gets、getchar、cin、cin.get、cin.getline、getline总结
相关文章推荐
- 统计单词个数,并找出最长、最短的单词(9.39)
- 统计文件中不小于某一长度的单词的个数(泛型算法实现)
- 利用状态机编程思想求解统计英文句子中单词个数问题
- 【字符串操作】01.统计一个字符串中单词的个数
- 编写一个程序,打印输入中单词长度的直方图
- Java实现文本文件中各个单词出现的次数
- C#判断单词个数方法总结
- servlet读书笔记
- 动态代理AOP实现方法过滤
- Android 中获取当前的 Activity
- 处理下载文件时中文乱码
- 对于解析xls(excle表格数据 )
- Linux0.11内核--进程调度分析之1.初始化
- acm_最短路
- SwipeRefreshLayout 源码
- easyui tree 默认选中第一个元素
- 用IO流的知识将两个文件写到一个文件中(设置字符编码)
- 为什么UI线程是不安全线程
- 结构体进程描述进程
- Minor【 PHP框架】3.路由、控制器、视图