第四次作业
作业要求一
实践最简答的项目wordcount,必须完成其中的基本功能,若可以完成其他功能给予加分。完成后请将你的设计思路、主要代码写在本次作业博客里。
(1)设计思路:
第一步:根据argv1判断执行的函数;
第二步:若执行函数为统计字符,则根据EOF进行循环,并且返回循环次数;
第三步:若执行函数为统计单词数,则在EOF循环内在执行判断,当z判断字符为英文字母时标记FLAG为1,否则若flag=1时进行单词计数,并将FLAG还原为0,返回计数值;
第四步若执行函数为统计行数,则在EOF循环内根据'/n'字符进行计数,并将计数初值设定为1,返回计数值;
第五步:输出结果;
(2)实验代码:
#include<stdio.h>
#include<stdlib.h>
int zifu(char *file);
int danci(char *file);
int hangshu(char *file);
int main(int argc,char *argv[])
{
int n;
if(strcmp(argv[1],"-c")==0)
{
n=zifu(argv[2]);
printf( "%s内的字符数为%d\n",argv[2],n);
}
if(strcmp(argv[1],"-w")==0)
{
n=danci(argv[2]);
printf("%s内的单词数为%d\n",argv[2],n);
}
if(strcmp(argv[1],"-l")==0)
{
n=hangshu(argv[2]);
printf("%s内的行数为%d\n",argv[2],n);
}
return 0;
}
int zifu(char *file)
{
int L=0;
FILE *fp;
char a=fgetc(fp);
fp = fopen(file,"r");
if(fp==NULL)
{
printf("Open Error!\n");
return 0;
}
else
{
while(a!=EOF)
{
L++;
a=fgetc(fp);
}
}
fclose(fp);
return L;
}
int danci(char *file)
{
int L=0,flag=0;
FILE *fp;
fp=fopen(file,"r");
char a=fgetc(fp);
if(fp == NULL)
{
printf("Open Error!\n");
return 0;
}
else
{
while(a!=EOF)
{
if(a>='a'&&a<='z'||a>='A'&&a<='Z')
{
flag=1;
}
else
{
if(flag==1)
{
L++;
flag=0;
}
}
a=fgetc(fp);
}
}
fclose(fp);
return L;
}
int hangshu(char *file)
{
int L=1;
FILE *fp;
char ch=fgetc(fp);
fp=fopen(file,"r");
if(fp==NULL)
{
printf("Open Error!\n");
return 0;
}
else
{
while(ch!=EOF)
{
if(ch=='\n')
{
L++;
}
ch=fgetc(fp);
}
}
fclose(fp);
return L;
}
(3)运行结果:
字符
单词
行数
要求三、学习总结和进度(30分)
1、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址。
地址:https://git.coding.net/q871057265/lwq.git
2、点评3个同学的本周作业,并邀请3名同学点评你的作业。
3、请用表格和折线图呈现你本学期的代码行数和所用时间、博客字数和所用时间
4、本学期课程即将结束,请总结下你本课程的收获,回顾第0次作业,你是否实现了你的目标?
本学期我对自己是不满意的,当然课程我觉得还是很好的,延续自上学期的讲课及作业方式我作为一个一班的学生还是非常喜欢的,说的收获,我认为最大的收获还是知识上的积累,毕竟将来大有可能把C语言作为工作,每一份知识对我来说都是弥足珍贵的,然而本学期感觉各种繁杂琐事缠身,作业质量下降的很明显,提交时间往往赶不及提交一个完整的作业,还希望老师能多多见谅。回望第0次作业,也是让我分外惭愧,第0次作业中我多次说到要多练多听,每日定量,然而时至今日,我也没有哪一个星期能做到每日定量,上课时也容易走神,要说是否对自己满意,那也实在违心。
5、你对目前的上课和作业方式(上课讲解+PTA+博客)有何意见和建议?
对于我们现在的上课方式,我觉得还是很不错的,现在我们上课采取的课堂+PTA+博客作业的方式确实很好,博客能让我们梳理一个学习阶段下来我们的知识掌握程度并且进行自我反思,PTA更是一个让我们锻炼自我,验证知识的实践平台,我觉得这个方法很适合我。同时我觉得老师如果能够多布置几道PTA的题目,并且能在作业截止前讲解一些,而不是在结束后讲解,我感觉更好,毕竟我们现在代码反馈的主要平台就是PTA了;
6、终于我们即将不再是师生。当你结束本课程,你和我就站在同样的位置上,我将不再基于学校授权和知识、经验 (年龄?)上的优势而对你的自由有任何干扰。除发布成绩以外,我最后一次行使教师特权: 请问你有什么要对教师 (我)说的,建议、抱怨、希望……多谢。
我觉得老师讲的内容还是很充实的,同时我也觉得一边讲知识点一边实机敲代码是一种不错的授课方式,同时老师还常常为我们推荐一些有价值的资源,这点我觉得对我们这些初学者来说太有必要了。唯一我感觉不好的地方是感觉上课的节奏还是有点赶。