一道经典面试题的不同解法

该题答案整理于看雪论坛:
原文地址:http://bbs.pediy.com/showthread.php?t=104954

 

原题这样的,要求在下面的*处添加代码,输出helloworld,不允许修改其他地方:

#include "stdio.h"

void print()

{

    *

}



void main()

{

}

解答的方式很多种,根本原因是让程序先执行print(),然后在其中输出hellowolrd。反正是各种诡异的方法,下面一一讲说:

 

方法1:

#include "stdio.h"



void print()

{    

  #pragma comment(linker, "/entry:print")

  #pragma comment(linker, "/SECTION:.text,REW" )

  int mainCRTStartup();

  void main();



  __asm

  {

    MOV   EAX,  OFFSET main

    MOV   BYTE PTR[EAX], 0xB8  //MOV  EAX, 0x

    MOV   DWORD PTR[EAX+1], OFFSET SHOWSTRING

    MOV   WORD PTR[EAX+5], 0xE0FF // JMP  EAX

  }



  mainCRTStartup();



SHOWSTRING:

  printf ("i am MentalDease\n");

  getchar();

  

}



void main()

{

}

 

方法2:

#include "stdio.h"



void print()

{

  #pragma comment(linker, "/entry:print")



  void main();



  __asm

  {

      push offset main

  }

  puts ("Hello world!\n");

  __asm

  {

      ret

  }



}



void main()

{

 

}

 

方法3:

#include "stdio.h"



void print()

{

  #pragma comment(linker, "/entry:print")

 #pragma comment(lib, "msvcrt.lib")

  puts("hello world\n");



}

void  main()

{



}

 

方法4:

#include <stdio.h> 



void print() 

{

  } 

  void main() 

  { 

  printf("Hello, World\n"); 

  #define main AnyUnusedFunctionName  

  } 



void main() 

{ 

   

} 

 

方法5:

#include "stdio.h"



void print()

{

  }

  int i = printf("%s","Hello,world"); 

  void a()

  {

}





void main()

{

} 

 

方法6:

#include "stdio.h"

void print()

{    

  #pragma comment(linker, "/entry:print")

  #pragma comment(lib, "msvcrt.lib")

  void main();

  printf ("Hello world!");

  main();  

}

void main()

{

} 

 

方法7:

#include "stdio.h"







void print()

{

  printf("Hello world");} void main(){print();}/*

}



int main()

{

  return 0;

} 

 

方法8:

void print()

{

    printf("hello world\n");



    #define main main(){print();} void null

}



void main()

{



}

 

方法9:

#include "stdio.h"

void print()

{

  }

  void main()

  {

    printf("Hello World");

  }

  #define main a

  void fun(){

}



void main()

{

}

 

你可能感兴趣的:(面试题)