程序员的资源宝库

网站首页 > gitee 正文

编程作业

sanyeah 2024-03-30 12:57:23 gitee 10 ℃ 0 评论

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-science-class1-2018/homework/11877
这个作业的目标 使自己的c语言编程能力更强,学会一些简单的gitte相关操作
学号 20188402

1.Gitee仓库地址

https://gitee.com/hyx1793979463/project-c/tree/master/

2.代码规则

https://gitee.com/hyx1793979463/project-c/commit/1ad16ddce8f0678905abbc3e1230d7e69adf143e

3.代码实现

1.统计字符数,统计单词数

代码

# include <stdio.h>
int i,z=0,s=0,q=0;
int count=0,word=0; 
void f1(char str[100],char str1[100],char str2[100],char str3[100]); 
int main (void)
  {
 char str[100],str1[100],str2[100],str3[100];
printf ("输入所求字符串:\n");

gets(str);
f1(str,str1,str2,str3);
printf ("单词数: %d %s\n",count,str1);
printf ("数字数:%d %s\n",s,str2);
printf ("字符数:%d %s\n",q,str3);
return 0;
 }
 void f1(char str[100],char str1[100],char str2[100],char str3[100])
 {
for (i=0; str[i] != '\0'; i++)
if ((str[i] >= 'A') && (str[i] <= 'Z') || (str[i] >= 'a') && (str[i] <= 'z'))

 {
if(str[i]==' ')
while((str[i]=getchar())!='\n')
  
        word=0;
    else if(word==0)
    {
        word=1;
        count++;
    }
str1[z++] = str[i];
}
 else if (str[i] >= '0' && str[i] <= '9')
{
str2[s++] = str[i];
}
else
{
str3[q++] = str[i];
} str1[z] = '\0';
  str2[s] = '\0';
str3[q] = '\0'; 
    }

设计思路

三个if语句第一个if把大写英文字母ascii码值在'A''Z'和小写英文字母ascii码值在'a''z'挑出来,第二个if把数字如ascii码值在'0'~'9'挑出来,剩下的就是字符了,统计计数就行了,分别输出对应的个数就行了,比较亮眼的地方就是用了三个一维数组分别储存所对应的三类字符串,最后会把你输入的字符串输出按个数和个数所对应的字符串输出,比较好看,但是缺点:字符数中的空格它不会显示出来。

运行截图

3.统计文本文件中出现次数最多的前10的单词及其词频

代码

#include<stdio.h>
#include<string.h>
struct
{
char str[100]; 
int n;  
}a[99]={"",0},t; 
int main()
{
FILE *fp;
unsigned i,j,times=0;
fp=fopen("test.txt","r");
if(fp==NULL)return 1;
for(i=0;i<99;i++)
{
    fscanf(fp,"%s",a[i].str);
    a[i].n++;  
    for(j=0;j<i;j++)
        if(strcmp(a[i].str,a[j].str)==0) 
        {
            if(a[j].n!=0)a[j].n++; 
            a[i].n=0; 
        }
        times++; 
        if(fgetc(fp)==EOF)break;           
    }
    for(i=0;i<times-1;i++)  
    for(j=0;j<times-1-i;j++)
        if(a[j].n<a[j+1].n) 
        {       
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t; 
        }
        for(i=0;i<10;i++) 
            printf("%s  %d\n",a[i].str,a[i].n);
        return 0;
}

运行截图

4.psp表格

PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
Planning 计划 48 72
? Estimate 估计这个任务需要的时间 48 72
Development 开发 1 1
? Analysis 需求分析(包括学习新技术) 2 2.5
Design Spec 生成设计文档 3 3.5
? Coding 设计复审 2 2
? Code Review 代码复审 1 2
? Code Standard 代码规范 3 3.5
Design 具体设计 4 5
Coding 具体编码 5 6
? Test 测试 0.5 0.5
Reporting 报告 5 6
? Test Repor 测试报告 1 1
? Size Measurement 计算工作量 5 5
? Postmortem & Process Improvement Plan 事后总结并提出改进计划 4 6
合计 40.5 50

5.计算模块部分异常处理说明

开始统计统计的是字母数个数,并不是单词个数,后面改了,修改了第一个if语句那里加了一段单词的判定

6.计算模块部分单元测试展示

安装gcov和搭建lcov环境后

7.学习心得

这次的题目你仔细剖析的话,难度不高,但是对许多人还是有点难度的,难在哪呢,难在就是这个题目的要求有点小复杂,我耐着性子看了起码四五遍才读懂了这次作业到底要做哪些大致的事情,说实话,我现在我感觉我还是有好多东西没做,如命令行程序WordCount.exe input.txt output.txt的实现,看到微信群里的一些提问,fork又是怎么fork的,我这样提交助教会不会看不到我的代码啊,我这样到底fork成功了吗

https://gitee.com/hyx1793979463/project-c/tree/master/

我用c语言写的我难道要dev-c++连远程仓库吗,看我朋友好像使用的是vision studio连接的远程仓库,我准备下它了,慢慢提升,厚积薄发,总的还说自己还远远不够,别急稳住心态,相信自己,未来一片光明。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表