I think this might be a classic question but I am not aware of an answer. Can a program output a copy of itself, and, if so, is there a short program that does this?
Yes. Here's a C program that does it that I wrote about 20 years ago.
http://womencht.reocities.com/Athens/8994/repeat.html