• online_judge_1475


    这道题目我测试了好多次都没问题,但是就是无法AC,十分愤怒。我编程习惯十分差,谁要是发现Bug。求指点!

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    typedef struct SString
    {
        char e[200];
    }SString;
    typedef struct IP
    {
        int a;
        int b;
        int c;
        int d;
    }IP;
    typedef struct S
    {
        int len;
        IP source;
        IP destination;
        int source_port;
        int destinstion_port;
    }S;
    int tran(char e)
    {
        if(e>='0'&&e<='9') return e-'0';
        else if(e>='a'&&e<='z') return e-'a'+10;
        return 0;
    }
    int main()
    {
        int n,i;
        SString *str;
        S *Node;
        int x;
        while(scanf("%d",&n)!=EOF)
        {
            getchar();
            str=(SString *)malloc(n*sizeof(SString));
            Node=(S *)malloc(n*sizeof(S));
            for(i=0;i<n;i++)
                gets(str[i].e);
            for(i=0;i<n;i++)
            {
                x=4*tran(str[i].e[1]);
                Node[i].len=16*256*tran(str[i].e[6])+256*tran(str[i].e[7])+
                16*tran(str[i].e[9])+tran(str[i].e[10]);
                Node[i].source.a=tran(str[i].e[36])*16+tran(str[i].e[37]);
                Node[i].source.b=tran(str[i].e[39])*16+tran(str[i].e[40]);
                Node[i].source.c=tran(str[i].e[42])*16+tran(str[i].e[43]);
                Node[i].source.d=tran(str[i].e[45])*16+tran(str[i].e[46]);
                Node[i].destination.a=tran(str[i].e[48])*16+tran(str[i].e[49]);
                Node[i].destination.b=tran(str[i].e[51])*16+tran(str[i].e[52]);
                Node[i].destination.c=tran(str[i].e[54])*16+tran(str[i].e[55]);
                Node[i].destination.d=tran(str[i].e[57])*16+tran(str[i].e[58]);
                Node[i].source_port=4096*tran(str[i].e[3*x])+256*tran(str[i].e[3*x+1])+
                16*tran(str[i].e[3*x+3])+tran(str[i].e[3*x+4]);
                Node[i].destinstion_port=4096*tran(str[i].e[3*x+6])+256*tran(str[i].e[3*x+7])+
                16*tran(str[i].e[3*x+9])+tran(str[i].e[3*x+10]);
            }
            for(i=0;i<n;i++)
            {
                printf("Case #%d
    ",i+1);
                printf("Total length = %d bytes
    ",Node[i].len);
                printf("Source = %d.%d.%d.%d
    ",Node[i].source.a,
                       Node[i].source.b,Node[i].source.c,Node[i].source.d);
                printf("Destination = %d.%d.%d.%d
    ",Node[i].destination.a,
                       Node[i].destination.b,Node[i].destination.c,Node[i].destination.d);
                printf("Source Port = %d
    ",Node[i].source_port);
                printf("Destination Port = %d
    
    ",Node[i].destinstion_port);
            }
            free(str);
            free(Node);
        }
        return 0;
    }




  • 相关阅读:
    二测试组织
    如何编写测试计划
    C#三种字符串拼接方法的效率对比
    CSS内容溢出时,显示省略号
    JQuery文件上传控件Uploadify文档
    LINQ to Entities 不识别方法“Boolean Like(System.String, System.String)”,因此该方法无法转换为存储表达式。
    Linux 各目录的作用
    服务器注释事项
    资料:mnist.pkl.gz数据包的下载以及数据内容解释
    RockPaperScissorsLizardSpock Python实现
  • 原文地址:https://www.cnblogs.com/abc-24990/p/4257465.html
Copyright © 2020-2023  润新知