作业要求一

最简单的wordcount

具体要求:http://www.cnblogs.com/xinz/p/7426280.html

1.设计思路:

0.0版本设计思路:

第一步:读入用户想要操作的文件名

第二步:找到并打开文件

第三步:if语句匹配相关功能

第四步:实现相关功能并返回结果

第五步:关闭文件

1.0版本设计思路

对0.0版本的优化,如果输入不相关的字符程序提示

2.主要代码

0.0版本的相关代码

#include <stdio.h>
#include <stdlib.h> int main ()
{
char name[20];//用来存需要操作的文件的文件名
char function[2];//用来匹配对相关文件需要进行的操作
int charNum=0,wordNum=0,lineNum=0;//分别用来统计字符数、词数和行数 //读入文件名
printf("请输入需要进行操作文件的文件名:");
scanf("%s",&name); //定义文件指针
FILE *fp; //打开文件
if(( fp = fopen( name, "r" )) == NULL){
printf(" File open error!\n" );
exit(0);
} //读入想要对文件进行的相关操作
printf("请输入需要对文件进行的相关操作\n -c统计文件中的字符数\n -w统计文件中的词数\n -l统计文件的行数\n");
scanf("%s",&function); //匹配读入的功能并操作文件 //统计文件字符数
if((function[0]=='-')&&(function[1]=='c')){
char ch;
ch = fgetc(fp);//fgetc(文件名)函数从指定文件中读取一个字符EOF用来检测是否到文件的末尾
while(ch!=EOF){
charNum++;
ch = fgetc(fp);
}
charNum--;
printf("文件中的字符数为:%d",charNum);
} //统计文件词数
if((function[0]=='-')&&(function[1]=='w')){
char ch;
while(feof(fp)==0){
fscanf(fp,"%s",&ch);
wordNum++;
}
wordNum--;
printf("文件中的词数为:%d",wordNum); } //统计文件行数
if((function[0]=='-')&&(function[1]=='l')){
char ch;
ch = fgetc(fp);
while(ch!=EOF){
if(ch=='\n'){
wordNum++;
}
ch = fgetc(fp);
}
printf("文件中的行数为:%d",wordNum);
} //关闭文件
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
} return 0;
}

3.遇到的相关问题及解决方式



错误分析:第一次写的时候function是一个字符串,在使用if匹配的时候为报多字符常数常数异常

解决方法:将function写成一个字符数组分别比对两个字符是否匹配

1.0版本主要代码

#include <stdio.h>
#include <stdlib.h> int main ()
{
char name[20];//用来存需要操作的文件的文件名
char function[2];//用来匹配对相关文件需要进行的操作
int charNum=0,wordNum=0,lineNum=0;//分别用来统计字符数、词数和行数 //读入文件名
printf("请输入需要进行操作文件的文件名:");
scanf("%s",&name); //定义文件指针
FILE *fp; //打开文件
if((fp = fopen( name, "r" )) == NULL){
printf(" File open error!\n" );
exit(0);
} //读入想要对文件进行的相关操作
printf("请输入需要对文件进行的相关操作\n -c统计文件中的字符数\n -w统计文件中的词数\n -l统计文件的行数\n");
scanf("%s",&function); //匹配读入的功能并操作文件 //统计文件字符数
if((function[0]=='-')&&(function[1]=='c')){
char ch;
ch = fgetc(fp);//fgetc(文件名)函数从指定文件中读取一个字符EOF用来检测是否到文件的末尾
while(ch!=EOF){
charNum++;
ch = fgetc(fp);
}
printf("文件中的字符数为:%d",charNum);
} //统计文件词数
else if((function[0]=='-')&&(function[1]=='w')){
char ch;
while(feof(fp)==0){
fscanf(fp,"%s",&ch);
wordNum++;
}
wordNum--;
printf("文件中的词数为:%d",wordNum); } //统计文件行数
else if((function[0]=='-')&&(function[1]=='l')){
char ch;
ch = fgetc(fp);
while(ch!=EOF){
if(ch=='\n'){
wordNum++;
}
ch = fgetc(fp);
}
wordNum++;
printf("文件中的行数为:%d",wordNum);
}
else{
printf("输入错误!没有对应功能\n 请关闭窗口重新运行程序。");
} //关闭文件
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
} return 0;
}
2.0版本:加入argc argv[]

操作过程中出现的错误:字符集编码问题





解决办法:将所有提示字符串全部换成英文

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main(int argc, char* argv[])
{
//如果用命令行操作,默认第一个参数为要操作的文件名argv[1],第二个参数是匹配的操作argv[2]
if(argc==1){
char name[20];//用来存需要操作的文件的文件名
char function[2];//用来匹配对相关文件需要进行的操作
int charNum=0,wordNum=0,lineNum=0;//分别用来统计字符数、词数和行数 //读入文件名
printf("Please enter the file name that needs to be done:");
scanf("%s",&name); //定义文件指针
FILE *fp; //打开文件
if((fp = fopen( name, "r" )) == NULL){
printf(" File open error!\n" );
exit(0);
} //读入想要对文件进行的相关操作
printf("Please enter the relevant operation that needs to be done to the file:\n -c The number of characters in a statistical file.\n -w The number of words in a statistical document.\n -l The number of rows in a statistical file.\n");
scanf("%s",&function); //匹配读入的功能并操作文件 //统计文件字符数
if((function[0]=='-')&&(function[1]=='c')){
char ch;
ch = fgetc(fp);//fgetc(文件名)函数从指定文件中读取一个字符EOF用来检测是否到文件的末尾
while(ch!=EOF){
charNum++;
ch = fgetc(fp);
}
printf("The number of characters in the file is:%d",charNum);
} //统计文件词数
else if((function[0]=='-')&&(function[1]=='w')){
char ch;
while(feof(fp)==0){
ch=fgetc(fp);
fscanf(fp,"%s",&ch);
wordNum++;
}
wordNum--;
printf("The number of words in the document is:%d",wordNum); } //统计文件行数
else if((function[0]=='-')&&(function[1]=='l')){
char ch;
ch = fgetc(fp);
while(ch!=EOF){
if(ch=='\n'){
wordNum++;
}
ch = fgetc(fp);
}
wordNum++;
printf("The number of rows in the file is:%d",wordNum);
}
else{
printf("Input error!There is no corresponding function\n Please close the window and rerun the program.");
} //关闭文件
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
} }
else if(argc==2){
char function[2];//用来匹配对相关文件需要进行的操作
int charNum=0,wordNum=0,lineNum=0;//分别用来统计字符数、词数和行数 //定义文件指针
FILE *fp;
//打开文件
if((fp = fopen( argv[1], "r" )) == NULL){
printf(" File open error!\n" );
exit(0);
}
//读入想要对文件进行的相关操作
printf("Please enter the relevant operation that needs to be done to the file:\n -c The number of characters in a statistical file.\n -w The number of words in a statistical document.\n -l The number of rows in a statistical file.\n");
scanf("%s",&function); //匹配读入的功能并操作文件
//统计文件字符数
if((function[0]=='-')&&(function[1]=='c')){
char ch;
ch = fgetc(fp);//fgetc(文件名)函数从指定文件中读取一个字符EOF用来检测是否到文件的末尾
while(ch!=EOF){
charNum++;
ch = fgetc(fp);
}
printf("The number of characters in the file is:%d",charNum);
} //统计文件词数
else if((function[0]=='-')&&(function[1]=='w')){
char ch;
while(feof(fp)==0){
fscanf(fp,"%s",&ch);
wordNum++;
}
wordNum--;
printf("The number of words in the document is:%d",wordNum);
} //统计文件行数
else if((function[0]=='-')&&(function[1]=='l')){
char ch;
ch = fgetc(fp);
while(ch!=EOF){
if(ch=='\n'){
wordNum++;
}
ch = fgetc(fp);
}
wordNum++;
printf("The number of rows in the file is:%d",wordNum);
}
else{
printf("Input error!There is no corresponding function\n Please close the window and rerun the program.");
}
//关闭文件
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}
else if(argc==3){
int charNum=0,wordNum=0,lineNum=0;//分别用来统计字符数、词数和行数 //定义文件指针
FILE *fp;
//打开文件
if((fp = fopen( argv[1], "r" )) == NULL){
printf(" File open error!\n" );
exit(0);
}
//统计文件字符数
if(!strcmp(argv[2],"-c")){
char ch;
ch = fgetc(fp);//fgetc(文件名)函数从指定文件中读取一个字符EOF用来检测是否到文件的末尾
while(ch!=EOF){
charNum++;
ch = fgetc(fp);
}
printf("The number of characters in the file is:%d",charNum);
} //统计文件词数
else if(!strcmp(argv[2],"-w")){
char ch;
while(feof(fp)==0){
fscanf(fp,"%s",&ch);
wordNum++;
}
wordNum--;
printf("The number of words in the document is:%d",wordNum);
} //统计文件行数
else if(!strcmp(argv[2],"-l")){
char ch;
ch = fgetc(fp);
while(ch!=EOF){
if(ch=='\n'){
wordNum++;
}
ch = fgetc(fp);
}
wordNum++;
printf("The number of rows in the file is:%d",wordNum);
}
//关闭文件
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
}
return 0;
}

在命令行中的操作截图:

学习进度总结:

1.我的Github地址:https://github.com/XINJY/The-homework-of-C

上传成功截图:今天总是上传失败,可能是网络问题,待上传成功之后回来补截图

emmmm看来不是网的原因翻墙之后依然传不上,哪天成功了一定回来补图

终于上传成功了,说好的回来补图

2.点评的同学

袁中:http://www.cnblogs.com/2719610441qqcom/p/8992324.html

李伍壹:http://www.cnblogs.com/chenxidream/p/8992880.html

姜健:http://www.cnblogs.com/jj990519/p/8992796.html

申怡苗:http://www.cnblogs.com/Vinecy/p/8992802.html

3.图表和折线图

最后一次作业是查着各种资料一边写着敲着代码一边写着博客到底用了多长时间我自己都不知道

博客字数太多单独做了折线图





4、本学期课程即将结束,请总结下你本课程的收获,回顾第0次作业,你是否实现了你的目标?

本课程的收获:专业知识层面的就不一一列举了,说说博客作业吧,还记得课程刚开始的时候,那个时候的我还不知道什么是博客作业,更不知道该怎么写所谓的博客作业。现在我可以流畅的写下自己的解题思路,娴熟的使用ProcessOn画出合格的流程图,学会了简单的使用那个从前只在别人口中听说过的Github,能够熟练的使用Markdown的简单语法对自己的博客进行排版,能特别认真的去追究一个报错的错误到底出现在哪里到底该如何去描述这个错误到底该如何去改正这个错误,这些都是写博客作业带来的收获。

第0次作业:http://www.cnblogs.com/X-JY/p/8516188.html

再次回顾第0次作业仿佛那个斗志昂扬的自己就在昨天,不知不觉9个周已经过去了,这可能是我最后一次上C语言课,但我的C语言学习历程绝对不会就此打住。

好了回到正题,下面开始回顾我的第0次作业目标的实现情况:理想总是比现实丰满很多,那所谓的书籍并根本就没有翻开,那所谓的锻炼项目根本就没有去找,虽然逼着自己认真学习但还是会有上课走神的时候。总的来说,当时的目标也实现了也没有实现,我相信在未来的日子里我会做的更好,我永远都欠着这个世界一个更优秀的自己。

5、你对目前的上课和作业方式(上课讲解+PTA+博客)有何意见和建议?

6、终于我们即将不再是师生。当你结束本课程,你和我就站在同样的位置上,我将不再基于学校授权和知识、经验 (年龄?)上的优势而对你的自由有任何干扰。除发布成绩以外,我最后一次行使教师特权: 请问你有什么要对教师 (我)说的,建议、抱怨、希望……多谢。

为了避免建议上的重复我将5和6放在了一起(当然更多的是因为我懒),首先一个学期下来特别感谢老师的辛勤付出,我知道每次作业我们写一份非常费时间,老师评论批改七十多份也很费时间。但是在这最后的时刻,我还是想抱怨一句“博客作业真的很难写!!!”。建议老师在下次教授跟我们同样类型的同学时先了解一下相关的情况,我们的课和各种活动真的很多(虽然这些都不能作为我们不写作业的理由)我们的精力毕竟有限,想用有限的精力及时高质量的完成所有的任务有时真的很困难。有些时候我也有些厌烦我们现在的形式,明明我写一道题目十几分钟就能完成,但是我要用半个多小时甚至一个小时来写这道题的博客,往往我们每次上完课后留下的作业题目还并不是一道题目,我认为作业不求量多但求精细,比如我们可以每次上完课之后只要求大家认真精细的抠一道题目,从一道中学习巩固知识,其他的题目可以作为选做题不做硬性的要求,认为自己做的不够好的还可以利用选做题来巩固和学习。抱怨归抱怨最后还是要对我们的牛老师表示由衷的感谢。

C高级第四次作业的更多相关文章

  1. Java第四次作业——面向对象高级特性(继承和多态)

    Java第四次作业--面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能, ...

  2. Java第四次作业,面向对象高级特性(继承和多态)

    Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...

  3. Java第四次作业—面向对象高级特性(继承和多态)

    Java第四次作业-面向对象高级特性(继承和多态) (一)学习总结 1.学习使用思维导图对Java面向对象编程的知识点(封装.继承和多态)进行总结. 2.阅读下面程序,分析是否能编译通过?如果不能,说 ...

  4. 2018上C语言程序设计(高级)博客作业样例

    要求一(20分) 完成PTA中题目集名为<usth-C语言高级-第1次作业>中的所有题目. 要求二 PTA作业的总结(20分+30分) 将PTA第1次作业作业中以下2道题的解题思路按照规定 ...

  5. C高级第三次作业

    C高级第三次作业(1) 6-1 输出月份英文名 1.设计思路 (1)算法: 第一步:定义整型变量n,字符指针s,输入一个数赋给n. 第二步:调用函数getmonth将值赋给s. 第三步:在函数getm ...

  6. C高级第二次PTA作业

    6-7 删除字符串中数字字符 1.设计思路: (1)算法: 第一步:定义一个字符数组item,输入一个字符串赋给字符数组item.调用函数delnum, 第二步:在函数delnum中定义循环变量i=0 ...

  7. 耿丹CS16-2班第四次作业汇总

    Deadline: 2016-10-13 12:00 作业内容 实验3-1 分别使用while循环.do while循环.for循环求1+2+3+ --+100. 实验3-2 分别使用while循环. ...

  8. 第四次作业——WORDSEARCH小游戏

    “谁想出来的这么缺德的题目啊!!!!”一个声音在我心中回荡 这个题目很早就在课堂上公布了,我和我的小伙伴都惊呆了! 这是个毛?根本无从下手的感觉 总是觉得这个小游戏不是程序能给出答案的,因为我的第一印 ...

  9. Stm32高级定时器(四)

    Stm32高级定时器(四) 1 编码器接口模式 1.1 编码器原理 什么是正交?如果两个信号相位相差90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向.根 ...

随机推荐

  1. m_Orchestrate learning system---三十二、数据库字段判断为空时容易出现问题,如何从根本上解决这个问题

    m_Orchestrate learning system---三十二.数据库字段判断为空时容易出现问题,如何从根本上解决这个问题 一.总结 一句话总结:字段禁止为空,设置默认值0即可 禁止 空 默认 ...

  2. UltraDropDown

    private void FruitInit() { //Create some fruit fruits.Add(-1,"apple"); fruits.Add(-2," ...

  3. Confluence 6 从 Crowd 或 JIRA 应用中切换回使用内部用户管理

    如果你的 Confluence 站点当前使用的是 Crowd 或者 Jira 应用程序管理你的用的话,你可以按照下面的步骤切换使用回内部目录管理你的用户. 如果你的 Confluence 站点只有少量 ...

  4. Asp.Net中的sessionState设置

    在web.config中有sessionState的节点配置,sessionState共有4中模式:off,inProc,StateServer,SqlServer. 1. off模式 关闭模式,如果 ...

  5. array_unshift

    <!DOCTYPE html> <html> <body> <?php $a=array(0=>"red",1=>" ...

  6. 名称随id的变化而变化

    $("#user_id").change(function () { var uid = $(this).val(); if (uid == '') { $("#user ...

  7. Type cvc-complex-type.2.4.a: Invalid content was found starting with element 'build'.错误的解决方法

    项目突然间爆出了这样的问题: Description Resource Path Location Typecvc-complex-type.2.4.a: Invalid content was fo ...

  8. python 小练习 9

    还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 .............. 先 ...

  9. java并发编程:线程安全管理类--原子操作类--AtomicReference<V>

    1.类 AtomicReference<V> public class AtomicReference<V>extends Objectimplements Serializa ...

  10. forget word out a~2

        1● an 不,非,无   2● amphi     两个,两种     3● ad 做,加强: