第4次作业

要求一:

`#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void CharCount();  
void WordCount();  
void LineCount();  
void Muiltiple();  

int main(int argc,char *argv[])
{
    if ((strcmp(argv[1], "-c") == 0) && (strcmp(argv[2], "file.c") == 0))
    {
        CharCount();
    }

    if ((strcmp(argv[1], "-w") == 0) && (strcmp(argv[2], "file.c") == 0))

        WordCount();
    }
    if ((strcmp(argv[1], "-l") == 0) && (strcmp(argv[2], "file.c") == 0))
    {
        LineCount();
    }
    if ((strcmp(argv[1], "-a") == 0) && (strcmp(argv[2], "file.c") == 0))
    {
        Muiltiple();
    }
    return 0;

}

void CharCount() 
{
    FILE *fp;
    int c = 0;
    char ch;
    if((fp = fopen("file.c","r")) == NULL)
    {
        printf("file read failure.");
    }
    ch = fgetc(fp);
    while(ch != EOF)
    {
            c ++;
            ch = fgetc(fp);
    }
    printf("char count is :%d.\n",c);
    fclose(fp);
}

void WordCount() 
{
    FILE *fp;
    int w = 0;
    char ch;
    if((fp = fopen("file.c","r")) == NULL)
    {
        printf("file read failure.");
    }
    ch = fgetc(fp);
    while(ch != EOF)
    {
        if ((ch >= 'a'&&ch <= 'z')||(ch >= 'A'&&ch <='Z')||(ch >= '0'&&ch <= '9'))
        {
            while ((ch >= 'a'&&ch <= 'z')||(ch >= 'A'&&ch <= 'Z')||(ch >= '0'&&ch <= '9')||ch == '_')
            {
                ch = fgetc(fp);
            }
            w ++;
            ch = fgetc(fp);    
        }
        else 
        {
            ch = fgetc(fp);
        }
    }
    printf("word count is :%d.\n",w);
    fclose(fp);

}

void LineCount() //行数统计函数
{
    FILE *fp;
    int l = 1;
    char ch;
    if((fp = fopen("file.c","r")) == NULL)
    {
        printf("file read failure.");
    }
    ch = fgetc(fp);
    while(ch != EOF)
    {
        if (ch == '\n')
        {
            l ++;
            ch = fgetc(fp);
        }
        else
        {
            ch = fgetc(fp);
        }
    }
    printf("line count is :%d.\n",l);
    fclose(fp);
}

void Muiltiple()  //综合统计函数,包括代码行,空行,注释行
{
    FILE *fp;
    char ch;
    int c=0,e=0,n=0;
    if((fp = fopen("file.c","r")) == NULL)
    {
        printf("file read failure.");
    }
    ch = fgetc(fp);
    while(ch != EOF)
    {
        if (ch == '{'||ch == '}')
        {
            e ++;
            ch = fgetc(fp);
        }
        else if (ch == '\n')
        {
            ch = fgetc(fp);
            while(ch == '\n')
            {
                e ++;
                ch = fgetc(fp);
            }
        }
        else if (ch == '/')
        {
            ch = fgetc(fp);
            if (ch == '/')
                while(ch != '\n')
                {
                    ch = fgetc(fp);
                }
                n ++;
                ch = fgetc(fp);
        }
        else
        {
            c ++;
            while (ch != '{'&&ch != '}'&&ch != '\n'&&ch != '/'&&ch != EOF)
            {
                ch = fgetc(fp);
            }
        }

    }
    printf("code line count is :%d.\n",c);
    printf("empt line count is :%d.\n",e);
    printf("note line count is :%d.\n",n);
    fclose(fp);
}`

要求二:学习总结和进度

表格和折线图


总结本课程的收获

这次课程让我充分的了解到了c语言中的指针、二维数组、链表、文件,基本上学会了和掌握了c语言,并且在课程的最后更是做了一个项目,让我们有了在实践中使用c语言的经验,这种经验才是最重要的。不过我觉得我并没有实现第0次作业所定下的目标,因为这个学期我的代码量还是太少了,在关于链表和文件的方面还是不行,并没有像一开始说的那样全力的掌握和弄透彻C语言,这也是比较遗憾的一点,虽说课程已经结束,但是我还是会努力复习,把这部分彻底搞懂。

对目前的上课和作业方式

这种方式真的还不错,平时的时候也会因为要完成PTA而专门的复习和打代码练习,并且因为要写博客,所以会平时有错的地方会特别的记下来。但是我认为每布置一次作业不应该只有本次课程相关的内容,应该再加上上次课程学习的东西,这样才能做到复习的目的,而且不要在有难点的部分过于增加题量,有的时候难题太多是会有放弃的想法,不利于自己独立思考和解决题目,因为一旦遇到难题太多,难免就有请别人帮忙的念头。

有什么要对教师说的

讲的确实有点快,虽说后来慢了点,但是一开始的确挺快,特别是链表,我自己觉得两节课听的不算很懂,后来代码都是在同学的帮助下才完成的,剩下就没有什么了。老师在课上对我们还是挺好的,遇到我们不懂的地方可以变着方法的解释出来。

posted @ 2018-05-04 22:58  无药了  阅读(131)  评论(1编辑  收藏  举报