面试问题:C语言用十种方法实现hello world程序,怎么做?

1最经典的“Hello world!”,直接用printf输出“Hello world!”

# include & ltstdio.h & gt

# include & ltiostream & gt

int main(){

printf("Hello world!");//如何编写教材

puts("Hello world!");//我的最爱

puts("你好" "世界!");//拼接字符串

STD::cout & lt;& lt“你好世界!”& lt& ltSTD::endl;// C++风格的教材编写

返回0;}

2.“你好世界!”用宏写的。

“#”可以“提取”参数的名称,并将其转换为字符串。

# include & ltstdio.h & gt

定义看跌期权

int main(){

回说(你好世界!);

}

3.“你好世界!”脱离上下文

# include & ltstdio.h & gt

int main(){

回放(“不要说:你好,世界!”[12]);

}

4.“你好世界!”退出时运行。

Atexit()注册回调函数。这个函数可以多次调用,最后注册的函数先执行。

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

void say(){printf("world!");}

void sth(){ printf(" Hello ");}

int main(){

return atexit(say),at exit(sth);

}

5.读你自己的“Hello world!”

// Hello world!

# include & ltiostream & gt

# include & ltfstream & gt

# include & lt字符串& gt

int main(){

STD::if stream ifs(_ _ FILE _ _);

std::string say,some,word

ifs & gt& gt说& gt& gt一些& gt& gtword

STD::cout & lt;& lt一些& lt& lt" " " & lt& ltword

返回0;

}

6.“你好世界!”

声明一个全局类的实例,这个类的构造函数会在主函数执行前被调用,析构函数会在完成后被调用。

# include & ltiostream & gt

班级说{

public:say(){ STD::cout & lt;& lt《地狱》;}

~ say(){ STD::cout & lt;& lt“世界!”;}

}你好;

int main(){

STD::cout & lt;& lt“o”;

返回0;

}

7.传入模板的“Hello world!”

# include & ltiostream & gt

模板& ltchar * words & gt

班级说{

公共:

void运算符()(){ STD::cout & lt;& lt词;}

};

char hello[] = "Hello world!";

int main(){

返回say & lt你好& gt()(), 0;

}

8.叫“你好世界!”私人功能。

# include & ltiostream & gt

# include & ltcstddef & gt

类别机密{

私人:

虚拟void say(){ STD::cout & lt;& lt“你好世界!”;}

};

int main(){

密语;

(reinterpret _ cast & ltvoid(*)()& gt;(* * *(intptr _ t * *)(& amp;word)))();

返回0;

}

9.直接修改函数的返回地址。

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltstddef.h & gt

void say(){

puts("Hello world!");

退出(0);

}

int main()

{

volatile int ptr _ t a = 0;

volatile intptr _ t * p = & ampa;

*(p+2)=(int ptr _ t)say;

*(p+3)=(int ptr _ t)say;

返回0;

}

10.外星人说“你好,世界!”

# include & ltstdio.h & gt

void alien_say (char * p){

while(putchar(*(p+= *(p+1)-* p)));

}

int main(){

return alien_say ("BETHO!Altec oh liryom(一个loadjudas!)dowd。”), 0;

}