无敌士兵为什么玩不了:什么程序运行的结果是显示出自身的源代码?

来源:百度文库 编辑:高校问答 时间:2024/05/02 16:55:11
最好是C或C++编的
考验智力的问题~~~~
以前在网上看到的,想了很久没想出来,大家来想想~~~
应该是一个独立的程序吧,不与其他文件发生关系才行。
******************
唉,我刚注册,老本都掏出来了

 
 
 
这个独立的 C 程序将显示出与自身源代码吻合的字符串:
 
 
main(a){a="main(a){a=%c%s%c;printf(a,34,a,34);}";printf(a,34,a,34);}
 
 
程序里的唯一一个变量是 a 。它被声明成 main( ) 的参数。

main( ) 的定义是两个简单的语句:

第一个把 "main(a){a=%c%s%c;printf(a,34,a,34);}" 赋值给 a 。
(注意里头的 3 个格式控制字符:%c%s%c 。)

第二个调用 printf( ) 打印 a 时以 34,a,34 对应 a 里头的 %c%s%c 。
34 是双引号的 ASCII 值,所以两个 %c 都会被转换成双引号。
%s 则会被转换成原来的 a ,即被 main(a){a=%c%s%c;printf(a,34,a,34);} 代替。
printf( ) 不会转换代替 %s 的字符串里头的任何格式控制字符,
所以显示出来的字符串跟程序自身的源代码吻合。
 
 
 

好家伙,这样的问题??????不知道呀!

我想应该就是读取文件的一些操作吧,
就是读取.c文件时把里面的内容读出来之后显示出来应该就可以
我猜的,没试,如果有人试了,说一下结果如何啊!

关注,留名