挺有意思的一道题目。
题目链接:Quine
思路
来自:https://blog.youkuaiyun.com/gmh77/article/details/95492154
- 用一个字符串数组记录下除去该字符串的代码。
- 然后依次输出,输出到字符串数组时就再输出一遍。注意要加上引号和逗号,为了避免影响语法,双引号应采用 ASCII 码形式。
- 最后把剩下的输出完。
- 最后的最后,完善一些细节就 OK 啦!
代码
#include <bits/stdc++.h>
using namespace std;
string a[100]={"#include <bits/stdc++.h>",
"using namespace std;",
"string a[100]={",
"int main(){",
"int n=12;",
"for(int i=0;i<=1;++i)cout<<a[i]<<endl;",
"cout<<a[2];",
"for(int i=0;i<n;++i) cout<<(char)34<<a[i]<<(char)34<<','<<endl;",
"cout<<'}'<<';'<<endl;",
"for(int i=3;i<n-1;++i)cout<<a[i]<<endl;",
"cout<<a[11];",
"return 0;}",
};
int main(){
int n=12;
for(int i=0;i<=1;++i)cout<<a[i]<<endl;
cout<<a[2];
for(int i=0;i<n;++i) cout<<(char)34<<a[i]<<(char)34<<','<<endl;
cout<<'}'<<';'<<endl;
for(int i=3;i<n-1;++i)cout<<a[i]<<endl;
cout<<a[11];
return 0;}