天天看点

读取程序字符,行数,单词的个人程序

一、需求分析:

统计程序中有的字符个数,行数以及单词数量。

思路设计:

通过对题目要求个人理解和同学的讨论,我认为通过对行,字符和词数分别用函数统计:

行数的统计我用了:int isrand(char c, int &randnum)。

对单词的统计我用了这个函数:int isWord(char c, int &wordnum)。单个字母和由多个字母组成的默认为都是单词。

对字符的统计运用了这个函数:int ischaracter(char c)。字符统计时两个单词之间的空格,括弧,等号等也算为一个字符了。

在主函数(main函数)中分别调用这三个函数可以简单的实现对字符、行数和单词的统计。

二、关键词的解释:

rand=0:初始化行数为零,rand含义为行数的统计。

word=0:初始化单词为零,word含义为单词的数量。

character=0:初始化字符数为零,character为字符的统计。

三、运行调试:

1.当输入所有源程序时运行结果和系统统计结果一样,行数为:63.单词为:111.字符总数为:905.

读取程序字符,行数,单词的个人程序

2.用简单的输入检测字符和单词的统计是否正确。

输入:c = getchar()

理论输出结果:

行数:1

单词输出:2

字符输出:13

运行截图:

读取程序字符,行数,单词的个人程序

3.在进行其他的几组数据的运行检验:

运行如图:

读取程序字符,行数,单词的个人程序
读取程序字符,行数,单词的个人程序

四、个人心得体会:

  题目的基本要求不是太困难,就是对基础知识的要求很高。一开始想着将要检测的数据存储在文件里,但是折腾了整整半天在vs2013环境下无法将文件数据打开,但是在vc6.0中同样的代码可以运行,这要求我要积极去深入了解vs2013编译环境,不明白的一些问题在网上也有一些解释,需要自己去理解和消化。

  编程中每一次要将自己的代码风格标准化,模仿别人的编程习惯,慢慢培养自己的习惯,要坚持。标准化自己函数的定义,既方便了自己将来的阅读,又为别人读懂自己的代码做了必要的工作。每一次编程都是对自己的一次锻炼。

源代码:

#include <stdio.h>

#include<Windows.h>

int isrand(char c, int &randnum)//判断是否换行

{

if (c == '\n')

{

randnum++;

if (randnum == 1)

return 1;

else

return 0;

}

else

if (randnum>0)

randnum = 0;

return 0;

}

int isWord(char c, int &wordnum)//判断是否单词

if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))

wordnum++;

if (wordnum == 1)

if (wordnum>0)

wordnum = 0;

int ischaracter(char c)//判断是否字符

if ((c<'0' || c>'9') && c != '\n')

return 1;

}

int main()

system("color 9B");

int rand = 0, word = 0, character = 0;//初始化总行数 ,单词数 ,字符数

int randnum = 0, wordnum = 0;//randnum为行数 ,wordnum为次数

char c;

printf("请输入要检测的程序\n");

while (randnum<2)//如果不是空行则循环

c = getchar();

rand += isrand(c, randnum);

word += isWord(c, wordnum);

character += ischaracter(c);

printf("总行数:%d\n", rand);

printf("单词数:%d\n", word);

printf("字符数:%d", character);

system("pause");

return 0;