| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2319 人关注过本帖, 1 人收藏
标题:短的代码(代码转载)
只看楼主 加入收藏
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏(1)
 问题点数:0 回复次数:13 
短的代码(代码转载)
注,这段代码的本体和创意是转载的(我只对它的输出结果做了小小调整)。它采用了一种“故意”混淆视听的方式来写的,你是否能够读懂并解释这段很短的代码呢?
程序代码:
#include <stdio.h>
void main(char _)
{
    for(--_;putchar(_++["Ij-Ipx!bsf!zpv\"\1"]-1););
}


[[it] 本帖最后由 hoodlum1980 于 2008-3-20 17:54 编辑 [/it]]
搜索更多相关主题的帖子: 代码 void 本体 main include 
2008-03-20 14:20
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
这个cosdos 太阳已做过了,大家都看到了.
咱们不好替人家解释.
2008-03-20 14:27
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
附:另一段纯属恶搞的代码。里面有很多BBS表情。
程序代码:
#include <stdio.h>
main()
{
    int _,_____,bbb,T_T,o,O,I;
    int a,b,c,d,e;
    I=(O=(o=(T_T=(bbb=(_____=(_=1)*2)*2)*2)*2)*2)*2;
    a=-_-bbb;
    b=-_||bbb;
    c=-_____-bbb;
    d=T_T;
    e=~~~I>_<~~~!bbb;
    printf("%d %d %d %d %d\n",a,b,c,d,e);
    printf("%d\n",I<O>_<O>I==O^_^O?_-_:-_-bbb^_^o);
}
2008-03-20 21:40
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
对第一段代码的解释:
/*
其实_是参数个数,对于直接运行的程序来说,表示只有第一个参数,即可执行文件路径,因此它就为1.

注意:
     a[b] 即*(a+b), 即*(b+a),即b[a];
     a[i]是*(a+i),因此a[i]也可以写为i[a];(一个常数+一个指针,结果还是一个指针)

_++["J!Mpwf!Zpv\24\1"]-1);
把_换成i
i++["J!Mpwf!Zpv\24\1"]-1);
也就是
("J!Mpwf!Zpv\24\1")[i++] -1

因此每个字符是要打印输出字符的后一个字符,例如要打出I,输入的是I后面的J。打印空格,输入的是后面的'!'。
\24表示输入的是8进制数,即十进制的20。19打出来是两个连续叹号(注意,是一个特殊字符,不同于 '!').

-------------------------------------------------
    常用的转义字符及其含义
-------------------------------------------------
转义字符 转义字符的意义
\n 回车换行
\t 横向跳到下一制表位置
\v 竖向跳格
\b 退格
\r 回车
\f 走纸换页
\\ 反斜线符"\"
\' 单引号符
\a 鸣铃
\ddd 1~3位八进制数所代表的字符
\xhh 1~2位十六进制数所代表的字符
广义地讲,C语言字符集中的任何一个字符均可用转义字符来表示。表2.2中的\ddd和\xhh正是为此而提出的。
ddd和hh分别为八进制和十六进制的ASCII代码。如\101表示字?quot;A" ,\102表示字母"B",\134表示反斜线,
\XOA表示换行等。

int putchar(int c);向stdout写入一个字符,即打印一个字符。返回值是被写入的字符。所以上面的输入参数最后一个字符必须是\1,这样才能结束循环。
int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
这里的第一个参数,argc总是大于等于1。argv是中存储了命令行参数的字符串数组,最后一个总是NULL。

命令行来源于文件拖放,运行或cmd下输入的命令行等。

当从应用程序直接启动时(例如双击),一般argc=1,argv[0]是程序文件的路径。但是不要用argv参数来获取程序路径,因为如果用户使用CreateProcess函数启动一个进程,则argv参数由CreateProcess参数指定,所以可能不准确。

在上面的代码中,main函数只提供第一个参数,直接启动程序时,其值为1.

*/
2008-03-20 21:52
rayxiang
Rank: 1
等 级:新手上路
帖 子:82
专家分:0
注 册:2007-10-22
收藏
得分:0 
强烈建议各位大侠写的简单些   让我们对C不时很好的菜鸟好好学学

...........没 有 音 乐 就 没 法 活............ ...........不 会C 语 言 我 可 以 问...........
2008-03-20 22:00
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
我也被绕住了.."J!Mpwf!Zpv\24\1"相当于这个过程char *p="J!Mpwf!Zpv\24\1",("J!Mpwf!Zpv\24\1")[i++] -1=p[i++]-1;底下就好理解了

学习需要安静。。海盗要重新来过。。
2008-03-20 22:35
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
ms这段代码是从我那里抄来的,原版的没有\24,是我自己加上去的

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-03-21 08:21
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
#include <stdio.h>
#define U n+g
#define J m+f
#define G gotoxy
#define C printf
#define A rand
                                                               
                                     int k                     
            ,f,g                    ,q;int                     
           p,m=0,                   n=1,d=0                     
           ,e=0,a                   =2,b=5,c                    
           =5,t=1                   ,M[22][76
            ]={-1                   ,4};L(){
            return          a        % 2?(f=
            0,g=a          /2?-1:1):(g=0,f=a/2    ?1:-         
            1),(!         M[J][U]||M[J][U]==10||M[J][U]
    ==-1    );}K(   ){M   [J][U]==-1&&E(),M[J][U]!=10?F(
    m,n):(t=0),M[J][U]=(  a+2)%4+1;}D(){a-0||((J>=0&&L()        
    )?(K(),m=J):(a=A()%2  ?3:1))                ,a-2||((        
    J<22&&L())?(K(),m=J): (a=A(                    )%2?1:      
    3)),a   -1||(   (U<   76&&L   (                 ))?(K
    (),n=   U):(a   =A()  %2?0   :2))                ,a-        
    3||((   U>=0&&   L()  )?(K   (),n=               U):
     (a=A   ()%2?    2:0  ));}   F(x,y       ){M     [x]        
     [y]    %2?(p    =0,  q=M    [x][      y]/2?1    :-1        
     ):(q   =0,p=   M[x]  [y]    /3?-   1:1),M[x+    q][        
     y+p]==-1?(M[x+q][y+  p]=   0,b=x +q,c=y+p,M[    x]         
     [y]=-1):F(x+q,y+p);   }    R(){int x,y;x=A                 
     ()%22,y=A()%76,M[x         ][y]==0?(M[                     
      x][y  ]=10,               G(y+1                           
            ,x+2)    ,C         ("X")                           
            ):R()   ;}P         (){G(                           
            c+1,b   +2),        C(" "                           
            ),G(n   +1,m+       2),C(
           "O"),G(e+1,d+2)       ,C("o"
         ) ;}E(){G(10,10),       C("The"                     "g"
"ame is over!"), getch( ),      exit();                 }main
(){R();while(1){     while      (bioskey(1)          ==0)d=m,
e=n,D(),P(),t         ==0&&      (R(),t = 1),delay ( 4500);k=
bioskey(0)>>           8,k        -75||(a=3),k-77||(a=1),k-72
||(a=0)                 ,         k-80||(a=2) ;}}


楼主这么有兴趣,化简一下这个吧  :)

[[it] 本帖最后由 Knocker 于 2008-3-21 08:46 编辑 [/it]]

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-03-21 08:43
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2008-03-21 09:04
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
看这些代码再简化..非发狂不可...呵呵

学习需要安静。。海盗要重新来过。。
2008-03-21 09:05
快速回复:短的代码(代码转载)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046040 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved