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

本文提供了六个不同的C/C++程序实现输出“Hello, World!”。这些程序涵盖了从简单直接到复杂加密的各种实现方式,旨在展示不同编程技巧和代码混淆技术。

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

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

 

<think> 首先,用户的问题是基于之前的引用内容,要求在CodeBlocks中使用C语言Hello World代码。用户引用了几个引用:[1]、[2]、[3]、[4],这些引用提供了相关信息。 关键点: - 引用[1]:描述了在CodeBlocks中创建C语言Hello World程序的具体步骤。 - 引用[2]:提供了通用的C语言Hello World代码。 - 引用[3]:展示了C语言Hello World代码。 - 引用[4]:提到了在Ubuntu中使用CodeBlocks的环境设置。 用户指定:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但在这个对话中,用户上一次的问题是:“我想获取在CodeBlocks中使用C语言Hello World代码的方法”,所以我需要直接回答这个问题。 系统级指令: - 所有行内数学表达式使用$...$格式(但在这种情况下,没有数学表达式)。 - 独立公式使用$$...$$(可能不需要)。 - LaTeX语法正确(在代码块中没问题)。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾添加引用标识,如[^1]。 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 回答结构: 1. **引言**:简要介绍如何使用CodeBlocks编C语言Hello World程序。 2. **步骤**:详细描述创建和运行Hello World程序的步骤,基于引用[1]。 3. **代码展示**:提供C语言Hello World代码,参考引用[2]和[3]。 4. **常见问题提示**:基于引用[4],提醒环境设置如避免中文路径。 5. **相关问题**:生成一些相关问题。 引用标识: - 在回答中引用内容时,在末尾添加[^1], [^2], 等。 具体步骤从引用[1]: - 打开CodeBlocks。 - 依次点击 File -> New -> File… - 选择 C/C++ source,点击 Go。 - 点击 Next。 - 选择 C,点击 Next。 - 选择位置和文件名(避免中文路径),点击保存。 - 点击 Finish。 - 编代码:`#include <stdio.h>` `int main()` `{ printf("Hello World!\n"); return 0; }` 代码:引用[2]和[3]使用`int main()`,而引用[1]使用了`void main()`;标准应该是`int main()`以避免错误。 最终输出: - 使用中文。 - 结构清晰。 - 生成相关问题。 相关问题建议: 1. 如何调试CodeBlocks中的C程序? 2. CodeBlocks常见错误及其解决方法? 3. 如何扩展CodeBlocks的编译器设置? 4. 其他IDE(如Visual Studio)编C语言Hello World的方法? 完整回答大纲: 1. 介绍。 2. 步骤:详细步骤。 3. 代码示例:在一个代码块中。 4. 运行说明:如何编译和运行。 5. 注意事项:如路径问题。 6. 相关问题。 </think> 以下是基于您查询的在CodeBlocks中使用C语言Hello World程序的详细教程。我将参考站内引用内容[^1][^2][^3][^4],结合最佳实践,提供清晰、逐步的指导。整个过程包括创建项目、编代码、编译和运行,确保真实可靠(CodeBlocks版本:20.03,C语言标准:C99)。 ### 逐步教程:在CodeBlocks中编C语言Hello World程序 1. **打开CodeBlocks并创建新项目** - 启动CodeBlocks(确保已安装,若未安装可参考引用[^4]的环境设置)。 - 点击菜单栏的 **File** → **New** → **File…**。 - 在弹出的向导窗口中,选择 **C/C++ source** ,然后点击 **Go**。 - 点击 **Next**,在语言选择中勾选 **C**(不要选C++),再点击 **Next**[^1]。 - 设置文件路径和名称: - 选择保存位置(例如桌面),输入文件名如 `hello_world`(避免中文路径,以免编译器报错[^4])。 - 点击 **Save**,然后点击 **Finish**。 2. **编C语言代码** - 在打开的编辑器中,输入以下标准C代码(基于引用[^2][^3],推荐使用`int main()`而非`void main()`以符合ANSI C标准): ```c #include <stdio.h> // 引入标准输入输出库 int main() { // 定义主函数 printf("Hello World!\n"); // 输出Hello World并换行 return 0; // 返回0表示程序正常结束 } ``` - **代码说明**: - `#include <stdio.h>`:包含标准输入/输出函数。 - `int main()`:程序入口点,返回整型值0表示成功结束。 - `printf("Hello World!\n");`:输出文本,`\n`为换行符。 3. **编译和运行程序** - 点击工具栏的 **Build** 图标(或按 **F9**)编译代码。若代码无误,控制台会显示编译成功信息(如 `0 errors, 0 warnings`)。 - 点击 **Run** 图标(或按 **F10**)执行程序。 - 程序将在底部输出窗口显示结果:`Hello World!`。 4. **常见问题与注意事项** - **路径问题**:保存文件时勿用中文路径,否则可能编译失败(参考引用[^4])。 - **编译器设置**:CodeBlocks默认使用GCC编译器。如果未自动检测,需手动配置(Settings → Compiler → Toolchain executables)。 - **错误处理**:若编译报错(如未找到`stdio.h`),检查是否安装GCC(MinGW)或重启CodeBlocks[^2][^3]。 - 其他IDE对比:Visual Studio等步骤类似,但新建项目时选择“Console Application”[^2]。 通过以上步骤,您可在5分钟内完成编和运行。推荐使用标准代码格式以提高可移植性[^1][^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值