C语言深度学习之统计英语单词程序(详解版)

本文详细介绍了如何使用C语言编写一个程序,该程序能统计输入文本的单词数、完整行数、非完整行数和字符数。通过伪代码解释了算法思路,并提供了具体代码实现。文章最后讨论了如何改进程序,利用EOF作为输入结束标识,避免使用自定义终止符。
摘要由CSDN通过智能技术生成

注:该程序包括计算单词个数,完整行数,非完整行数,字符数

1、需求分析

由于所做程序需要能够检测键盘输入文本的单词数量(本篇文章暂不讨论文本输入方式下的计数算法),并且除了单词之外,还应包含检测计数行数和字符数的功能。考虑到检测行数时原理是根据换行符来递增计数器,那么就存在很大一种可能最后一行并不完整。所以需要单独考虑,同时,由于没有设定输入结尾的标识符,需要自行设定结尾标识符。所以讨论几段文章这种思路并无意义,姑且暂定为只有一整段。而从这里倒推的话,partical_lines(非完整行)的值只能为1或者0。(PS:当然,嫌麻烦就无需讨论非完整行)

2、伪代码实现算法

首先该程序需逐个字符进行输入,程序要能够识别这些字符并且知道何时停止读取。由此,伪代码如下:

  1. 读取一个字符
  2. 当有更多字符输入时:
  3. 递增字符计数
  4. 如果读完一行,递增行数
  5. 如果读完一个单词,递增单词计数器
  6. 读取下一个字符

3、具体思路

(1)、首先,程序必须知道读取到什么时候结束,故需要强制性指定一个标识符,在这里姑且用’|‘作为标识符。通过宏定义常量标识符STOP;
(2)、由于本程序需要getchar逐个输入,故必须用到循环体;在检测到换行符时递增行数,在检测到两个单词之间的空格时递增单词个数,此时可以考虑非完整行,由于最后一个字符为结尾标识符’|’,而只要检测到倒数第二个字符不是换行符’\n’,则为非完整行;
(3)、识别计数部分(重要部分):本个程序核心思想。首先是识别单词,简单定义,可以认为一个单词由若干个字符构成,而这几个字符之间没有空格。那么可以假设一个布尔型(通过<stdbool.h>头文件)标志变量inword,程序读取的第一个非空字符为单词的起始位,当读到空白位为止。判断非空字符的测试表达式有两种思路:
其一:

ch != ' ' && ch != '\n' && ch != '\t';

其二:利用isspace()(注意添加<ctype.h>头文件哦)

if(isspace(ch)&&inword)//判断单词的结束
if(!isspace(ch)&&!inword)//判断新单词的开始

然后是关于行数和字符数的计数递增,没有技术含量。

4、代码实现

// wordcnt.c--统计字符数、单词数、行数
#include <stdio.h>
#include <stdlib.h>
#
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值