下面的六个程序片段主要完成这些事情:

  1. 输出Hello, World
  2. 混乱C语言的源代码

下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。

(PS:main前的void是我加上的,VC编译通过)
1 、
#define _________ }  
#define ________ putchar 
#define _______ void main  
#define _(a) ________(a);  
#define ______ _______(){  
#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)  
#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)  
#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)  
#define _____ __ ___ ____ _________  
#include
<stdio.h>  
_____

2、(PS: 第一行的*z=(int*)&y; 原本是*z=&y;)
#include<stdio.h>  
main(){  
int x=0,y[14],*z=(int*)&y;*(z++)=0x48;*(z++)=y[x++]+0x1D;  
*(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;  
*(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;  
*(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;  
*(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;  
x
=*(--z);while(y[x]!=NULL)putchar(y[x++]);  
}

3、
#include<stdio.h>  
#define __(a) goto a;  
#define ___(a) putchar(a);  
#define _(a,b) ___(a) __(b);  
void main()  
{ _:__(t)a:_(
'r',g)b:_('$',p)  
c:_(
'l',f)d:_(' ',s)e:_('a',s)  
f:_(
'o',q)g:_('l',h)h:_('d',n)  
i:_(
'e',w)j:_('e',x)k:_('\n',z)  
l:_(
'H',l)m:_('X',i)n:_('!',k)  
o:_(
'z',q)p:_('q',b)q:_(',',d)  
r:_(
'i',l)s:_('w',v)t:_('H',j)  
u:_(
'a',a)v:_('o',a)w:_(')',k)  
x:_(
'l',c)y:_('\t',g)z:___(0x0)} 

4、
原本为:
int n[]={0x48,  
0x65,0x6C,0x6C,  
0x6F,0x2C,0x20,  
0x77,0x6F,0x72,  
0x6C,0x64,0x21,  
0x0A,0x00},*m=n;  
main(n){putchar 
(
*m)!='\0'main  
(m
++):exit(n++);} 

修改后为
#include
<stdio.h>
#include 
<stdlib.h>
int n[]={0x48,  
0x65,0x6C,0x6C,  
0x6F,0x2C,0x20,  
0x77,0x6F,0x72,  
0x6C,0x64,0x21,  
0x0A,0x00},*m=n;  
void mainO(int n){putchar 
(
*m)!='\0'?mainO  
(
*m++):exit(n++);} 
void main()
{mainO(
0);}

5、
#include <stdio.h>
void main(){int i,n[]={(((1<<1)<<(1<<1)<<(1<<  
1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1  
<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(  
1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1  
<<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1  
<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1  
<<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1  
<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1  
)))
-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1  
<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(  
1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1  
)
<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1)))  
-((1<<1)<<(1<<(1>>1)))),((1<<1)<< (1<<1)  
<<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<<  
1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<<  
1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1  
<<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1  
)
<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1  
<<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< (  
1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1)  
<<(1<<(1>>1)))-((1<<1<<(1<< (1>>1)))),  
(((
1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1  
<<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>>  
1)))), (((1<<1)<<(1<<1<<(1<<1))+(1<<(1  
>>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<(  
1>>1))) + (1<< (1>>1)))}; for(i=(1>>1);i  
<(((1<<1<<(1<<1))+((1 <<1)<< (1<<(1>>1  
))) 
+ (1<<1)); i++) printf("%c",n[i]); }

6、下面的程序只能由C++的编译器编译(比如:g++)
#include <stdio.h>  
#define _(_) putchar(_);  
int main(void){int i = 0;_(  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++i)_(++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++i)_(++++++++++++++  
i)_(
--++i)_(++++++i)_(------  
----------------------------  
----------------------------  
----------------------------  
----------------------------  
----------------i)_(--------  
----------------i)_(++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++++  
++++++++++++++++++++++++++i)  
_(
----------------i)_(++++++  
i)_(
------------i)_(--------  
--------i)_(----------------  
----------------------------  
----------------------------  
----------------------------  
----------------------------  
------i)_(------------------  
----------------------------  
i)
return i;}