【正确答案】
【答案解析】用常规的printf语句输出是得不到与自身代码一模一样的结果的,因为这涉及一个自身嵌套的问题。如果希望打印程序自身代码,可以参考如下实现。
#include<stdio.h>
int main()
{
char *p ="#include <stdio.h>%cint main()%c{%c char *p = %c%s%c;%c
printf(p,10,10,10,34,p,34,10,10,10);%c return 0;%c}";
printf(p,10,10,10,34,p,34,10,10,10);
return 0;
}
上面代码的实现需要注意以下几个方面的内容:
1)写好一个程序。
2)定义一个字符串str把原来的代码抄进去;不能显示的字符和特殊字符都用%c替换,如换行、引号等。
用一个输出语句printf打印str。注意这里,格式控制时,10表示换行,34表示”,92表示/,110表示n,9表示/t。