一个比较娱乐的题目,该如何解决

一个比较娱乐的题目
C/C++ code

#include <iostream.h>

/////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
        cout<<"举头望明月\n";
        return 0;
}
/////////////////////////////////////////////////////////////////////

/*
 * 题目说明,这是一个典型的hello world程序,正常运行的话会在控制台
 * 输出:“举头望明月”
 * 你能否在不修改main函数的情况下,使其输出
 * “举头望明月,低头思故乡”
 * 在上网搜索答案之前,请先尝试思考一下
 */


娱乐下~~~~~~~~

------解决方案--------------------
C/C++ code

#include <iostream>
using namespace std;

class MyCout
{
public:
    MyCout& operator <<(const char *)
    {
        cout<<"抬头望明月,低头思故乡"<<endl;
        return *this;
    }
};
#define cout MyCout()
int main(int argc, char* argv[])
{
        cout<<"举头望明月\n";
        return 0;
}

------解决方案--------------------
C/C++ code
class AAA
{
public:
    AAA(){cout<<"举头望明月,低头思故乡\n";exit(0);}
    ~AAA(){}
};
AAA a;
int main(int argc, char* argv[])
{
        cout<<"举头望明月\n";
        return 0;
}

------解决方案--------------------
众所周知,字符串保存的常量字符区,字符串当做参数传入函数时,只是传递的字符串在常量区得地址,
所以在运行期,把那个地址里的数据修改一下,大家懂的啊,比较接近hack的了
C/C++ code

#include <iostream>
#include<windows.h>
using namespace std;

class Hack
{
public:
    Hack()
    {
        DWORD dwIdOld;
        char *p="举头望明月\n";
        VirtualProtect(p,64,PAGE_READWRITE,&dwIdOld);
        WriteProcessMemory(GetCurrentProcess(),p,"抬头望明月,低头思故乡",64,0);
    }
};
Hack hack;
int main(int argc, char* argv[])
{
    cout<<"举头望明月\n";
    return 0;
}

------解决方案--------------------
C/C++ code
#include <iostream.h>
#define mymain int main() {cout<<"举头望明月,低头思故乡\n";return 0;}
mymain
#define main mainskiped
/////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
        cout<<"举头望明月\n";
        return 0;
}
/////////////////////////////////////////////////////////////////////

/*
 * 题目说明,这是一个典型的hello world程序,正常运行的话会在控制台
 * 输出:“举头望明月”
 * 你能否在不修改main函数的情况下,使其输出
 * “举头望明月,低头思故乡”
 * 在上网搜索答案之前,请先尝试思考一下
 */