6个变态的C语言写的Hello World

523 篇文章 0 订阅
90 篇文章 1 订阅

下面的六个程序片段主要完成这些事情:

  1. 输出Hello, World
  2. 混乱C语言的源代码

下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。

hello1.c

    #define _________ }

    #define ________ putchar

    #define _______ main

    #define _(a) ________(a);

    #define ______ _______(){

    #define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)

    #define ___ _(0x6F)_(0x2C)_(0x20)_(0x77)_(0x6F)

    #define ____ _(0x72)_(0x6C)_(0x64)_(0x21)

    #define _____ __ ___ ____ _________

    #include <stdio.h>

    _____

 

hello2.c 

    #include <stdio.h>

    main(){

      int x=0,y[14],*z=&y;*(z++)=0x48;*(z++)=y[x++]+0x1D;

      *(z++)=y[x++]+0x07;*(z++)=y[x++]+0x00;*(z++)=y[x++]+0x03;

      *(z++)=y[x++]-0x43;*(z++)=y[x++]-0x0C;*(z++)=y[x++]+0x57;

      *(z++)=y[x++]-0x08;*(z++)=y[x++]+0x03;*(z++)=y[x++]-0x06;

      *(z++)=y[x++]-0x08;*(z++)=y[x++]-0x43;*(z++)=y[x]-0x21;

      x=*(--z);while(y[x]!=NULL)putchar(y[x++]);

    }

hello3.c

    #include <stdio.h>

    #define __(a) goto a;

    #define ___(a) putchar(a);

    #define _(a,b) ___(a) __(b);

    main()

    { _:__(t)a:_('r',g)b:_('$',p)

      c:_('l',f)d:_(' ',s)e:_('a',s)

      f:_('o',q)g:_('l',h)h:_('d',n)

      i:_('e',w)j:_('e',x)k:_('/n',z)

      l:_('H',l)m:_('X',i)n:_('!',k)

      o:_('z',q)p:_('q',b)q:_(',',d)

      r:_('i',l)s:_('w',v)t:_('H',j)

      u:_('a',a)v:_('o',a)w:_(')',k)

      x:_('l',c)y:_('/t',g)z:___(0x0)}

hello4.c

    int n[]={0x48,

    0x65,0x6C,0x6C,

    0x6F,0x2C,0x20,

    0x77,0x6F,0x72,

    0x6C,0x64,0x21,

    0x0A,0x00},*m=n;

    main(n){putchar

    (*m)!='/0'?main

    (m++):exit(n++);}

hello5.c

    main(){int i,n[]={(((1<<1)<<(1<<1)<<(1<<

    1)<<(1<<(1>>1)))+((1<<1)<<(1<<1))), (((1

    <<1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<<(

    1<<1)<<(1<<1))+((1<<1)<<(1<<(1>>1)))+ (1

    <<(1>>1))),(((1<<1)<<(1<<1)<<(1<<1)<< (1

    <<1))-((1<<1)<<(1<<1)<<(1<<(1>>1)))- ((1

    <<1)<<(1<<(1>>1)))),(((1<<1)<<(1<<1)<<(1

    <<1)<<(1<<1))-((1<<1)<<(1<<1)<<(1<<(1>>1

    )))-((1<<1)<<(1<<(1>>1)))),(((1<<1)<< (1

    <<1)<<(1<<1)<<(1<<1))-((1<<1)<<(1<<1)<<(

    1<<(1>>1)))-(1<<(1>>1))),(((1<<1)<<(1<<1

    )<<(1<<1))+((1<<1)<<(1<<1)<<(1<<(1>>1)))

    -((1<<1)<<(1<<(1>>1)))),((1<<1)<< (1<<1)

    <<(1<<1)),(((1<<1)<<(1<<1)<<(1<<1)<<(1<<

    1))-((1<<1)<<(1<<1))-(1<<(1>>1))),(((1<<

    1)<<(1<<1)<<(1<<1)<<(1<<1))-((1<<1)<< (1

    <<1)<<(1<<(1>>1)))-(1<<(1>>1))), (((1<<1

    )<<(1<<1)<<(1<<1)<<(1<<1))- ((1<<1)<< (1

    <<1)<<(1<<(1>>1)))+(1<<1)), (((1<<1)<< (

    1<<1)<<(1<<1)<< (1<<1))-((1<<1)<< (1<<1)

    <<(1<<(1>>1)))-((1<<1) <<(1<< (1>>1)))),

    (((1<<1)<< (1<<1)<<(1<<1)<< (1<<1))- ((1

    <<1)<<(1<<1)<<(1<<1))+((1<<1)<< (1<<(1>>

    1)))), (((1<<1)<<(1<<1) <<(1<<1))+(1<<(1

    >>1))),(((1<<1)<<(1<<1))+((1<<1)<< (1<<(

    1>>1))) + (1<< (1>>1)))}; for(i=(1>>1);i

    <(((1<<1) <<(1<<1))+((1 <<1)<< (1<<(1>>1

    ))) + (1<<1)); i++) printf("%c",n[i]); }

hello6.cpp

下面的程序只能由C++的编译器编译(比如:g++)

    #include  <stdio.h>

    #define _(_) putchar(_);

    int main(void){int i = 0;_(

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++i)_(++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++i)_(++++++++++++++

    i)_(--++i)_(++++++i)_(------

    ----------------------------

    ----------------------------

    ----------------------------

    ----------------------------

    ----------------i)_(--------

    ----------------i)_(++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++++

    ++++++++++++++++++++++++++i)

    _(----------------i)_(++++++

    i)_(------------i)_(--------

    --------i)_(----------------

    ----------------------------

    ----------------------------

    ----------------------------

    ----------------------------

    ------i)_(------------------

    ----------------------------

    i)return i;}







原文:http://cocre.com/?p=914


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 C 语言中,可以使用以下代码来输出 "Hello, world!": ``` #include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; } ``` 其中,`#include <stdio.h>` 告诉编译器要使用 `stdio` 库中的函数,`printf` 函数是在 `stdio` 库中定义的,用于向标准输出(通常是屏幕)输出一条消息。 `int main(void)` 定义了一个名为 `main` 的函数,这是 C 程序的入口点。在这个函数中,我们调用了 `printf` 函数输出 "Hello, world!" 字符串。最后,函数使用 `return 0;` 语句终止并返回零。 ### 回答2: C语言是一种广泛用于编系统软件和应用程序的高级编程语言。在C语言中,编一个简单的Hello World程序是非常简单的。 首先,我们需要创建一个新的C文件,可以使用任何文本编辑器,比如Notepad或者Visual Studio等。然后,在文件的最顶部添加以下预处理指令: ```c #include <stdio.h> ``` 这个预处理指令告诉编译器在编译程序之前先包含标准输入/输出库(stdio.h)的内容。接下来,我们需要在代码中添加主函数main(): ```c int main() { printf("Hello World!"); // 打印Hello World! return 0; // 返回0,表示程序成功运行结束 } ``` main()函数是C程序的入口函数,程序从这里开始执行。在这个例子中,我们使用了printf()函数来打印输出“Hello World!”到控制台。注意,在C语言中,需要以分号作为语句的结束。 最后,我们需要保存文件,并将其命名为一个合适的名字,比如hello.c。接下来,使用任何支持C编译的编译器,比如gcc,编译这个文件。在命令行中输入以下命令: ``` gcc hello.c -o hello ``` 这个命令会将hello.c源文件编译为可执行文件hello。最后,在命令行中输入以下命令运行编译好的程序: ``` ./hello ``` 如果一切顺利,你将会在控制台上看到输出结果“Hello World!”。 通过这个例子,你可以学到C语言的基本语法和程序结构。Hello World程序是一个非常简单,但也是一个具有重要意义的入门程序,因为它可以检验软件环境和编译器的配置是否正确,同时也是C语言新手开始学习的第一步。 ### 回答3: C语言中使用printf函数来输出“Hello, World!”。 代码如下: ```c #include <stdio.h> int main() { printf("Hello, World!\n"); return 0; } ``` 这段代码的意思是在屏幕上输出一行“Hello, World!”。首先,我们需要包含stdio.h头文件,这是C语言的标准输入输出库。然后,我们定义一个名为main的函数,它是程序执行的入口点。函数的返回类型是int,表示返回一个整数值。花括号{}中是函数体,其中的代码会被执行。 在函数体中,我们使用printf函数来输出“Hello, World!”。printf函数在stdio.h头文件中定义。它的作用是向标准输出设备(通常是控制台)打印格式化的输出。在这里,我们传递给printf函数一个字符串常量"Hello, World!",并在字符串的末尾加上一个换行符\n,以使输出换到下一行。 最后,我们使用return语句返回0,表示程序正常执行结束。在C语言中,main函数的返回值被视为程序的退出状态码。返回0通常表示程序运行成功。 要运行这段代码,我们需要安装一个C语言编译器,如GCC。将代码保存为一个拓展名为“.c”的文件,然后使用编译器编译运行即可。编译后的可执行文件会输出“Hello, World!”到标准输出设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值