一个有趣的程序

标题: 一个有趣的程序
--------------------------------------------------------------------------------
原著(不知谁是原创的,知道者请告知):

#include <stdio.h>
void main(char* a){printf(a,34,a="void main(char* a){printf(a,34,a=%c%s%c,34);}",34);}
运行结果:
void main(char* a){printf(a,34,a="void main(char* a){printf(a,34,a=%c%s%c,34);}",34);}

 

我稍加改动:
#include <stdio.h>
void main(char* a){printf(a,10,34,a="#include <stdio.h>%cvoid main(char* a){printf(a,10,34,a=%c%s%c,34);}",34);}
运行结果:
#include <stdio.h>
void main(char* a){printf(a,10,34,a="#include <stdio.h>%cvoid main(char* a){printf(a,10,34,a=%c%s%c,34);}",34);}

附上Ken Thompson的程序:

char s[]={

'/t',
'0',
'/n',
'}',
';',
'/n',
'/n',
'm',
'a',
'i',
'n',
'(',
')',
'/n',
'{',
'/n',
'/t',
'i',
'n',
't',
' ',
'i',
';',
'/n',
'/n',
'/t',
'p',
'r',
'i',
'n',
't',
'f',
'(',
'"',
'c',
'h',
'a',
'r',
' ',
's',
'[',
']',
'=',
'{',
'//',
'n',
'"',
')',
';',
'/n',
'/t',
'f',
'o',
'r',
'(',
'i',
'=',
'0',
';',
' ',
's',
'[',
'i',
']',
';',
' ',
'i',
'+',
'+',
')',
'/n',
'/t',
'/t',
'p',
'r',
'i',
'n',
't',
'f',
'(',
'"',
'//',
't',
'%',
'd',
',',
'//',
'n',
'"',
',',
's',
'[',
'i',
']',
')',
';',
'/n',
'/t',
'p',
'r',
'i',
'n',
't',
'f',
'(',
'"',
'%',
's',
'"',
',',
's',
')',
';',
'/n',
'}',
'/n',
0
};

main()
{
int i;

printf("char s[]={/n");
for(i=0; s[i]; i++)
printf("/t%d,/n",s[i]);
printf("%s",s);
}


============输出结果===============

char s[]={
9,
48,
10,
125,
59,
10,
10,
109,
97,
105,
110,
40,
41,
10,
123,
10,
9,
105,
110,
116,
32,
105,
59,
10,
10,
9,
112,
114,
105,
110,
116,
102,
40,
34,
99,
104,
97,
114,
32,
115,
91,
93,
61,
123,
92,
110,
34,
41,
59,
10,
9,
102,
111,
114,
40,
105,
61,
48,
59,
32,
115,
91,
105,
93,
59,
32,
105,
43,
43,
41,
10,
9,
9,
112,
114,
105,
110,
116,
102,
40,
34,
92,
116,
37,
100,
44,
92,
110,
34,
44,
115,
91,
105,
93,
41,
59,
10,
9,
112,
114,
105,
110,
116,
102,
40,
34,
37,
115,
34,
44,
115,
41,
59,
10,
125,
10,
0
};

main()
{
int i;

printf("char s[]={/n");
for(i=0; s[i]; i++)
printf("/t%d,/n",s[i]);
printf("%s",s);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值