2018第四次作业

一,要求一:

1).设计思路:

第一步:主函数中:因为要求中要求“程序处理用户需求的模式为:wc.exe [parameter] [file_name]”,所以主函数数据传入采用了“int main( int argc,char *argv[] )”。之后用while语句进行判断,并用if语句判断参数类型并调用相应函数并输出结果。
第二步:判断行数的函数,先将文件打开,如果文件为空则返回0,如果不为空则往下走,用一个while语句遍历文件中的数据,如果遇到换行字符lines加一,最后关闭问件,返回行数的值。
第三步:判断字符数的函数,大框和上个函数一样,统计字符个数用一个while语句遍历文件中的数据,每次字符数加一,最后统计出字符数。
第四步:判断单词数的函数,用一个while语句遍历函数,用一个if语句判断所遍历字符是否为字符是否为单词的首字母如果是单词数加一,最后统计出单词数.

2).实验代码:

	#include <stdio.h>
	#include <string.h>
	
	int main( int argc,char *argv[] )
	{
	    int lines;
	    int numbers;
	    int words;
	    while( argv[2] )
	    {
	        if( strcmp(argv[1],"-l") == 0)
	        {
	            lines = Line(argv[2]);
	            printf( "%sµÄÐÐÊý = %d\n",argv[2],lines );
	        }
	        if( strcmp(argv[1],"-c") == 0)
	        {
	            numbers = char(argv[2]) - 1;
	            printf( "%sµÄ×Ö·ûÊý = %d\n",argv[2],numbers );
	        }
	        if( strcmp(argv[1],"-w") == 0)
	        {
	            words = wor(argv[2]) - 1;
	            printf( "%sµÄ´ÊµÄÊýÄ¿ = %d\n",argv[2],words );
	        }
	        break;
	    }
	}
	
	int Line( char *file_name )
	{
	    int lines;
	    char ch;
	    FILE *fp;
	    fp = fopen( file_name,"r" );
	    if( fp == NULL )
	    {
	        printf( "File Open Error!\n" );
	        return 0;
	    }
	    ch = fgetc(fp);
	    lines = 0;
	    while( ch != EOF )
	    {
	        if( ch == '\n' )
	        {
	            lines = lines + 1;
	        }
	        ch = fgetc(fp);
	    }
	    if( fclose(fp) )
	    {
	        printf( "Can Not Close The File!\n" );
	        return 0;
	    }
	    return lines;
	}
	int char( char *file_name )
	{
	    int num;
	    char ch;
	    FILE *fp;
	    fp = fopen( file_name,"r" );
	    if( fp == NULL )
	    {
	        printf( "File Open Error!\n" );
	        return 0;
	    }
	    ch = fgetc(fp);
	    num = 0;
	    while( ch != EOF )
	    {
	        num = num + 1;
	        ch = fgetc(fp);
	    }
	    if( fclose(fp) )
	    {
	        printf( "Can Not Close The File!\n" );
	        return 0;
	    }
	    return num;
	}
	int word( char *file_name )
	{
	    int word,f;
	    char ch;
	    FILE *fp;
	    fp = fopen( file_name,"r" );
	    if( fp == NULL )
	    {
	        printf( "File Open Error!\n" );
	        return 0;
	    }
	    ch = fgetc(fp);
	    word = 0;
	    f = 0;
	    while( ch != EOF )
	    {
	        if(((ch >= 'a')&&(ch <= 'z'))||((ch >= 'A')&&(ch <= 'Z')))
	        {
	            f = 0;
	        }else
	        {
	            if(f == 0)
	            {
	                word = word + 1;
	                f = 1;
	            }
	        }
	        ch = fgetc(fp);
	    }
	    if( fclose(fp) )
	    {
	        printf( "Can Not Close The File!\n" );
	        return 0;
	    }
	    return word;
	}

二,要求二:

1.git:

Git地址

2.点评:

高立彬
顾家玮
班庆泽

3.用表格和折线图呈现你本学期的代码行数和所用时间、博客字数和所用时间:

4.回顾第0次作业:

我在第零次的时候说过这学期要打下坚实的基础,构建出清晰的知识体系。这些我觉得在基础方面有一些欠缺,感觉自己不是很扎实,有很多东西在用的时候都没有像以前一样清晰的思路和那种感觉,想用的时候有模棱两可的感觉,觉得自己需要更多的练习去弥补吧!尤其是在链表这需要更多的练习。还有,自己在课程的末尾有一些松懈,每天过的有点浑浑噩噩,有些疲倦,所以落下了很多功课。

5.意见和建议:

目前的上课方式我觉得初衷是好的,不过在执行上感觉还需完善,比如,每次博客都有一项是记录做pta所遇到的困难,但是每次写pta的时候都是在一心的做pta等到要交博客的前两天才想起博客这件事,那时候自己犯下的错误基本都忘记了然后就只能记下那些特别大的问题,但是很多小问题全部遗忘。如果下学期继续采取这种方式的话很希望pta的知识点可以留一些简单的题再加上几道难题,因为难题过多的话真的会让自己没兴趣做。

6.对教师说的,建议、抱怨、希望…

我觉得一切都还不错。每次都会从学生的角度出发,就是前面的课程我觉得讲的有点快,我认为上课时跟着敲代码特别能够帮助学习并且能够加强我对知识点了解(上课的时候能带着我们敲代码就很好了),时常给我们一些指引,方法,没事还会开导我们,很多时候让我们更加了解大学生活,给我引进很多资源,虽然我们不是很会利用。

posted @ 2018-05-04 22:59  DavidPark  阅读(231)  评论(9编辑  收藏  举报