2013-03-02 29 views
-1

這很奇怪,這個程序是如何工作的?我無法理解?我很困惑!該程序如何打印印度地圖?

#include "stdio.h" 
main() 
{ 
    int a,b,c; 
    int count = 1; 
    for (b=c=10;a="- FIGURE?, UMKC,XYZHello Folks,\ 
     TFy!QJu ROo TNn(ROo)SLq SLq ULo+\ 
     UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\ 
     NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\ 
     HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\ 
     T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\ 
     Hq!WFs XDt!" [b+++21];) 

     for(; a-- > 64 ;) 
      putchar (++c=='Z' ? c = c/ 9:33^b&1); 
    return 0; 
} 

請自行試用,如果您知道該程序如何打印該地圖,請解釋我。

+0

哦,等等,這是一個騙局! – 2013-03-02 08:12:39

回答

0

編輯:對不起,沒看到欺騙......


去除各種unreadabilities,不必要的和無用的代碼和其他種類混淆後,代碼就相當於這個:

#include "stdio.h" 

int main() 
{ 
    int curr_char, b, c; 

    const char *data = "\ 
    TFy!QJu ROo TNn(ROo)SLq SLq ULo+\ 
    UHs UJq TNn*RPn/QPbEWS_JSWQAIJO^\ 
    NBELPeHBFHT}TnALVlBLOFAkHFOuFETp\ 
    HCStHAUFAgcEAelclcn^r^r\\tZvYxXy\ 
    T|S~Pn SPm SOn TNn ULo0ULo#ULo-W\ 
    Hq!WFs XDt!"; 

    for (b = 0, c = 10; curr_char = data[b];) { 
     b++; 
     for(; curr_char-- > 64 ;) { 
      putchar(++c == 'Z' ? c = c/9 : 33^b & 1); 
     } 
    } 

    return 0; 
} 

基本上程序存儲在字符串中(每行對應於4個字符)的地圖數據,越過由字符串字符,「解碼」它(使用一些數學我沒有理會逆向工程) ,然後打印無論是空間還是'!'在行尾添加標記或換行符。