九度機試1475 IP數據報解析 北郵計算機2012年

真不知道爲什麼寫成這鳥樣才能AC,之前用C++寫過一個邏輯清晰的,始終不能AC,於是把換成C語言,
所有的循環用手寫出來(我真不想這樣),居然AC了,代碼看起來真爛,可是T M D居然AC了。。。。
。欲哭無淚啊。。。M*D,浪費了老子兩個小時,沒檢查出任何錯誤。九度,你妹!!!
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
    int n=0,i=0,offset=0;;
    char bag[1000]={0};
    int num[1000]={0};
    scanf("%d",&n);
    gets(bag);
    while(n--){
        int index=0,dest[4]={0};
        gets(bag);
        for(int j=0;j<strlen(bag);j++){
            char c=bag[j];
            if(c!=' '){
                if(isdigit(c)){
                    c=c-'0';
                }else{
                    c =c-'a'+10;
                }
                num[index]=c;
                index++;
            }
        }
        offset=num[1]*8;
        dest[0]=num[32]*16+num[33];
        dest[1]=num[34]*16+num[35];
        dest[2]=num[36]*16+num[37];
        dest[3]=num[38]*16+num[39]; 
        printf("Case #%d\n",++i);
        printf("Total length = %d bytes\n",num[4]*256*16+num[5]*256+num[6]*16+num[7]);
        printf("Source = %d.%d.%d.%d\n",num[24]*16+num[25],num[26]*16+num[27],num[28]*16+num[29],num[30]*16+num[31]);
        printf("Destination = %d.%d.%d.%d\n",dest[0],dest[1],dest[2],dest[3]);
        printf("Source Port = %d\n",num[offset]*256*16+num[1+offset]*256+num[2+offset]*16+num[3+offset]);
        printf("Destination Port = %d\n\n",num[4+offset]*256*16+num[5+offset]*256+num[6+offset]*16+num[7+offset]);
    }
    return 0;
}
 
/**************************************************************
    Problem: 1475
    User: 愛理momoko
    Language: C
    Result: Accepted
    Time:10 ms
    Memory:916 kb
****************************************************************/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章