Quine
题意:一个程序输出它自己。
很经典的一个问题,虽然看上去是个无穷递归的不可解问题,但利用C语言字符串的特性或者编译器可以做到。
参考 https://www.cnblogs.com/xkfz007/archive/2012/03/27/2420162.html
1 | main(){char*s="main(){char*s=%c%s%c;printf(s,34,s,34);return 0;}";printf(s,34,s,34);return 0;} |
以上代码中在运行printf时字符串s里的 %c%s%c 又被解析为34(双引号的ASCII码),s,双引号。那么为什么在第二个s里没有再解析呢?可能是编译器的设定吧。
1 |
|
看不懂第二种。
还有用宏定义字符串化的
1 |
|
还有几种uoj似乎不行。
__FILE__调用了自身的文件,就是真正的照着自己输出。
1 |
|
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment