一、码云地址:https://gitee.com/czdx
二、设计思路:由于目前只对C语言掌握较好,于是便运用C++开始编写。先读取文件,再统计字符数、单词数以及行数。
统计单词数关键是判断中间停顿符,而行数统计则是/n的辨别,统计字符数时需要区别/n外加所有字符。
三、共实现了三个函数的编写
统计字符数函数Letter
int Letter(char c){ if((c<'0'||c>'9')&&c!='\n') return 1; else return 0;}
统计单词数函数Word
int Word(char c,int &w){ if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) { w++; if(w==1) return 1; else return 0; } else { if(w>0) w=0; return 0; }}
和统计行数函数Row
int Row(char c,int &r){ if(c=='\n') { r++; if(r==1) return 1; else return 0; } else { if(r>0) r=0; return 0; }}
获取文件通过函数getline
主函数
int main (){
ifsteam in;//读文件 string filename; gteline(cin,filename,'\n');//获取文件名 cin>>filename; in.open(filename,'\n'); if(!in)//判断是否打开成功 { cerr<<"打开文件出错!"<<endl; return 1; }
int totalrow=0,totalword=0,totalletter=0;//初始化总行数 ,单词数 ,字符数 int r=0,w=0;//行连续出现次数 ,英文字符连续出现次数char c;while(r<2)//如果不是空行则循环 {c=getchar();totalrow+=Row(c,r);totalword+=Word(c,w);totalletter+=Letter(c); }printf("单词数:%d\n",totalword);printf("字符数:%d",totalletter);printf("总行数:%d\n",totalrow);return 0;}
四、测试用例设计
运用白盒设计技术
1、
If you were a teardrop;In my eye,
For fear of losing you,I would never cry.
2、
mistakeaikeyouforever
3、苦其心志,劳其筋骨。
4、
5、。。。。,,,,,,。。
6、556652241
测试用例主要通过判断条件覆盖测试方法进行测试。
五、心得与体会
本次作业主要是对我们学习的基础考察,做这个作业时,我以为十分简单,很快就把几个判别的函数写了出来,但是在读取文件时出现了些许差错,我读取的文件名中间不能有空格键,但是找不到什么好的解决办法,应该是在读取文件名cin>>filename出现问题。代码以及思路还是比较清晰,但是还有软件测试过程任然不够完善,暂时只有六个测试用例。我也明白,想完成一件事十分容易,但想将它做好需要付出巨大的努力,还需认真学习,从他人身上汲取经验。
转载于:https://www.cnblogs.com/czdx59/p/9697230.html