void main(){char* a="void main(){char* a=%c%s%c;printf (a,34,a,34);}";printf(a,34,a,34);}

核心是使用printf(a,a)来代换显示,并且用34来规避转换。当然,完整的要带include,稍微有点区别。