题解 | #简单错误记录#

简单错误记录

https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

#include <stdio.h>
#include <string.h>
struct cwjl{
    char lj[100];
    char name[17];
    int hh;
    int time;
};

int main() {
    struct cwjl t[100];
    int n=0,i,b,j,k;
    while (scanf("%s %d",t[n].lj,&t[n].hh) != EOF) {
        t[n].time=1;memset(t[n].name,0,sizeof(t[n].name));//初始化次数以及名字
        int num=0;
        while(t[n].lj[num]!=0) ++num;//计算路径字符长度
	  //找最后一个\符号
        for(i=num;i>0;--i){
            if(t[n].lj[i]==92) break;
        }
        b=num-i-1;//名称长度
        if(b>16) j=num-16;
        else j=i+1;
	  //把名称从路径lj给name储存
        for(k=0;k+j<num;k++)
        t[n].name[k]=t[n].lj[k+j];
        n++;//计算错误记录的总条数
    }
  //去除重复的,重复的计数加一
    for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
    if(t[i].hh==t[j].hh&&strcmp(t[i].name,t[j].name)==0){
        t[i].time++;
        for(k=j;k<n;k++)
        t[k]=t[k+1];
        j--;n--;
    }
  //输出最后八条,如果错误记录比较少,就把全部的都输出
    if(n>8)
        for(i=n-8;i<n;i++)
        printf("%s %d %d\n",t[i].name,t[i].hh,t[i].time);
    else
        for(i=0;i<n;i++)
        printf("%s %d %d\n",t[i].name,t[i].hh,t[i].time);
    return 0;
}

全部评论

相关推荐

身边有人上海、深圳&nbsp;6、7k&nbsp;都去了,真就带薪上班了。
程序员小白条:木的办法, 以后越来越差,还是家附近宅着吧,毕业的人越来越多,岗位都提供不出来,经济又过了人口红利期
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务