Self Print in C++
来源:互联网 发布:2016年淘宝开店押金 编辑:程序博客网 时间:2024/05/10 10:29
所谓的Self Print(自打印程序),就是指代码编译之后运行输出的结果和原来的代码一样。
换言之,假设把编译-运行-输出作为一个算子F,代码作为自变量s的话,Self Print 就是要寻找s,使得 F(s)=s
下面的程序要实现的是另外一种形式的Self Print,F(F(F(F(s))))=s
#include <cstdio>
int main()
{
int Type=0;
char *s1="#include <cstdio>/nint main()/n{/n/tint Type=1;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s2="#include <cstdio>/nint main()/n{/n/tint Type=2;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s3="#include <cstdio>/nint main()/n{/n/tint Type=3;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s4="#include <cstdio>/nint main()/n{/n/tint Type=4;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s[]={s1,s2,s3,s4};
printf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);
}
发挥你的想象,看看你能实现出多少更pp,更有趣的Self Print程序呢?
换言之,假设把编译-运行-输出作为一个算子F,代码作为自变量s的话,Self Print 就是要寻找s,使得 F(s)=s
下面的程序要实现的是另外一种形式的Self Print,F(F(F(F(s))))=s
#include <cstdio>
int main()
{
int Type=0;
char *s1="#include <cstdio>/nint main()/n{/n/tint Type=1;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s2="#include <cstdio>/nint main()/n{/n/tint Type=2;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s3="#include <cstdio>/nint main()/n{/n/tint Type=3;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s4="#include <cstdio>/nint main()/n{/n/tint Type=4;/n/tchar *s1=%c%s%c;/n/tchar *s2=%c%s%c;/n/tchar *s3=%c%s%c;/n/tchar *s4=%c%s%c;/n/tchar *s[]={s1,s2,s3,s4};/n/tprintf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);/n}";
char *s[]={s1,s2,s3,s4};
printf(s[Type],34,s1,34,34,s2,34,34,s3,34,34,s4,34);
}
发挥你的想象,看看你能实现出多少更pp,更有趣的Self Print程序呢?
- Self Print in C++
- print himself in c
- print unsigned char in C && struct iovec
- Print() in grid
- device print in kernel
- "print" in Swift
- self-sizing-in-UICollectionView
- linux C print
- 【C语言】print 输出
- How to print 如何输出 int64_t,uint64_t的值 in C
- Print PDF in client automatically
- print in UNICODE and MBCS
- [perl]Wide character in print
- git clone出现fatal: unable to access 'https://': SSL certificate problem: self signed certificate in c
- objective-c self
- C Self-study Log
- [objective-c] self
- Object C---super&self
- linux c start
- Delphi常见图象格式转换技术
- Delphi常见图象格式转换技术(二)
- 24bits bitmap 文件到256色bitmap 的转换
- SQL Server 2008精妙之处
- Self Print in C++
- RHCE考前笔记
- C#的6种常用集合类区别(比较)
- SQL Server 2008第二个CTP预览版
- scintilla笔记(一)编译
- 耶鲁精英骷髅会 掌控美国的黑色心脏
- SQL Server 2008:传递表值参数
- 个人介绍网页制作
- mysql学习