社区
其它技术问题
帖子详情
.: 比赛贴 .::. 据说是贝尔实验室的应聘题目 :.
lexchou
2006-04-03 08:40:14
写出程序打印自身源码。
前提要求:不准使用带反射功能的语言,或者脚本语言,其他语言都可以。也不准打开源代码文件后输出源代码……
详细解释一下
代码A编译后成程序B,程序B运行的结果就是代码A,而且还能继续通过编译输出代码本身。
很久以前看过别人用C写出来的,现在搞不见了,看看各位人才们能怎么写。
...全文
651
14
打赏
收藏
.: 比赛贴 .::. 据说是贝尔实验室的应聘题目 :.
写出程序打印自身源码。 前提要求:不准使用带反射功能的语言,或者脚本语言,其他语言都可以。也不准打开源代码文件后输出源代码…… 详细解释一下 代码A编译后成程序B,程序B运行的结果就是代码A,而且还能继续通过编译输出代码本身。 很久以前看过别人用C写出来的,现在搞不见了,看看各位人才们能怎么写。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
healer_kx
2006-04-06
打赏
举报
回复
UP
lonelyforest
2006-04-05
打赏
举报
回复
这个是国际编程竞赛的, www.ioccc.org 上面很多。
这里有一个
#include<stdio.h>
main()
{
char *c="#include<stdio.h>%cmain()%c{%cchar *c=%c%s%c;%cprintf(c,10,10,10,34,c,34,10,10);%c}";
printf(c,10,10,10,34,c,34,10,10);
}
kitty74jh
2006-04-05
打赏
举报
回复
是在这里的,是《程序员》06年第5期智慧擂台的题目,现在正在火热进行中。欢迎大家参与 http://community.csdn.net/Expert/topic/4654/4654528.xml
吃狼的豆腐
2006-04-04
打赏
举报
回复
以前的帖子有过,好象还不是很早,去找找吧
猛禽
2006-04-04
打赏
举报
回复
强啊
iamcaicainiao
2006-04-04
打赏
举报
回复
char*f="char*f=%c%s%c;%cmain(){printf(f,34,f,34,10,10);}%c";
main(){printf(f,34,f,34,10,10);}
LiuDian
2006-04-03
打赏
举报
回复
可以用debug信息不? 如果这个都不可以 那这样的程序是写不出来的。最多就是生成和原来代码等价的代码。 因为对于任何编译性的语言来说最后生成的机器语言不可能包含原代码中的所有信息。最起码换行符信息是无论如何也也不可能还原。
herryhuang
2006-04-03
打赏
举报
回复
呵呵,没听说过贝尔实验室有这样的题目,绝对是假的。
不过,这样的程序我倒是见过一些:
char*f="char*f=%c%s%c;main()
{printf(f,34,f,34,10);}%c";
main(){printf(f,34,f,34,10);}
另一个:
void a(char*b,int d,int e,int f){char*c=b;for(;*c;c++){if(!d&*c==68)putchar(
92),putchar('\n');if(!d&*c==92)putchar(92);if(*c==d)a(b,0,0,0);else putchar(
*c==e?34:*c==f?'\n':*c);}}main(){char p[]=/*
andelion '94 */
"void a(char*b,int d,int e,int f){char*c=b;for(;*c;c++){if(!d&*c==68)putchar(\
D92),putchar('\\n');if(!d&*c==92)putchar(92);if(*c==d)a(b,0,0,0);else putchar(\
D*c==e?34:*c==f?'\\n':*c);}}main(){char p[]=/* \
Dandelion '94 */\
DCAC;a(p,65,67,68);}";a(p,65,67,68);}
这个比较长:
#include "stdio.h"
char *stack[2000], buf[2000], chrtab[128][2], *defns[128];
char dna[ ]="stdio.h_X#include X\"__\n\
char 4_Cstack_Sbuf_Bchrtab[4]_Hdefns[4]_V5[4]_]5, 4_,4;_;*4_*2000_K128_L\n\
_/SK]*BK],LH2]LV*,,C;__5==4_%5=4_=dna_DD ]@\"=C;__54_.copy(4)_K\n\
_/strlen(4)_Astrcpy(54,)_E4++_^5+4_+200_X'4'_'5*^4=_Z5;/4._!for (7;6;5)4_F\n\
_/if (5) 4_G{/4/}/_}return(4);/_R(char`*)malloc(4)_M\\\\_$`\"'_Y\n\
_/5 || 4_| c*t^*c^*=Yc*%$'c*%|t$'ZG\\n.'c*%ttt\\n.\\.\"EA+=G;!}F_W\n\
_/cK*Cc*Ct*q*,CqtXcA+M==!tYZ!W!tYZ.t0Z!qR!}!__(4)_~\n\
_/construct(4)_Iarg_J4**_$int 4_Nswitch(5)4}_Odefault: 4_P5-4_-p1-~*_Q\n\
_/break_Ucase 5: 4;/U_:5<4_<5>4_>5 && 4_&4*8'<4*3'>&_?else 4_XqB=Jp=!_W\n\
_/Wtc*V=t*t^t?kpt*-3'+=~J<Jk=Gqqqk*EA+=!;}Gqt*ZX;.}F!q*0=.pJ=!pBA1+MZBE!;_W\n\
_/c*``'p*^ ^c.*H=:YQQK=:!`@'pDZ:!c?p*^c*H=U!;}GP!W.O_W\n\
_/n0=kS=,kp<nnk*^A+=4F_U Uqn1+M=!qn+k*EU!qR!_O\n\
_/cI*Cc*CJ$p$,k$,t*,q*,CnN!pS=c*c^W}F!O.}!__\n\
_/nH5]4=_Ostrncpy(654,,)_Eputs(4)_P923+_T4t.*T%_T\n\
_/xt=D=t*t^ Tqtx-1+M=qxtx-E!qx-t+~*0=! ^TqIPG!t*VqI=X!xt1+=!;}G}F_Q\n\
_/main()/t*x*,q*,CnN!n0=nL<n^0nO10O!nVnH=!;}F!Q.}__";
char *copy(c)
char *c;
{
char *t, *q;
q=t=(char*)malloc(200+strlen(c));
*t++='"';
for ( ;*c;*t++=*c++){
if ('"'==*c || '\\'==*c) *t++='\\';
if ('\n'==*c) t=t+strlen(strcpy(t, "\\n\\")); }
*t++='"';
*t++=0;
return(q);
}
char *construct(c)
char *c;
{
char **arg, **p, **k, *t, *q;
int n;
for (p=stack;*c;c++){
switch(*c){
case '`': *p++=chrtab[* ++c];
break;
case '"': *(p-1)=copy(*(p-1));
break;
case '@': *p++=dna;
break;
default: if (*c<'8' && *c>'3') {
*p++=chrtab[*c];
break;
}
q=buf;
arg=p;
for (t=defns[*c];*t;t++){
if (*t<'8' && *t>'3') {
if ((k=p-*t+'3')<arg) arg=k;
q=q+strlen(strcpy(q, *k));
}
else *q++=*t;
}
*q=0;
p=arg;
strcpy(*p++=(char*)malloc(strlen(buf)+1), buf); }
}
for (n=0, k=stack;k<p;n=n+strlen(*k++)) ; q=(char*)malloc(n+1);
for (n=0, k=stack;k<p;n=n+strlen(*k++))strcpy(q+n, *k); return(q);
}
main()
{
char *t, *x, *q;
int n;
for (n=0;n<128;n++){
chrtab[n][0]=n;
chrtab[n][1]=0;
defns[n]=chrtab[n];
}
for (x=t=dna;*t;t++){
if (* t==92+3) {
q=(char*)malloc(t-x+1);
strncpy(q, x, t-x);
*(q-x+t)=0;
if (* ++t==92+3) puts(construct(q));
else defns[*t]=construct(q);
x=t+1;
}
}
}
vcmute
2006-04-03
打赏
举报
回复
以讹传讹
pankun
2006-04-03
打赏
举报
回复
这个猥琐的ID就是D版的恶鱼杀手啦
firetoucher
2006-04-03
打赏
举报
回复
友情鼎立雷霆华丽关注并up~~~
随便问一下这个猥琐的ID到底是谁?
^^
FT
--
Anything one man can imagine, other men can make real.
pankun
2006-04-03
打赏
举报
回复
指今
pankun
2006-04-03
打赏
举报
回复
自已的编译器算不...添加个编译指命就行...
cunsh
2006-04-03
打赏
举报
回复
好像前几天这里贴过?
make零基础教程(Linux系统) Makefile 自动化 构建
make是在1977年在
贝尔实验室
(Bell Labs)研发的 Unix系统中的一款依赖关系检查工具程序(Utility software)。make的应用非常广泛,它被用来构建 C、C++ 、Pascal Fortran 等项目,自动化构建生成可执行文件...
超全的英语短句汇集
English 900 英语九百句常用职位英文译名超级短句成语集锦打开话匣子PC电脑词汇一百个绝佳句型李阳英语365句托福听力常用短语校园英语迷你惯用语洋话连篇至理名言English 900 英语九百句 Back To TOP(回到顶部)第...
是非人生——一个菜鸟程序员的5年人生路
后来适逢大公司急速扩张,恶补了几天C语言和数据结构便去
应聘
,走狗屎运进入大公司。公司压力大的好像高压锅,逼迫着他学习工作,他从大学的教科书看起到后来凭了点小聪明居然也混成了小leader。 这个人一辈子走狗屎...
菲利普·安德森:凝聚态物理的艺术家
贝尔实验室
在20世纪中期的那50年时间里,
贝尔实验室
(Bell Labs)大概是世界上最好的研究机构。安德森受益于那里的环境,实验室也因他的加入而受益颇丰。在最初的几个月里,他醉心研读了1940年 Frederick Seitz 所...
计算机专业中经典书籍(程序猿和大学生必读)
作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。 l九度链接 http://t.jobdu.com/thread-1210-1-1.html 4.《C专家编程》 l...
其它技术问题
3,881
社区成员
9,054
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章