所在的位置: c++ >> 学习资料 >> 有哪些有趣的C程序

有哪些有趣的C程序

一个比较经典的例子是年得奖的代码,这个程序直接估算字符面积求圆周率,可读性算是比较友好的:?westley.c?

#define_F--00

-F-OO--;intF=00,OO=00;main(){F_OO();printf(%1.3f\n,4.*-F/OO/OO);}F_OO(){_-_-_-__-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-_-_-_-_-__-_-_-_-_-_-_-__-_-_-_}

注:这段程序实际上是年修正过的,由于88年原来程序代码没有考虑到ANSIC的编译标准,导致在处理例如

#define_-i-_

的时候,老旧的KR框架和ANSIC结果不一样:KR是直接的

--i

而ANSIC编译结果实际上等同于

-(-i)

因此之前的程序现在运行的话出来的结果是0.,而不是3.。修正过的程序就没有这个问题了。又比如13年有个只有一行的程序,可以判断从FranklinPierce往后的31位美国总统是民主党还是共和党,这个就有点不知所云了:?cable1.c?

main(intriguing,char**acters){puts(1[acters-~!(*(int*)1[acters]%%%riguing)]);}

食用方法:

makecable1./cable1obamapublicandemocrat./cable1bushpublicandemocrat

总统名要小写,publican和democrat顺序不能颠倒。经

chuazier提醒,历史上的确有重名的美国总统,除了Johnson之外,还有TheodoRoosevelt/FranklinD.Roosevelt,程序原作者注明用

./cable1rooseveltpublicandemocrat

表示TheodoRoosevelt,而用

./cable1fdrpublicandemocrat

表示FranklinD.Roosevelt。这一行代码做了这么多事:首先查询输入的总统的名字,然后在一个look-uptable里面找出对应的政治阵营,再输出出来。问题在于这31位总统名字存放在哪里?而这个look-uptable又存放在哪里?有趣的是,IOCCC的评委还提到,你甚至可以用这个程序检测一些IT大佬的Mac/PC阵营:

./cable1CooperMacPC./cable1NollMacPC./cable1BroukhisMacPC./cable1JobsMacPC./cable1GatesMacPC./cable1BallmerMacPC

难道这个程序暴露了Ballmer离开微软的真相?最近几届比赛的代码为了增加混乱程度,代码越来越长,可读性也越来越差(不过话说回来,让可读性变得越来越差其实原本就是这个比赛的第一宗旨吧),不少代码甚至本身就是个ASCIIartwork……比如11年有一只阿卡林:?akari.c?为了保持美观我就直接上图了。源代码见此:







































治白癜风的中药方
哪家治疗白癜风医院好



转载请注明:http://www.nydjfy.com/xxzl/820.html

  • 上一篇文章:
  •   
  • 下一篇文章: