国际c语言乱码大赛图片,国际C语言乱码大赛(IOCCC)经典之作
你也许听说过“国际C 语言乱码大赛(IOCCC )”,能获奖的人毫无疑问是世界顶级C 程序员。这是他们利用C 语言的特点极限挖掘的结果。下面这个例子就是网上广为流传的 一个经典作品:// 原始代码如下
#include char *a;main(int t,int _,char* a){return!0
这是IOCCC 1988 年获奖作品,作者是Ian Phillipps。 毫无疑问,Ian Phillipps 是世界上最顶级的C 语言程序员之一。你可以数数这里面用了多少个符号。当然这里我并不会讨论这段代码,也并不是鼓励你也去写这样的代码(关于这段代码的分析,你可以上网查询)。恰恰相反,我要告诉你的是: 大师把代码写成这样是经典,你把代码写成这样是垃圾!所以在垃圾和经典之间,你需要做一个抉择。
// 把代码格式化一下#include char *a; // can be omitted due to function fieldmain(int t,int _,char* a){return !0
// 翻译成常规语言// condition ? true : false ; a,b,c generate step#include main(int t,int _,char* a){// 逻辑运算优先级,便于理解if(!0
// 除去不需要的,重构if语句#include main(int t,int _,char* a){if(1
// 编译环境main入口,CRTO.C for main(__argc, __argv, _environ);// 方法的编译原来,返回值的寄存器状态// 变量的类型转换reinterpret_cast// 使用一个新的main方法,将旧的用一个新方法'decode'表示// 根据题设,本程序执行方式为无命令参数,即,argc==1// 变量的声名规约,改变变量名以方便理解// 进一步重构if语句#include int decode(int arg1,int arg2,char* sCodec){if(1
// 分析出递归顶层返回值。// 注意所有return的含义,9/16/1/putchar(),Non Zero -> TRUE// 分析arg1的内容,重构方法,有些坳,自己试着理解吧#include int decode(int arg1,int arg2,char* sCodec){if(1
decode(-27+arg1,-94,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"); } }}else if(arg1
// 分析条件,重构2#include int decode(int arg1,int arg2,char* sCodec){if(1
// arg1 <= 0,下同 decode(-27+arg1,-94,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"); if(arg1==2){ while(arg2<13){ arg2 ++; sCodec = "%s %d %d\n"; if(arg1<3){ decode(0,-86,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"); decode(1-arg2,-87,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"); decode(-13,-79,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"); } if(arg1
decode(-27+arg1,-94,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/"); } }}else if(arg1<=0){ // 单一条件代码组 int border = (arg1<0); for(;arg1<0;arg1+=(*sCodec=='/')) sCodec ++; if(border) sCodec ++; // 边界条件,注意 while(!(*sCodec=='/')){ char* s = "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"; while(!(*sCodec==*s)){ s ++; } putchar(s[31]); sCodec ++; }}return 1;}int main(int argc, char* argv[], char** _environ){decode(2,2,"%s");return 9;}
// 分析arg2代码流向,重构3// tip.arg1 in function decode always '> 1'// the usage of arg1, arg2, sCodec. Can be omitted.#include void decode2(int arg1){char* sCodec = "@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/";int border = (arg1<0);for(;arg1<0;arg1+=(*sCodec=='/')) sCodec ++;if(border) sCodec ++; while(!(*sCodec=='/')){ char* s = "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"; while(!(*sCodec==*s)){ s ++; } putchar(s[31]); sCodec ++;}}int decode(int arg1,int arg2){// 考虑初始条件的 arg1 == 2, arg2 == 2,代码合并// 内部递归,展平为递推方式,注意边界条件和递归嵌套的调用特点if(arg1<3){ decode2(0); decode2(1-arg2); decode2(-13);}if(arg1
decode2(-27+arg1);if(arg1==2){ while(arg2<13){ arg2 ++; if(arg1<3){ decode2(0); decode2(1-arg2); decode2(-13); } if(arg1
decode2(-27+arg1); }}return 1;}int main(int argc, char* argv[], char** _environ){decode(2,2);return 9;}
// 最终结果#include void decode2(int arg1){char* sCodec = "@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/";int border = (arg1<0);for(;arg1<0;arg1+=(*sCodec=='/')) sCodec ++;if(border) sCodec ++; while(!(*sCodec=='/')){ char* s = "!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"; while(!(*sCodec==*s)){ s ++; } putchar(s[31]); sCodec ++;}}int decode(){int arg1, arg2;for(arg2=2;arg2<=13;arg2++){ decode2(0); decode2(1-arg2); decode2(-13);
for(arg1=arg2;arg1>=2;arg1--) decode2(-27+arg1);}return 1;}int main(int argc, char* argv[], char** _environ){decode();return 9;}
// 额外写段代码,看一下。对照之后推一下原始代码的结果吧。#include int main(int argc, char* argv[], char** _environ){char a[]="@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/";char b[]="!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry";for(int i=0;i
国际c语言乱码大赛图片,国际C语言乱码大赛(IOCCC)经典之作相关推荐
- c语言情书大赛图片,最美三行情书大赛获奖作品
谁闯进了谁的岁月,从此,谁在夜里写满三行情书,谁在想谁一念成痴.学习啦小编在此整理了最美三行情书大赛获奖作品,供大家参阅,希望大家在阅读过程中有所收获! 最美三行情书大赛获奖作品(1) 1. 我只在两 ...
- html乱码及图片无法显示
html乱码及图片无法显示 1.乱码:出现这种问题主要是因为编码方式 <meta charset="UTF-8">表示国际通用编码, 注意保存时也要存为UTH-8编码方 ...
- 厦门国际动漫节金海豚 “创造未来”游戏开发大赛
关于举办2018年(第十一届) 厦门国际动漫节金海豚 "创造未来"游戏开发大赛的通知 全球游戏市场在经过高速成长后,游戏类型同质化现象日趋严重.为了在竞争激烈.流量见顶的红海市场中 ...
- 中国工程机器人大赛暨国际公开赛(RoboWork)
中国工程机器人大赛暨国际公开赛(RoboWork)-探索者全地形赛 目 录 摘要 正 文 1.1 综述 1.2 系统整体设计 1.3 机械结构设计 1.4 硬件设计 1.5 软件设计 1.6 系统开发 ...
- 赛事解读|中国工程机器人大赛暨国际公开赛——飞思实验室空中机器人项目-仿真与自主任务赛项
飞思实验室承办中国工程机器人大赛暨国际公开赛--无人机仿真与自主任务赛项,自5月6日开启赛事报名通道以来,受到了全国院校的高度关注. 赛事背景: 中国工程机器人大赛暨国际公开赛是由教育部高等学校创新方 ...
- 【最新】国际绝对音名标准频率及音符长度C语言宏定义(32位无符号整型精度、十二等律体系、A4=440.00000Hz)
[最新]国际绝对音名标准频率及音符长度C语言宏定义(32位无符号整型精度.十二等律体系.A4=440.00000Hz) #ifndef __MUSIC_NOTE_H__ #define __MUSIC ...
- 如何用易语言制作微转运国际速递运单查询工具
前几天有个喜欢海淘的朋友就问我,能不能帮他制作运单查询软件,我问她想干嘛?她就说她经常在海外网站买东西,用的一直是微转运国际速递.所以她每次查询运单都要一次打开浏览器又一次关闭浏览器,十分繁琐.就问问 ...
- Paper之IEEERSJ:2009年~2019年机器人技术(IEEE机器人和自动化国际会议RSJ智能机器人与系统国际会议机器人技术:科学与系统机器人学报)历年最佳论文简介及其解读
Paper之IEEE&RSJ:2009年~2019年机器人技术(IEEE机器人和自动化国际会议&RSJ智能机器人与系统国际会议&机器人技术:科学与系统&机器人学报)历年 ...
- Qt做发布版,解决声音和图片、中文字体乱码问题
Qt做发布版,解决声音和图片.中文字体乱码问题 2011-06-25 12:27 542人阅读 评论(2) 收藏 举报 前些天做Qt发布版,发现居然不显示图片,后来才发现原来还有图片的库没加!找找吧, ...
最新文章
- 专访刘刚:360手机卫士的性能监控与优化
- Hadoop 学习笔记 (十一) MapReduce 求平均成绩
- jodd-StringTemplateParser使用
- Java常量池的大概理解
- 可以代表学计算机的标志,桌面上的图标可以用来表示
- 没有基础的想转行学习Python怎么学
- 博客专题计划:《在实践中深入理解常见网络协议》
- 新媒体配图不愁,超优质图片素材--素材路上!
- 匿名类型(C# 编程指南)
- 一说起丁克,我们普遍的认知就是,不生孩子
- 意大利不禁止华为;13 款 5G 手机时间表公布;亚马逊 CEO 遭威胁 | 极客头条
- 树莓派3 + Android Things
- 基于单片机的电集中抄表设计
- WebRTC之视频采集
- ^_^Hostname openapi.alipaydev.com not verified:
- 元宇宙链游OAS即将正式上线,社区热度只增不减
- 【Win10 尝试解决】Win10文件资源管理器无限挂起重启
- 近两年半导体重大收购兼并案
- MATLAB回归分析命令——regress命令
- AD域外计算机共享域内打印机出现“无法访问,没有权限访问网络资源,用户不得从此工作站登录网络”
热门文章
- AliOS Things 技术架构
- Android检测系统的摄像头是否可用
- USB 摄像头 进行python OpenCV 操作的基础设置【以yolo 目标检测为例】
- 从产品视角分析拼多多
- GitHub强势开源,这个神器,支持12个视频片源、高清无码、能下载、全平台 !!...
- 安徽省计算机二级考试教程,安徽省计算机二级自学教程推荐:Access(2018年版)
- 如何把密度函数化为标准正态二维分布_如何生成正态随机数?觉得是直接带入你以为的那个公式的就回家洗洗睡了...
- 项目路演/课题答辩/毕业论文答辩PPT制作
- grafana的实时地图(学习笔记)
- springboot生成图片并在图片上添加字体进行换行