分类: C/C++
2009-11-09 11:43:36
下面的六个程序片段主要完成这些事情:(来源:)
下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。
hello1.c
01.
#define _________ }
02.
#define ________
putchar
03.
#define _______ main
04.
#define _(a) ________(a);
05.
#define ______ _______(){
06.
#define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)
07.
#define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)
08.
#define ____ _(0x72)_(0x6C)_(0x64)_(0x21)
09.
#define _____ __ ___ ____ _________
10.
#include
11.
_____
hello2.c
02.
main(){
03.
int
x=0,y[14],*z=&y;*(z++)=0x48;*(z++)=y[x++]+0x1D;
04.
*(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;
05.
*(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;
06.
*(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;
07.
*(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;
08.
x=*(--z);
while
(y[x]!=NULL)
putchar
(y[x++]);
09.
}
hello3.c
01.
#include
02.
#define __(a)
goto
a;
03.
#define ___(a)
putchar
(a);
04.
#define _(a,b) ___(a) __(b);
05.
main()
06.
{ _:__(t)a:_(
'r'
,g)b:_(
'$'
,p)
07.
c:_(
'l'
,f)d:_(
' '
,s)e:_(
'a'
,s)
08.
f:_(
'o'
,q)g:_(
'l'
,h)h:_(
'd'
,n)
09.
i:_(
'e'
,w)j:_(
'e'
,x)k:_(
'\n'
,z)
10.
l:_(
'H'
,l)m:_(
'X'
,i)n:_(
'!'
,k)
11.
o:_(
'z'
,q)p:_(
'q'
,b)q:_(
','
,d)
12.
r:_(
'i'
,l)s:_(
'w'
,v)t:_(
'H'
,j)
13.
u:_(
'a'
,a)v:_(
'o'
,a)w:_(
')'
,k)
14.
x:_(
'l'
,c)y:_(
'\t'
,g)z:___(0x0)}
hello4.c
01.
int
n[]={0x48,
02.
0x65,0x6C,0x6C,
03.
0x6F,0x2C,0x20,
04.
0x77,0x6F,0x72,
05.
0x6C,0x64,0x21,
06.
0x0A,0x00},*m=n;
07.
main(n){
putchar
08.
(*m)!=
'\0'
?main
09.
(m++):
exit
(n++);}
hello5.c
01.
main(){
int
i,n[]={(((1<<1)<<(1<<1)<<(1<<
02.
1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1
03.
<<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(
04.
1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1
05.
<<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1
06.
<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1
07.
<<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1
08.
<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1
09.
)))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1
10.
<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(
11.
1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1
12.
)<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1)))
13.
-((1<<1)<<(1<<(1>>1)))),((1<<1)<< (1<<1)
14.
<<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<<
15.
1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<<
16.
1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1
17.
<<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1
18.
)<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1
19.
<<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< (
20.
1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1)
21.
<<(1<<(1>>1)))-((1<<1) <<(1<< (1>>1)))),
22.
(((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1
23.
<<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>>
24.
1)))), (((1<<1)<<(1<<1) <<(1<<1))+(1<<(1
25.
>>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<(
26.
1>>1))) + (1<< (1>>1)))};
for
(i=(1>>1);i
27.
<(((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1
28.
))) + (1<<1)); i++)
printf
(
"%c"
,n[i]); }
hello6.cpp
下面的程序只能由C++的编译器编译(比如:g++)
01.
#include
02.
#define _(_)
putchar
(_);
03.
int
main(
void
){
int
i = 0;_(
04.
++++++++++++++++++++++++++++
05.
++++++++++++++++++++++++++++
06.
++++++++++++++++++++++++++++
07.
++++++++++++++++++++++++++++
08.
++++++++++++++++++++++++++++
09.
++++i)_(++++++++++++++++++++
10.
++++++++++++++++++++++++++++
11.
++++++++++i)_(++++++++++++++
12.
i)_(--++i)_(++++++i)_(------
13.
----------------------------
14.
----------------------------
15.
----------------------------
16.
----------------------------
17.
----------------i)_(--------
18.
----------------i)_(++++++++
19.
++++++++++++++++++++++++++++
20.
++++++++++++++++++++++++++++
21.
++++++++++++++++++++++++++++
22.
++++++++++++++++++++++++++++
23.
++++++++++++++++++++++++++++
24.
++++++++++++++++++++++++++i)
25.
_(----------------i)_(++++++
26.
i)_(------------i)_(--------
27.
--------i)_(----------------
28.
----------------------------
29.
----------------------------
30.
----------------------------
31.
----------------------------
32.
------i)_(------------------
33.
----------------------------
34.
i)
return
i;}
0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000 .ELF............ 0000010: 0200 0300 0100 0000 7480 0408 3400 0000 ........t...4... 0000020: 6401 0000 0000 0000 3400 2000 0200 2800 d.......4. ...(. 0000030: 0900 0600 0100 0000 0000 0000 0080 0408 ................ 0000040: 0080 0408 9600 0000 9600 0000 0500 0000 ................ 0000050: 0010 0000 0100 0000 9800 0000 9890 0408 ................ 0000060: 9890 0408 1000 0000 1000 0000 0600 0000 ................ 0000070: 0010 0000 ba10 0000 00b9 9890 0408 bb01 ................ 0000080: 0000 00b8 0400 0000 cd80 bb00 0000 00b8 ................ 0000090: 0100 0000 cd80 0000 4865 6c6c 6f2c 2077 ........Hello, w 00000a0: 6f72 6c64 215c 6e00 0100 0000 0000 0900 orld!\n......... 00000b0: 0900 0000 0100 0000 6400 0000 7480 0408 ........d...t... 00000c0: 0000 0000 4400 0800 7480 0408 0000 0000 ....D...t....... 00000d0: 4400 0900 7980 0408 0000 0000 4400 0a00 D...y.......D... 00000e0: 7e80 0408 0000 0000 4400 0b00 8380 0408 ~.......D....... 00000f0: 0000 0000 4400 0c00 8880 0408 0000 0000 ....D........... 0000100: 4400 0f00 8a80 0408 0000 0000 4400 1000 D...........D... 0000110: 8f80 0408 0000 0000 4400 1100 9480 0408 ........D....... 0000120: 0068 656c 6c6f 2e73 0000 2e73 796d 7461 .hello.s...symta 0000130: 6200 2e73 7472 7461 6200 2e73 6873 7472 b..strtab..shstr 0000140: 7461 6200 2e74 6578 7400 2e64 6174 6100 tab..text..data. 0000150: 2e62 7373 002e 7374 6162 002e 7374 6162 .bss..stab..stab 0000160: 7374 7200 0000 0000 0000 0000 0000 0000 str............. 0000170: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000180: 0000 0000 0000 0000 0000 0000 1b00 0000 ................ 0000190: 0100 0000 0600 0000 7480 0408 7400 0000 ........t...t... 00001a0: 2200 0000 0000 0000 0000 0000 0400 0000 "............... 00001b0: 0000 0000 2100 0000 0100 0000 0300 0000 ....!........... 00001c0: 9890 0408 9800 0000 1000 0000 0000 0000 ................ 00001d0: 0000 0000 0400 0000 0000 0000 2700 0000 ............'... 00001e0: 0800 0000 0300 0000 a890 0408 a800 0000 ................ 00001f0: 0000 0000 0000 0000 0000 0000 0400 0000 ................ 0000200: 0000 0000 2c00 0000 0100 0000 0000 0000 ....,........... 0000210: 0000 0000 a800 0000 7800 0000 0500 0000 ........x....... 0000220: 0000 0000 0400 0000 0c00 0000 3200 0000 ............2... 0000230: 0300 0000 0000 0000 0000 0000 2001 0000 ............ ... 0000240: 0900 0000 0000 0000 0000 0000 0100 0000 ................ 0000250: 0000 0000 1100 0000 0300 0000 0000 0000 ................ 0000260: 0000 0000 2901 0000 3b00 0000 0000 0000 ....)...;....... 0000270: 0000 0000 0100 0000 0000 0000 0100 0000 ................ 0000280: 0200 0000 0000 0000 0000 0000 cc02 0000 ................ 0000290: f000 0000 0800 0000 0b00 0000 0400 0000 ................ 00002a0: 1000 0000 0900 0000 0300 0000 0000 0000 ................ 00002b0: 0000 0000 bc03 0000 2800 0000 0000 0000 ........(....... 00002c0: 0000 0000 0100 0000 0000 0000 0000 0000 ................ 00002d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00002e0: 7480 0408 0000 0000 0300 0100 0000 0000 t............... 00002f0: 9890 0408 0000 0000 0300 0200 0000 0000 ................