第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而专门的复习和打代码练习,并且因为要写博客,所以会平时有错的地方会特别的记下来。但是我认为每布置一次作业不应该只有本次课程相关的内容,应该再加上上次课程学习的东西,这样才能做到复习的目的,而且不要在有难点的部分过于增加题量,有的时候难题太多是会有放弃的想法,不利于自己独立思考和解决题目,因为一旦遇到难题太多,难免就有请别人帮忙的念头。
有什么要对教师说的
讲的确实有点快,虽说后来慢了点,但是一开始的确挺快,特别是链表,我自己觉得两节课听的不算很懂,后来代码都是在同学的帮助下才完成的,剩下就没有什么了。老师在课上对我们还是挺好的,遇到我们不懂的地方可以变着方法的解释出来。