分类: C/C++
2009-11-09 11:43:36
下面的六个程序片段主要完成这些事情:(来源:)
下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。
hello1.c
01. #define _________ }
02. #define ________ putchar03. #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){putchar08. (*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 ................