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

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

 

本文仅供朋友们“消遣作乐”,能够看懂是为什么固然不错。看不懂也不必太过认真,如果你要觉得有意思的话,顶顶贴。如果你觉得没什么意思的话,一笑了之。仅供娱乐而已,不必太过认真。

 

 

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

  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;}

 

  • 7
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 179
    评论
### 回答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!”到标准输出设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 179
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值