我们可以把计算机看成一个函数,将一份代码映成一段输出,那么输出为代码本事就是数学中不动点。任意语言都有很多相应版本的这种程序,原理都是类似的,我自己写的 C++ 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include<iostream> #include<string> using namespace std; string a[10]; int main(){ a[0]="#include<iostream>"; a[1]="#include<string>"; a[2]="using namespace std;"; a[3]="string a[10];"; a[4]="int main(){"; a[5]="for(int i=0;i<5;++i) cout<<a[i]<<endl;"; a[6]="for(int i=0;i<10;++i) cout<<char(97)<<char(91)<<i<<char(93)<<char(61)<<char(34)<<a[i]<<char(34)<<char(59)<<endl;"; a[7]="for(int i=5;i<10;++i) cout<<a[i]<<endl;"; a[8]="return 0;"; a[9]="}"; for(int i=0;i<5;++i) cout<<a[i]<<endl; for(int i=0;i<10;++i) cout<<char(97)<<char(91)<<i<<char(93)<<char(61)<<char(34)<<a[i]<<char(34)<<char(59)<<endl; for(int i=5;i<10;++i) cout<<a[i]<<endl; return 0; }
|
代码原理和步骤:
- 先把头写好,定义好数组,记作头部
- 开始对数组赋值一直赋值到头部,然后空几行
- 把头用数组打印出来,再讲数组全部打印出来,再将后面的部分打印出来
- 再去空的几行,做数组赋值,赋值的时候后面的每一行
注意代码中特殊字符需要转义,不然就很尬了,而且代码不能用 tab 缩进
后来我又写了一篇:用 Python 打印自身的代码
文件打印就太没水平了,这里就不给出了