当前位置:首页 » 编程语言 » 国际c语言乱码大赛
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

国际c语言乱码大赛

发布时间: 2022-10-23 20:38:20

A. 请问:这道题怎么做c语言

下面这段代码即为第19届IOCCC(国际混乱C语言代码大赛)优胜作品:“A clock in one line”。

main(_){_^448&&main(-~_);putchar(--_%64?32|-~7[__TIME__-_/8%8][">'txiZ^(~z?"-48]>>";;;====~$::199"[_*2&8|_/64]/(_&2?1:8)%8&1:10);}

输出结果如下:(当前时间)

!! !!!!!! !! !!!!!! !! !!!!!!!! !! !! !! !! !! !! !!!! !! !! !! !! !! !! !!!! !!!!!! !! !! !! !! !! !!!!!!!! !! !! !! !! !! !!!! !! !! !! !! !! !!!! !!!!!! !! !! !! !!!!!!

它究竟是如何做到的呢?下面为你解读:
首先,将这段代码格式化:
main(_) {_^448 && main(-~_);putchar(--_%64? 32 | -~7[__TIME__-_/8%8][">'txiZ^(~z?"-48] >> ";;;====~$::199"[_*2&8|_/64]/(_&2?1:8)%8&1: 10);}

引入变量:

main(int i) {if(i^448)main(-~i);if(--i % 64) {char a = -~7[__TIME__-i/8%8][">'txiZ^(~z?"-48];char b = a >> ";;;====~$::199"[i*2&8|i/64]/(i&2?1:8)%8;putchar(32 | (b & 1));} else {putchar(10); // newline}}

根据补码的规则,可得-~i == i+1,所以:
main(int i) {if(i != 448)main(i+1);i--;if(i % 64 == 0) {putchar('\n');} else {char a = -~7[__TIME__-i/8%8][">'txiZ^(~z?"-48];char b = a >> ";;;====~$::199"[i*2&8|i/64]/(i&2?1:8)%8;putchar(32 | (b & 1));}}

另外,因为C语言中a[b]等同于b[a],同时在运用 -~=1+ 规则,可得:
main(int i) {if(i != 448)main(i+1);i--;if(i % 64 == 0) {putchar('\n');} else {char a = (">'txiZ^(~z?"-48)[(__TIME__-i/8%8)[7]] + 1;char b = a >> ";;;====~$::199"[(i*2&8)|i/64]/(i&2?1:8)%8;putchar(32 | (b & 1));}}

将递归转换成循环,同时再做简化:
// please don't pass any command-line argumentsmain() {int i;for(i=447; i>=0; i--) {if(i % 64 == 0) {putchar('\n');} else {char t = __TIME__[7 - i/8%8];char a = ">'txiZ^(~z?"[t - 48] + 1;int shift = ";;;====~$::199"[(i*2&8) | (i/64)];if((i & 2) == 0)shift /= 8;shift = shift % 8;char b = a >> shift;putchar(32 | (b & 1));}}}

这样每次迭代会输出一个字符,每第64个字符会输出新的一行。
另外,它还使用数据表来设定输出形式,决定输出的是字符32(即字符空格)还是字符33(即字符 ! )。第一个表“>'txiZ^(~z?”是一组10位图,描述每个字符的外观;第二个表“;;;====~$::199”的作用是,从位图中选择合适的位元来展示。
第二个表
我们先检查一下第二个表,“int shift = ";;;====~$::199"[(i*2&8) | (i/64)];”其中 i/64是行数(从6到0);而 i*2&8 当且仅当i为4、5、6、7mod8时为8。
“if((i & 2) == 0) shift /= 8; shift = shift % 8”选择表的高8位(i%8=0、1、4、5)或者低8位(i=2、3、6、7)值。因此转换表最终看起来是这个样子:

row col val6 6-7 06 4-5 06 2-3 56 0-1 75 6-7 15 4-5 75 2-3 55 0-1 74 6-7 14 4-5 74 2-3 54 0-1 73 6-7 13 4-5 632-3 53 0-1 72 6-7 22 4-5 72 2-3 32 0-1 71 6-7 21 4-5 71 2-3 31 0-1 70 6-7 40 4-5 40 2-3 30 0-1 7

或者显示为表格的形式:注意:作者在表格的前两位使用了null terminator。(真狡猾!)
第一个表
__TIME__是预处理器定义的特殊的宏,它能扩展为一个字符串,内容为预处理器运行的时间,格式为“HH:MM:SS”,刚好占8个字符。注意:数字0-9的ASCII值为48-57,“:”的ASCII值为58。而每行输出64个字符,因此__TIME__ 的每个字符有8个字符的空间。
“7 - i/8%8”是当前正在输出的 __TIME__ 的索引(其中“7-”是必须的,因为我们从 i 开始向下遍历)。因此 t 即 __TIME__要输出的字符。
a的值取决于t,对应关系如下:

0 001111111 001010002 011101013 011110014 011010105 010110116 010111117 001010018 011111119 01111011: 01000000

每个数字都是一个位图,描述7段显示的字符。又因为是7位ASCII,所以高位会被清除,所以7位永远是空格,所以第二个表是这个样子:

00005511 5511 5511665522 3322 33444433

举个例子,4即01101010(1、3、5、6位显示),输出如下:

----!!--!!--!!--!!--!!--!!!!!!------!!------!!------!!--
理解了吗?现在我们再对输出做一些调整:
0011 5511 556622 3322 3344
可以编码为“?;;?==? '::799\x07”。
出于美观考虑,我们把对64位做一些修改(因为输出仅使用低6位,所以不会受到影响),于是就变成了“?{{?}}?gg::799G”(注意:第8位并没有被使用,因此我们还可以做更多的衍生创作)。
现在代码就变成了:

main(_){_^448&&main(-~_);putchar(--_%64?32|-~7[__TIME__-_/8%8][">'txiZ^(~z?"-48]>>"?{{?}}?gg::799G"[_*2&8|_/64]/(_&2?1:8)%8&1:10);}

输出结果如下:

!! !! !!!! !! !! !! !! !! !! !! !!!! !! !! !! !! !! !! !! !!!! !! !! !!!! !! !! !! !! !! !! !! !!!! !! !! !! !! !! !! !! !!!! !! !!

如预期的一样,看来我们的想法并没有错。
原文出自:StackOverflow

B. 用c 语言编写程序时,应该特别注意格式,否则会影响可读性对吗

影响可读性肯定是有的,比如同样一段简单的代码

#include<stdio.h>

intmain(){
inti;
for(i=0;i<10;i++){
printf("%d ",i);
}
return0;
}

肯定会比

#include<stdio.h>
intmain(){inti;for(i=0;i<10;i++){printf("%d ",i);}return0;}

要易读得多。


不过要说特别注意,倒也不一定。C 语言不像 Python 一样,是一门特别讲究格式的语言,Python 是靠缩进来区分区块的,所以如果你每行的缩进有问题,解释器是会报错的,这就要求你必须严格遵循缩进规则。而 C 是靠分号来区分行,大括号来区分区块的,所以只要你的分号和大括号加对地方,编译器是不会在意代码格式的。因此每年都会有国际C语言混乱代码大赛(IOCCC),专门看谁能写出最混乱的代码,比如图示这段代码,但它能顺利通过编译。



所以影响可读性是肯定的,但要说特别注意格式,C 语言还不至于。不过平常最好还是严格遵循格式,不要图省事,养成良好的习惯。

C. 国际C语言混乱代码大赛的代码样例

第21届国际C语言混乱代码大赛(IOCCC)正式发布了获奖源代码。IOCCC要求参赛者写出最有创意且最让人难以理解的C语言代码,大小限制在4 kb以内,因此每位参赛者的作品都让人印象深刻。获胜者包括1名法国人,1名韩国人,5名美国人,1名比利时人,1名以色列人,1名英国人,4名日本人和1名中国人。
选取了几个代表性作品大家共赏一下更可怕的是,它们都可以编译通过!!!! #include <stdio.h>
#include <stdlib.h>
#define s(_)sizeof(_)
#define n void*
#define z(_)_,_,_
#define x (s*)__
#define y (s*)_
#define h C(y,y)
#define o &d
#define t() (p)
#define w(_)_,_
typedef n (*(*(*(*p)(n,n))(n,n))(n,n))(n,n);
typedef struct s { struct s* a ; struct s* UNUSED; } s;
typedef struct t { struct s* UNUSED; struct s* a ; } *t;
n __(n _,n __) { return _;}n _(n _,n __){return __; }
typedef unsigned char e;
#define _(_)((*_).a)
s*
w,
a={x ,x},
b={x ,y},
c={y,x},d={y,y};s l[]={&b,&d,w (w(w(w(w(w(&d)))))),w(&d),&c,&d,w(w(w(
&d))),&c,w(&b),&d,&a,z(&d),z(w (w(w(w(w(&d)))))),&b,&b,w(&d),&a,&b,w(&
d), z(w
(w( w(w
(&d))))),w(w(w(&d))), &b,&c,&d, &d,&a,&c ,w(w(&d)), &c,z(&b) ,w(&d),w(&a)
};s* C(s* a, s* b) {s* _=malloc(s(s));_(_)=a;_((t)_)=b;return _;}e k2=s(l
);p f(p
a,p b)
{ e k;s d;p v,r, q,i,C,c,u,g,m=t( )
_ ( _(_(w)));C=t() _(_(&l[fread(&k,s(e )
,s ( e),stdin)]));v =C(_,__);d=l[k=(e )
C ( k2,k)];c=(u=a( b,_),i=(t()_((t )
_ ( _(w))))(_,_(_(o)) ),(a(_(_((t)o)),(t( )
_ ( _((t)o)))(_,__) ))(b(_((t)_((t)o) )
, ( t()_((t)_((t)o))) (_,__)),_));{p a=t( )
_ ( (t)_(o));{p b= C(_,i(u(_,__),_) )
; { p u=C(_,(t()_(_(o) ))(_,__));_(_(_(w)) )
= ( s*)i(__,_(_( _(w))));r=b(m(c,_ )
,C ( m(_,(t()_(( t)_(_(w))))(_,__) )
, ( f)));v=b(_,v);i =b(a(_,__),_);g=(b )
( a(m(c(_,__),__ ),_),_);q=u(_((t )
_ ( o)),_)((t()_( (t)_(_(w))))((t( )
_ ( _((t)o)))(_(_((t )_(w))),(t()_(_((t )
_ ( w))))(_,__))( _,__),_)(_,__),_ )
;_ ( _((t)_(w))) = (s*)u(_((t)_(o)),_ )
( (t()_((t)_(_(w)))) (_,__),_)(_(_((t)o) )
,_ ( _((t)_(w))));} }_((t)_(_(w)))=(s* )
q ( a=(t()_((t)_(_(w))) )(_,__),_((t)_(_(w))) )
; fwrite((k=k,&k2) ,s(e),u(_,g)(s(e )
, ( e)s(s[s(s[s(s[s (s)])])])),stdout )
; fwrite((k2=k,&k) ,s(e),u(__,g)(s(e )
, ( e)s(s[s(s[s(s[s (s)])])])),stdout )
;_ ( _(_((t)w)))=(s*) u((t()_(_(_((t)w))) )
( _,__),_(_(_((t)w ))));_(_((t)_(w)) )
= ( s*)q(a(_(_((t) o)),_(_((t)_(w))) )
,_ ( _((t)_(w))));} _((t)_(_((t)w)))=(s* )
( t()_(_(_((t)w))) )(_((t)_(_((t)w)) )
,u ( (t()_((t)_(_(( t)w))))(_,__),_((t )
_ ( _((t)w)))));g =u((q=u(C(__,(t( )
_ ( _(_((t)w))))(_((t )_(_((t)w))),_)),_) )
( _,__),g);v=g( __,i(u(_,i(f,_) )
( _(_((t)o)),_( (t)_((t)o))),v) )
,r= q(_
,g( f,i
(v(f,(_(_(_(w)))=(s*)m,_)),r)));return q(_,v)(r(g(__,a),g(__,b)),r);}
int main
(){w=C(C(h,h),C(h,h));return printf((e*)f(_,_)(OK , ^ Error
)) (运行生成更小的头像代码) /*++++[>i>n[t*/#include<stdio.h>/*2w0,1m2,]_<n+am+o>r>i>=>(['0n1'0)1;*/int/**/main(int/**/n,char**m){FILE*p,*q;intA,k,a,r,i/*#uinndcelfu_dset<rsitcdti_oa.nhs>i/_*/;char*d=P%d %d40%d/**/ %d 0wb+,b[1024],y[]=yuriyurarararayuruyuri*daijiken**akkari~n**/y*u*k/riin<ty(uyr)g,aur,arr[a1r2a82*y2*/u*r{uyu}riOcyurhiyua**rrar+*arayra*=yuruyurwiyuriyurara'rariayuruyuriyuriyu>rarararayuruy9uriyu3riyurar_aBrMaPrOaWy^?*]/f]`;hvroai<dp/f*i*s/<ii(f)a{tpguat<cahfaurh(+uf)a;f}vivn+tf/g*`*w/jmaa+i`ni(/***/i+k[>+b+i>++b++>l[rb;int/**/u;for(i=0;i<101;i++)y[i*2]^=~hktrvg~dmG*eoa+%squ#l2:(wn1l))v?wM353{/Y;lgcGp`vedllwudvOK`cct~[|ju{stkjalor(stwvnegtyogYURUYURI[i]^y[i*2+1]^4;/*!*/p=(n>1&&(m[1][0]-'-'||m[1][1]!=''))?fopen(m[1],y+298):stdin;/*y/riynrt~(^w^)],]c+h+a+r+*+*[n>)+{>f+o<r<(-m]=<2<5<64;}-]-(m+;yry[rm*])/[**/q=(n<3||!(m[2][0]-'-'||m[2][1]))?stdout/*]{}[*/:fopen(m[2],d+14);if(!p||/*]<<*-]>y++>u>>+r>+u+++y>--u---r>++i+++<)<;[>-m-.>a-.-i.++n.>[(w)*/!q/**/)return+printf(Cannot open40%s40for40%sing ,m[!p?1:2],!p?/*o=82]5<<+(+3+1+&.(+m+-+1.)<)<|<|.6>4>-+(>m-&-1.9-2-)-|-|.28>-w-?-m.:>([28+*/read:writ);for(a=k=u=0;y[u];u=2+u){y[k++]=y[u];}if((a=fread(b,1,1024/*,mY/R*YR*/,p/*U*/)/*R*/)>/*U{*/2&&b/*Y*/[0]/*U*/=='P'&&4==/*y*r/y)r}*/sscanf(b,d,&k,&A,&i,&r)&&!(k-6&&k-5)&&r==255){u=A;if(n>3){/*]&<1<6<?<m.-+1>3>+:+.1>3+++.-m-)-;.u+=++.1<0<<;f<o<r<(.;<([m(=)/8*/u++;i++;}fprintf(q,d,k,u>>1,i>>1,r);u=k-5?8:4;k=3;}else/*]>*/{(u)=/*{p>>u>t>-]s>++(.yryr*/+(n+14>17)?8/4:8*5/4;}for(r=i=0;;){u*=6;u+=(n>3?1:0);if(y[u]&01)fputc(/*<g-e<t.c>h.ar-(-).)8+<1.>;+i.(<)<<)+{+i.f>([180*/1*(r),q);if(y[u]&16)k=A;if(y[u]&2)k--;if(i/*(^w^NAMORI;{I*/==a/*)*/){/**/i=a=(u)*11&255;if(1&&0>=(a=fread(b,1,1024,p))&&)]i>(w)-;}{/i-f-(-m--M1-0.)<{[8]==59/**/)break;i=0;}r=b[i++];u+=(/**>>*..</<<<)<[[;]**/+8&*(y+u))?(10-r?4:2):(y[u]&4)?(k?2:4):2;u=y[u/*49;7i(w)/;}y}ru=*ri[,mc]o;n}trientuuren(*/]-(int)'`';}fclose(p);k=+fclose(q);/*]<*.na/m*o{ri{d;^w^;}}^_^}}*/returnk--1+/*''-`*/(-/*}/*/0x01);{;{}};/*^w^*/;}

D. 求1988年国际C语言乱码大赛获奖程序分析,作者是Ian Phillipps

不要再问我,我是转贴滴。。。。。。

// 编译环境main入口,CRTO.C for main(__argc, __argv, _environ);
// 方法的编译原来,返回值的寄存器状态
// 变量的类型转换reinterpret_cast
// 使用一个新的main方法,将旧的用一个新方法'decode'表示
// 根据题设,本程序执行方式为无命令参数,即,argc==1
// 变量的声名规约,改变变量名以方便理解
// 进一步重构if语句
#include <stdio.h>
int decode(int arg1,int arg2,char* sCodec){
if(1<arg1){
if(arg1<3)
decode(-79,-13,sCodec+decode(-87,1-arg2,decode(-86,0,sCodec+1)+sCodec));
if(arg1<arg2)
decode(arg1+1,arg2,sCodec);
if(decode(-94,-27+arg1,sCodec)&&arg1==2){
// 内部递归,无后续分支,可展平为递推方式
if(arg2<13)
return decode(2,arg2+1,"%s %d %d\n");
else
return 9;
}else
return 16;
}else if(arg1<-72){
// 可根据arg1范围代入。本条件代入后略
return decode(arg2,arg1,"@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<-50){
// 内部递归,无后续分支,可展平为递推方式
if(arg2==*sCodec)
return putchar(sCodec[31]);
else
return decode(-65,arg2,sCodec+1);
}else if(arg1<0){
// 内部递归,无后续分支,可展平为递推方式
return decode((*sCodec=='/')+arg1,arg2,sCodec+1);
}else if(0<arg1){ // arg1 == 1,初始情况,根据arg1取值取舍
return decode(2,2,"%s");
}else{ // arg1 == 0
if(!(*sCodec=='/'))
// 内部递归,无后续分支,可展平为递推方式
return decode(0,decode(-61,*sCodec,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),sCodec+1);
else
return 1;
}
}
int main(int argc, char* argv[], char** _environ){
return decode(argc,(int)argv,(char*)_environ);
}

// 分析出递归顶层返回值。
// 注意所有return的含义,9/16/1/putchar(),Non Zero -> TRUE
// 分析arg1的内容,重构方法,有些坳,自己试着理解吧
#include <stdio.h>
int decode(int arg1,int arg2,char* sCodec){
if(1<arg1){
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<arg2)
decode(arg1+1,arg2,sCodec);
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<arg2)
decode(arg1+1,arg2,sCodec);

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<-50){
// 判断条件可达,取舍
char* s = sCodec;
while(!(arg2==*s)){
s ++;
}
putchar(s[31]);
}else if(arg1<0){
for(;arg1<0;arg1+=(*sCodec=='/'))
sCodec ++;
decode(0,arg2,sCodec+1); // 条件合并
}else if(arg1 == 0){
while(!(*sCodec=='/')){
// 条件合并
decode(-61,*sCodec,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry");
sCodec ++;
}
}
return 1; // return TRUE only
}
int main(int argc, char* argv[], char** _environ){
decode(2,2,"%s");
return 9;
}

E. 比较好的大学生C语言竞赛编程题 或者比较有档次的竞赛有哪些(本科、研究生可以参加的)

1:C语言竞赛编程题很多,你可以去北大的ACM网上测评系统JudgeOnline上做题,它能检查你的代码是否正确。
网址:http://acm.pku.e.cn/JudgeOnline/
可以注册一个账号,它会保存你每次提交正确的代码,上面的题比较多,范围广,各种难度试题都有。当然还有其他大学的一些JudgeOnline,如上海交大的。

2:有档次的竞赛首推ACM/ICPC(国际大学生程序设计竞赛),当然也有全国大学生程序设计大赛。每年有的网站和机构也会举办编程竞赛,如这几年网络举办的网络之星程序设计大赛也很有影响力。在给出的样题第一例有对ACM的详细介绍,样题是我们学校某届程序大赛初试题,比较简单。(此外ACM程序大赛也可以用C++编程,本科生、研一可参加)

3:一些简单的ACM样题(因为是国际性比赛,ACM试题都是E文的,下面部分是翻译过来的)

H-acm规则
Description
ACM/ICPC(国际大学生程序设计竞赛)是由ACM(Association for Computing Machinery,美国计算机协会)组织的年度性竞赛,始于1976年,是全球大学生计算机程序能力竞赛活动中最有影响的一项赛事,是全世界公认的规模最大、规格最高的大学生程序设计竞赛,是参赛选手展示计算机才华的广阔舞台,是着名大学计算机教育成果的直接体现,是信息企业与世界顶尖计算机人才对话的最好机会。ACM/ICPC采用赛区选拔的方式产生参加世界决赛学校的资格,2001年,来自全球超过25个地区1141所大学的2362支队伍参加了第26届ACM/ICPC的赛区竞赛。在2002年3月,来自世界各地的约60支队伍,200多名选手参加了夏威夷总决赛的角逐。
在 ACM/ICPC 比赛中,均使用自动判题系统,这不仅减轻了ACM/ICPC比赛的举办方的负担,同时也使竞争更加的公正公平。 因为在比赛中,比赛成员就可以看到自己排名情况,这使的比赛更加的透明。
ACM/ICPC 比赛中排名是按如下方法排名的:
1: 解题数目最多的队伍排在前面。
2: 如果解题数目相等的队伍,总用时最少的排在前面。
注: 在比赛中,每道试题用时将从竞赛开始到试题解答被判定为正确为止,期间每一次错误的运行将被加罚20分钟时间,未正确解答的试题不计时。 那么所有解答出来题目的用时和罚时加起来为:该队伍所花的总用时。
现在,需要你写一个程序来给比赛队伍进行排名(假设不超过200支队伍)。
Input
多行测试数据,每行包含各个队伍的比赛信息。
每个队伍格比赛信息表示格式为:
string n m 分别表示队名、解题数量、总用时(其中:队名为长度不超过30的字符串,解题数量为1…10之间的整数,罚时的范围不超过int的范围)
当输入end时,表示输入结束。
Output
按先后名次输出各个队伍的比赛信息。
每个比赛队伍占一行。
每行格式为:
string n m 分别代表 队名 解题数量 总用时。
Example Input
amstl 3 65
danoniao 2 50
lutedan 3 60
end
Example Output
lutedan 3 60
amstl 3 65
danoniao 2 50

G-我想我需要一只船屋
Description
佛瑞德最近正在考虑在路易斯安那洲买一片土地来盖一栋房子.在进行调查研究土地的过程中佛瑞德发现,路易斯安那洲的土地由于密西西比河的侵蚀会以每年50平方英里的速度缩减.佛瑞德计划后半生都在该地度过,所以他不希望在自己的有生之年房屋受到河水的侵蚀.现在他需要知道自己是否会受到河水的侵蚀.
在做了更多的调查之后,佛瑞德得知这里的土地沿河岸以半圆形方式侵蚀,这个半圆以(0,0)为圆心的,被X轴分成上下两部分,位于X轴下边的是河水,上面是河岸.在第一年开始的时候这个半圆范围为0,也就是说河岸未被河水侵蚀.(半圆如下图所示)

Input
第一行的一个正整数N指出下边有多少组数据需要计算.下边N行,每行包含两个实数X和Y,指出佛瑞德考虑的房子以(0,0)为原点的坐标系内的位置.以英里为单位.Y为非负数.
Output
计算在X,Y位置佛瑞德的房子在第几年会被河水侵蚀.与输入数据相对应每行以如下形式输出你的计算结果:“Property N: This property will begin eroding in year Z.”, 其中N为第N组数据,Z为你计算出的开始侵蚀的年数.在最后输出一句“END OF OUTPUT.”,表示计算结束.
Example Input
2
1.0 1.0
25.0 0.0
Example Output
Property 1: This property will begin eroding in year 1.
Property 2: This property will begin eroding in year 20.
END OF OUTPUT.
Hint
• 房屋的位置不会正好在半圆边界上,要不在内,要不在外。
• 你所提交的程序计算输出会由系统自动判断。你的结果要和输出要求精确匹配,字母大小写、标点符号和空格 。包括最后一行的语句也要精确匹配。
• 所有给定数据都以英里为单位。

F-N!的计算
Description
N!=N×(N-1)×(N-2)×(N-3)×....
Input
输入第一行为一正整数m,表示下边要计算几个 N!
下一行开始为m个正整数( 1 ≤ N ≤ 11 , m ≤ 9)
Output
输出这m个正整数的阶乘结果,每个一行.
Example Input
3
1
2
5
Example Output
1
2
120

I-Vertical Histogram
Description
Write a program to read four lines of upper case (i.e., all CAPITAL LETTERS) text input (no more than 72 characters per line) from the input file and print a vertical histogram that shows how many times each letter (but not blanks, digits, or punctuation) appears in the all-upper-case input. Format your output exactly as shown.
Input
* Lines 1..4: Four lines of upper case text, no more than 72 characters per line.
Output
* Lines 1..??: Several lines with asterisks and spaces followed by one line with the upper-case alphabet separated by spaces. Do not print unneeded blanks at the end of any line. Do not print any leading blank lines.
Example Input
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
Example Output
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

J-白棋胜?还是黑棋胜?
Description
Cinderalla最近迷上了玩五子棋.可是在和其它的小伙伴一起玩时她老是输,于是她想用计算机来帮她判断棋局是那方获胜.为了简便,我们先去掉一些规则.我们认为棋盘上只要有一方的棋有五个棋子相连就确定那一方获胜.你的任务是编写一个程序来判断我们给出的棋局是那一方获胜.
Input
输入数据只有一组.第一行有两个正整数m,n(5 ≤ m,n ≤ 10),分别代表棋盘的行数和列数.紧接着的2*n+1行是棋盘的描述,棋盘由"+","-","|"构成,其中"*"代表白棋,"#"代表黑棋. "+","-","|"的ASCII码分别为43、45、124
Output
输出数据只有一组,如果白棋获胜则输出White Win!,如果黑棋获胜则输出Black Win!
Example Input
5 10
+-+-+-+-+-+-+-+-+-+-+
| |*| | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+
| | |*|#| | | | | | |
+-+-+-+-+-+-+-+-+-+-+
| | |#|*|#|#| | | | |
+-+-+-+-+-+-+-+-+-+-+
| | | | |*|#| | | | |
+-+-+-+-+-+-+-+-+-+-+
| | | | | |*| | | | |
+-+-+-+-+-+-+-+-+-+-+
Example Output
White Win!
Hint
给出的棋局必有一方是获胜的.

F. 还有什么关于编程,代码之类的比赛吗

ACM 国际大学生程序设计竞赛
google code jam
top coder

网络 网络之星
微软 编程之美

G. c语言编程用的符号有哪些

如果真正掌握了C 语言,你就能很轻易的回答上来。这个问题就请读者试着回答一下吧。本章不会像关键字一样一个一个深入讨论,只是将容易出错的地方讨论一下。

表(2.1)标准C 语言的基本符号

C 语言的基本符号就有20 多个,每个符号可能同时具有多重含义,而且这些符号之间相互组合又使得C 语言中的符号变得更加复杂起来。

你也许听说过“国际C 语言乱码大赛(IOCCC)”,能获奖的人毫无疑问是世界顶级C程序员。这是他们利用C 语言的特点极限挖掘的结果。下面这个例子就是网上广为流传的一个经典作品:

#i nclude <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?main(2,_+1,"%s %d %d "):9:16:t<0?t<-72?main(_,t,"@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' ')# }'+}##(!!/"):t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1):0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}: uwloca-O;m.vpbks,fxntdCeghiry"),a+1);}

还没发狂?看来你抵抗力够强的。这是IOCCC 1988 年获奖作品,作者是Ian Phillipps。

毫无疑问,Ian Phillipps 是世界上最顶级的C 语言程序员之一。你可以数数这里面用了多少个符号。当然这里我并不会讨论这段代码,也并不是鼓励你也去写这样的代码(关于这段代码的分析,你可以上网查询)。

H. 现在是否有国际C语言混乱代码大赛。

还存在的。
国际C语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从1984年开始,每年举办一次(1997年、1999年、2002年、2003年和2006年例外)。目的是写出最有创意的最让人难以理解的C语言代码。
作品从联机提交,并经过好几回合的裁判的审核。作品审核是基于滥用混乱代码的程度(以及创造性的滥用)。作品通过最后一轮审核的会被归成其特别的一类以示嘉奖,例如“最滥用C预处理器”或者“最古怪的行为”,并且发表在官方IOCCC网站。作品没有通过者会被删除或遗忘;该赛事主办声明:作品被声明在IOCCC网站是竞赛的锦标。
目前在官方网站已经贴出了2014年的比赛结果,说明该项赛事还是在进行中的。

I. c语言中\33[6;0H\33[K什么意思

"\33[6;0H\33[K"
首先, 两个 \33 是C语言的转义字符表示, 33是8进制, 也就是ASCII为27的那个字符,
这字符表示换码, 有的地方写作 ESC (见ASCII表)

当这个字符串用在 printf中的时候,
输出到屏幕表示对屏幕的控制, 比如改变背景或者文字颜色等.

这个格式和含义都是标准的终端的.
就上面的例子, 实际是两个控制命令:
ESC[6;0H 将光标移动到第6行的行首
ESC[K 清除从光标到行尾的内容

这个在Linux下有效. 在WINDOWS的控制台窗口是用Console Functions来控制屏幕属性.
参考 Linux终端ANSI控制码, VT100/ANSI 控制字符

J. 1987年国际C语言混乱代码大赛获奖的一行代码 无法执行程序

代码本身没有什么大问题,问题是从今天的角度来看,不是很规范,部分编译器可能报错

#include<stdio.h>
#defineunix1
intmain(){printf(&unix["21%six12"],(unix)["have"]+"fun"-0x60);return0;}