欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      國際c語言亂碼大賽經(jīng)典之作

      時間:2019-05-12 02:02:44下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《國際c語言亂碼大賽經(jīng)典之作》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《國際c語言亂碼大賽經(jīng)典之作》。

      第一篇:國際c語言亂碼大賽經(jīng)典之作

      這篇是為C寫的,不過作為代碼閱讀習(xí)慣和能力的培養(yǎng),轉(zhuǎn)自人牲一笑的bolg。http://apps.hi.baidu.com/share/detail/16373609 // 原始代碼

      #include char *a;main(int t,int _,char* a){return!0

      iK{;[{nl]'/w#q#n'wk

      nw'

      iwk{KK{nl]!/w{%'l##w#'

      nr'/ :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c

      ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w!')}+}{rl#'{n' ')# }'+}##(!/”):t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1):0 char *a;// can be omitted due to function field main(int t,int _,char* a){ return!0

      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 %dn”)

      :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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      main(2,2,“%s”)

      :*a=='/'||main(0,main(-61,*a,“!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m.vpbks,fxntdCeghiry”),a+1);} // 翻譯成常規(guī)語言

      // condition ? true : false;a,b,c generate step #include main(int t,int _,char* a){ // 邏輯運算優(yōu)先級,便于理解 if(!0

      if(t<3)

      main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a));

      else

      1;

      if(t<_)

      main(t+1,_,a);

      else

      3;

      if(main(-94,-27+t,a)&&t==2){

      if(_<13)

      return main(2,_+1,“%s %d %dn”);

      else

      return 9;

      }else

      return 16;}else{

      if(t<0){

      if(t<-72){

      return 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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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(t<-50){

      if(_==*a)

      return putchar(31[a]);// pointer compile a[b] with b[a]

      else

      return main(-65,_,a+1);

      }else{

      return main((*a=='/')+t,_,a+1);

      }

      }

      }else{

      if(0

      return main(2,2,“%s”);

      else

      // condition compile step a||b

      return *a=='/'||

      main(0,main(-61,*a,“!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m.vpbks,fxntdCeghiry”),a+1);

      } } } // 除去不需要的,重構(gòu)if語句 #include main(int t,int _,char* a){ if(1

      if(t<3)

      main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a));

      if(t<_)

      main(t+1,_,a);

      if(main(-94,-27+t,a)&&t==2){

      if(_<13)

      return main(2,_+1,“%s %d %dn”);

      else

      return 9;

      }else

      return 16;}else if(t<0){ // 根據(jù)語義,可進(jìn)一步重構(gòu)

      if(t<-72){

      return 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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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(t<-50){

      if(_==*a)

      return putchar(a[31]);// 指針編譯原理a[b]和b[a],注意是char*

      else

      return main(-65,_,a+1);

      }else{

      return main((*a=='/')+t,_,a+1);

      } }else if(0

      return main(2,2,“%s”);}else{

      if(!(*a=='/'))

      return i@bK'(q)-[w]*%n+r3#l,{}:nuwloca-O;m.vpbks,fxntdCeghiry“),a+1);

      else

      main(0,main(-61,*a,”!ek;dc

      return 1;// 等于(*a=='/')} } // 編譯環(huán)境main入口,CRTO.C for main(__argc, __argv, _environ);// 方法的編譯原來,返回值的寄存器狀態(tài) // 變量的類型轉(zhuǎn)換reinterpret_cast // 使用一個新的main方法,將舊的用一個新方法'decode'表示 // 根據(jù)題設(shè),本程序執(zhí)行方式為無命令參數(shù),即,argc==1 // 變量的聲名規(guī)約,改變變量名以方便理解 // 進(jìn)一步重構(gòu)if語句 #include int decode(int arg1,int arg2,char* sCodec){ if(1

      if(arg1<3)

      decode(-79,-13,sCodec+decode(-87,1-arg2,decode(-86,0,sCodec+1)+sCodec));

      if(arg1

      decode(arg1+1,arg2,sCodec);

      if(decode(-94,-27+arg1,sCodec)&&arg1==2){

      // 內(nèi)部遞歸,無后續(xù)分支,可展平為遞推方式

      if(arg2<13)

      return decode(2,arg2+1,“%s %d %dn”);

      else

      return 9;

      }else

      return 16;}else if(arg1<-72){

      // 可根據(jù)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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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){

      // 內(nèi)部遞歸,無后續(xù)分支,可展平為遞推方式

      if(arg2==*sCodec)

      return putchar(sCodec[31]);

      else

      return decode(-65,arg2,sCodec+1);}else if(arg1<0){

      // 內(nèi)部遞歸,無后續(xù)分支,可展平為遞推方式

      return decode((*sCodec=='/')+arg1,arg2,sCodec+1);}else if(0

      return decode(2,2,“%s”);}else{ // arg1 == 0

      if(!(*sCodec=='/'))

      // 內(nèi)部遞歸,無后續(xù)分支,可展平為遞推方式

      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的內(nèi)容,重構(gòu)方法,有些坳,自己試著理解吧 #include int decode(int arg1,int arg2,char* sCodec){ if(1

      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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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(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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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 %dn”;

      // 上方條件代入

      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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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(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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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){

      // 判斷條件可達(dá),取舍

      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;} // 分析條件,重構(gòu)2 #include int decode(int arg1,int arg2,char* sCodec){ if(1

      if(arg1<3){

      // arg1 <= 0

      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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      // 1 < arg1 < 13(max arg2)

      decode(arg1+1,arg2,sCodec);

      // 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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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 %dn”;

      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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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(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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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代碼流向,重構(gòu)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,代碼合并

      // 內(nèi)部遞歸,展平為遞推方式,注意邊界條件和遞歸嵌套的調(diào)用特點 if(arg1<3){

      decode2(0);

      decode2(1-arg2);

      decode2(-13);} if(arg1

      decode(arg1+1,arg2);decode2(-27+arg1);if(arg1==2){

      while(arg2<13){

      arg2 ++;

      if(arg1<3){

      decode2(0);

      decode2(1-arg2);

      decode2(-13);

      }

      if(arg1

      decode(arg1+1,arg2);

      decode2(-27+arg1);

      } } return 1;} int main(int argc, char* argv[], char** _environ){ decode(2,2);return 9;} // 最終結(jié)果 #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;} // 額外寫段代碼,看一下。對照之后推一下原始代碼的結(jié)果吧。#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

      r{#w'r q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;#){nl]!/n{n#';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

      for(int j=0;j

      if(a[i]==b[j]){

      a[i]=b[j+31];

      break;

      } } printf(“%s”,a);return 1;} On the /first/second/third/fourth/fifth/sixth/seventh/eigth/ninth/tenth/eleventh/twelfth/ day of Christmas my true love gave to me /twelve drummers drumming, /eleven pipers piping, /ten lords a-leaping, /nine ladies dancing, /eight maids a-milking, /seven swans a-swimming, /six geese a-laying, /five gold rings;

      /four calling birds, /three french hens, /two turtle doves and /a partridge in a pear tree./

      第二篇:C語言大賽題目精選(帶答案)

      第1題 歌手大賽問題 題目:青年歌手參加歌曲大獎賽,有10個評委進(jìn)行打分,試編程求這位選手的平均得分。3種方法:分別要求使用到排序,數(shù)組,函數(shù),指針。分析:這道題的核心程序是排序,將評委打的10個分?jǐn)?shù)利用數(shù)組按增序(或降序)排列,計算數(shù)組中除了第一個和最后一個分?jǐn)?shù)以外的數(shù)以外的數(shù)的平均分 答案: #include double Aver(int p[],int count)//求出結(jié)果,p為整型數(shù)組,count為數(shù)組大小 { double result=0;for(inti=0;i1. 11.打魚還是曬網(wǎng) 中國有句俗語叫“三天打魚兩天曬網(wǎng)”。某人從1990年1月1日起開始“三天打魚兩天曬網(wǎng)”,問這個人在以后的某一天中是“打魚”還是“曬網(wǎng)”。*問題分析與算法設(shè)計 根據(jù)題意可以將解題過程分為三步: 1)計算從1990年1月1日開始至指定日期共有多少天; 2)由于“打魚”和“曬網(wǎng)”的周期為5天,所以將計算出的天數(shù)用5去除; 3)根據(jù)余數(shù)判斷他是在“打魚”還是在“曬網(wǎng)”; 若余數(shù)為1,2,3,則他是在“打魚” 否則是在“曬網(wǎng)” 在這三步中,關(guān)鍵是第一步。求從1990年1月1日至指定日期有多少天,要判斷經(jīng)歷年份中是否有閏年,二月為29天,平年為28天。閏年的方法可以用偽語句描述如下: 如果((年能被4除盡且不能被100除盡)或能被400除盡)則該年是閏年; 否則不是閏年。C語言中判斷能否整除可以使用求余運算(即求模)*程序與程序注釋 #include int days(struct date day);struct date{ int year;int month;int day;};void main(){ struct date today,term;intyearday,year,day;printf(“Enter year/month/day:”);scanf(“%d%d%d”,&today.year,&today.month,&today.day);/*輸入日期*/ term.month=12;/*設(shè)置變量的初始值:月*/ term.day=31;/*設(shè)置變量的初始值:日*/ for(yearday=0,year=1990;year0&&day<4)printf(“he was fishing at that day.”);/*打印結(jié)果*/ elseprintf(“He was sleeping at that day.”);} int days(struct date day){ staticintday_tab[2][13]= {{0,31,28,31,30,31,30,31,31,30,31,30,31,}, /*平均每月的天數(shù)*/ {0,31,29,31,30,31,30,31,31,30,31,30,31,}, };inti,lp;lp=day.year%4==0&&day.year%100!=0||day.year%400==0;/*判定year為閏年還是平年,lp=0為平年,非0為閏年*/ for(i=1;i

      2. 12.抓交通肇事犯 一輛卡車違反交通規(guī)則,撞人后逃跑?,F(xiàn)場有三人目擊事件,但都沒有記住車號,只記下車號的一些特征。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是數(shù)學(xué)家,他說:四位的車號剛好是一個整數(shù)的平方。請根據(jù)以上線索求出車號。*問題分析與算法設(shè)計 按照題目的要求造出一個前兩位數(shù)相同、后兩位數(shù)相同且相互間又不同的整數(shù),然后判斷該整數(shù)是否是另一個整數(shù)的平方。*程序與程序注釋 #include #include void main(){ inti,j,k,c;for(i=1;i<=9;i++)/*i:車號前二位的取值*/ for(j=0;j<=9;j++)/*j:車號后二位的取值*/ if(i!=j)/*判斷二位數(shù)字是否相異*/ { k=i*1000+i*100+j*10+j;/*計算出可能的整數(shù)*/ for(c=31;c*c

      3. 14.怎樣存錢利最大 假設(shè)銀行整存整取存款不同期限的月息利率分別為: 0.63% 期限=1年 0.66% 期限=2年 0.69% 期限=3年 0.75% 期限=5年 0.84% 期限=8年 利息=本金*月息利率*12*存款年限。現(xiàn)在某人手中有2000元錢,請通過計算選擇一種存錢方案,使得錢存入銀行20年后得到的利息最多(假定銀行對超過存款期限的那一部分時間不付利息)。*問題分析與算法 為了得到最多的利息,存入銀行的錢應(yīng)在到期時馬上取出來,然后立刻將原來的本金和利息加起來再作為新的本金存入銀行,這樣不斷地滾動直到滿20年為止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一樣的。分析題意,設(shè)2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,則到期時存款人應(yīng)得到的本利合計為: 2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8 其中rateN為對應(yīng)存款年限的利率。根據(jù)題意還可得到以下限制條件: 0<=i8<=2 0<=i5<=(20-8*i8)/5 0<=i3<=(20-8*i8-5*i5)/3 0<=i2<=(20-8*i8-5*i5-3*i3)/2 0<=i1=20-8*i8-5*i5-3*i3-2*i2 可以用窮舉法窮舉所有的i8、i5、i3、i2和i1的組合,代入求本利的公式計算出最大值,就是最佳存款方案。*程序與程序注釋 #include #include void main(){ int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;float max=0,term;for(i8=0;i8<3;i8++)/*窮舉所有可能的存款方式*/ for(i5=0;i5<=(20-8*i8)/5;i5++)for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++){ i1=20-8*i8-5*i5-3*i3-2*i2;term=2000.0*pow((double)(1+0.0063*12),(double)i1)*pow((double)(1+2*0.0063*12),(double)i2)*pow((double)(1+3*0.0069*12),(double)i3)*pow((double)(1+5*0.0075*12),(double)i5)*pow((double)(1+8*0.0084*12),(double)i8);/*計算到期時的本利合計*/ if(term>max){ max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;} } printf(“For maxinumprofit,he should so save his money in a bank:”);printf(“ made fixed deposit for 8 year: %d times”,n8);printf(“ made fixed deposit for 5 year: %d times”,n5);printf(“ made fixed deposit for 3 year: %d times”,n3);printf(“ made fixed deposit for 2 year: %d times”,n2);printf(“ made fixed deposit for 1 year: %d times”,n1);printf(“ Toal: %.2f”,max);/*輸出存款方式*/ } *運行結(jié)果 For maxinumprofit,he should so save his money in a bank: made fixed deposit for 8 year: 0times made fixed deposit for 5 year: 4times made fixed deposit for 3 year: 0times made fixed deposit for 2 year: 0times made fixed deposit for 1 year: 0times Total:8841.01 可見最佳的存款方案為連續(xù)四次存5年期。

      4. 51.誰是竊賊 公安人員審問四名竊賊嫌疑犯。已知,這四人當(dāng)中僅有一名是竊賊,還知道這四人中每人要么是誠實的,要么總是說謊的。在回答公安人員的問題中: 甲說:“乙沒有偷,是丁偷的。” 乙說:“我沒有偷,是丙便的?!?丙說:“甲沒有偷,是乙偷的?!?丁說:“我沒有偷。” 請根據(jù)這四人的答話判斷誰是盜竊者。*問題分析與算法設(shè)計 假設(shè)A、B、C、D分別代表四個人,變量的值為1代表該人是竊賤。由題目已知:四人中僅有一名是竊賤,且這四個人中的每個人要么說真話,要么說假話,而由于甲、乙、丙三人都說了兩句話:“X沒偷,X偷了”,故不論該人是否說謊,他提到的兩人中必有一人是小偷。故在列條件表達(dá)式時,可以不關(guān)心誰說謊,誰說實話。這樣,可以列出下列條件表達(dá)式: 甲說:”乙沒有偷,是丁偷的?!? B+D=1 乙說:“我沒有偷,是丙偷有?!? B+C=1 丙說:“甲沒有偷,是乙偷的?!? A+B=1 丁說:“我沒有偷?!? A+B+C+D=1 其中丁只說了一句話,無法判定其真假,表達(dá)式反映了四人中僅有一名是竊賤的條件。*程序與程序注釋 #include void main(){ inti,j,a[4];for(i=0;i<4;i++)/*假定只有第i個人為竊賤*/ { for(j=0;j<4;j++)/*將第i個人設(shè)置為1表示竊賤,其余為0*/ if(j==i)a[j]=1;else a[j]=0;if(a[3]+a[1]==1&&a[1]+a[2]==1&&a[0]+a[1]==1)/*判斷條件是否成立*/ { printf(“The thief is ”);/*成立*/ for(j=0;j<=3;j++)/*輸出計算結(jié)果*/ if(a[j])printf(“%c.”,j+'A');printf(“");} } } *運行結(jié)果 The thief is B.(乙為竊賤。)

      69.魔術(shù)師的猜牌術(shù)(1)魔術(shù)師利用一副牌中的13張黑桃,預(yù)先將它們排好后迭在一起,牌面朝下。對觀眾說:我不看牌,只數(shù)數(shù)就可以猜到每張牌是什么,我大聲數(shù)數(shù),你們聽,不信?你們就看。魔術(shù)師將最上面的那張牌數(shù)為1,把它翻過來正好是黑桃A,將黑桃A放在桌子上,然后按順序從上到下數(shù)手上的余牌,第二次數(shù)1、2,將第一張牌放在這迭牌的下面,將第二張牌翻過來,正好是黑桃2,也將它放在桌子上,第三次數(shù)1、2、3,將前面兩張依次放在這迭牌的下面,再翻第三張牌正好是黑桃3。這樣依次進(jìn)行將13張牌全翻出來,準(zhǔn)確無誤。問魔術(shù)師手中的牌原始順序是怎樣安排的? *問題分析與算法設(shè)計 題目已經(jīng)將魔術(shù)師出牌的過程描述清楚,我們可以利用倒推的方法,很容易地推出原來牌的順序。人工倒推的方法是:在桌子上放13空盒子排成一圈,從1開始順序編號,將黑桃A放入1號盒子中,從下一個空盒子開始對空的盒子計數(shù),當(dāng)數(shù)到第二個空盒子時,將黑桃2放入空盒子中,然后再從下一個空盒子開始對空盒子計數(shù),順序放入3、4、5...,直到放入全部3張牌。注意在計數(shù)時要跳過非空的盒子,只對空盒子計數(shù)。最后牌在盒子中的順序,就是魔術(shù)師手中原來牌的順序。這種人工的方法是行之有效的,計算機(jī)可以模擬求解。*程序與程序注釋 #include int a[14];void main(){ inti,n,j=1;/*j:數(shù)組(盒子)下標(biāo),初始時為1號元素*/ printf(”The original order of cards is:“);for(i=1;i<=13;i++)/*i:要放入盒子中的牌的序號*/ { n=1;do{ if(j>13)j=1;/*由于盒子構(gòu)成一個圈,j超過最后一個元素則指向1號元素*/ if(a[j])j++;/*跳過非空的盒子,不進(jìn)行計數(shù)*/ else{ if(n==i)a[j]=i;/*若數(shù)到第i個空盒子,則將牌放入空盒中*/ j++;n++;/*對空盒計數(shù),數(shù)組下標(biāo)指向下一個盒子*/ } }while(n<=i);/*控制空盒計數(shù)為i*/ } for(i=1;i<=13;i++)/*輸出牌的排列順序*/ printf(”%d “,a);printf(”“);} *運行結(jié)果 The original order of cards is:1 8 2 5 10 3 12 11 9 4 7 6 13 70.魔術(shù)師的猜牌術(shù)(2)魔術(shù)師再次表演,他將紅桃和黑桃全部迭在一起,牌面朝下放在手中,對觀眾說:最上面一張是黑桃A,翻開后放在桌上。以后,從上至下每數(shù)兩張全依次放在最底下,第三張給觀眾看,便是黑桃2,放在桌上后再數(shù)兩張依次放在最底下,第三張給觀眾看,是黑桃3。如此下去,觀眾看到放在桌子上牌的順序是: 黑桃 A 2 3 4 5 6 7 8 9 10 J Q K 紅桃 A 2 3 4 5 6 7 8 9 10 J Q K 問魔術(shù)師手中牌的原始順序是什么? *問題分析與算法設(shè)計 本題可在上題的基礎(chǔ)上進(jìn)行編程,不同的在于計數(shù)的方法和牌的張數(shù),這些并不影響我們求解題目的思路,仍可按照倒推的方法,得到原來魔術(shù)師手中的牌的順序。*程序與程序注釋 #include int a[27];void main(){ inti,n,j=1;a[1]=1;/*初始化第一張牌*/ printf(”The original order of cards is:(r:rad b:block):“);for(i=2;i<=26;i++){ n=1;do{ if(j>26)j=1;/*超過最后一個元素則指向1號元素*/ if(a[j])j++;/*跳過非空的盒子,不進(jìn)行計數(shù)*/ else{ if(n==3)a[j]=i;/*若數(shù)到第3個空盒子,則將牌放入空盒中*/ j++;n++;/*對空盒計數(shù),數(shù)組下標(biāo)指向下一個盒子*/ } }while(n<=3);/*控制空盒計數(shù)為3*/ } for(i=1;i<=26;i++)/*輸出牌的排列順序*/ { printf(”%c“,a>13? 'r':'b');printf(”%d “,a>13? a-13:a);if(i==13)printf(”“);} printf(”“);} *運行結(jié)果 The original order of cards is:(r:rad b:black): b1 r6 b10 b2 r12 r3 b3 b11 r9 b4 r7 b12 b5 r4 r13 b6 b13 r11 b7 r5 r1 b8 r8 r10 b9 r2

      75.10個小孩分糖果 十個小孩圍成一圈分糖果,老師分給第一個小孩10塊,第二個小孩2塊,第三個小孩8塊,第四個小孩22塊,第五個小孩16塊,第六個小孩4塊,第七個小孩10塊,第八個小孩6塊,第九個小孩14塊,第十個小孩20塊。然后所有的小孩同時將手中的糖分一半給右邊的小孩;糖塊數(shù)為奇數(shù)的人可向老師要一塊。問經(jīng)過這樣幾次后大家手中的糖的塊數(shù)一樣多?每人各有多少塊糖? *問題分析與算法設(shè)計 題目描述的分糖過程是一個機(jī)械的重復(fù)過程,編程算法完全可以按照描述的過程進(jìn)行模擬。*程序與程序注釋 #include void print(int s[]);int judge(int c[]);int j=0;void main(){ static int sweet[10]={10,2,8,22,16,4,10,6,14,20};/*初始化數(shù)組數(shù)據(jù)*/ inti,t[10],l;printf(” child“);printf(” round 1 2 3 4 5 6 7 8 9 10“);printf(”.............................“);print(sweet);/*輸出每個人手中糖的塊數(shù)*/ while(judge(sweet))/*若不滿足要求則繼續(xù)進(jìn)行循環(huán)*/ { for(i=0;i<10;i++)/*將每個人手中的糖分成一半*/ if(sweet%2==0)/*若為偶數(shù)則直接分出一半*/ t=sweet=sweet/2;else /*若為奇數(shù)則加1后再分出一半*/ t=sweet=(sweet+1)/2;for(l=0;l<9;l++)/*將分出的一半糖給右(后)邊的孩子*/ sweet[l+1]=sweet[l+1]+t[l];sweet[0]+=t[9];print(sweet);/*輸出當(dāng)前每個孩子中手中的糖數(shù)*/ } } int judge(int c[]){ inti;for(i=0;i<10;i++)/*判斷每個孩子手中的糖是否相同*/ if(c[0]!=c)return 1;/*不相同返回 1*/ return 0;} void print(int s[])/*輸出數(shù)組中每個元素的值*/ { int k;printf(” %2d “,j++);for(k=0;k<10;k++)printf(”%4d“,s[k]);printf(”“);}--------------------作者:huang01--發(fā)布時間:2004-10-21 17:16:52--5. 76.小明買書 小明假期同爸爸一起去書店,他選中了六本書,每本書的單價分別為:3.1,1.7,2,5.3,0.9和7.2。不巧的是,小明的爸爸只帶了十幾塊錢,為了讓小明過一個愉快的假期,爸爸扔然同意買書,但提郵購一個要求,要小明從六本書中選出若干本,使得單價相加所得的和同10最接近。你能夠幫助小明解決這個問題嗎? *問題分析與算法設(shè)計 分析題意,可將題目簡化為:從六個數(shù)中選出若干個求和,使得和與10的差值最小。題目中隱含兩個問題,其一是怎樣從六個數(shù)中選出若干個數(shù);其二是求與10的差。從六個數(shù)中選出若干個數(shù)實質(zhì)是從六個數(shù)中選出若干個進(jìn)行組合。每個數(shù)在組合過程中只有兩種情況:要么是選中參加求和,要么是沒選中不參加求和。這樣就可以使用六重循環(huán)對每個數(shù)是否參加求和進(jìn)行全部可能情況的組合。關(guān)于求與10的差值應(yīng)當(dāng)注意的是:差值的含義是指差的絕對值。例如:“9-10=-1”和“11-10=1”,但9和11這兩者與10的差值都是1。若認(rèn)為”9“與”10的差值為-1就錯了。*程序與程序注釋 #include #include void main(){ int d[6],m,i,j;long b[63],flag;float c[6],min,x;printf(“Please enter the prices of 6 books:”);for(i=0;i<6;i++)scanf(“%f”,&c);/*輸入六個浮點數(shù)*/ for(i=0,min=-1,d[0]=0;d[0]<2;d[0]++)/*建立六個數(shù)的全部組合并處理*/ for(d[1]=0;d[1]<2;d[1]++)/*i:差值具有min組合的數(shù)量*/ for(d[2]=0;d[2]<2;d[2]++)/*min:與10的最小差值*/ for(d[3]=0;d[3]<2;d[3]++)/*d[]:組合時是否取該數(shù)的標(biāo)志*/ for(d[4]=0;d[4]<2;d[4]++)for(d[5]=0;d[5]<2;d[5]++){ for(flag=0,x=0,j=5;j>=0;j--)/*flag:將六個數(shù)的組合用對應(yīng)的一個十進(jìn)制位表示 x:對應(yīng)六個數(shù)組合的和*/ { x+=c[j]*d[j];flag=flag*10+d[j];} x=((x-10>0)? x-10:10-x);/*x: 組合的和與10的差*/ if(min<0){ min=x;/*對第一次計算出的差min進(jìn)行處理*/ b[i++]=flag;/*b[]:有相同的min的flag的數(shù)組 i:b[]數(shù)組的下標(biāo)*/ } else if(min-x>1.e-6)/*對新的min的處理*/ { min=x;b[0]=flag;i=1;} else if(fabs((double)x-min)<1.e-6)b[i++]=flag;/*對相等min的處理*/ } for(m=0;m0;j++,flag/=10)if(flag%10)/*將b[]中存的標(biāo)記flag還原為各個數(shù)的組合*/ if(flag>1)printf(“%.2f+”,c[j]);elseprintf(“%.2f”,c[j]);} } *運行結(jié)果 Please enter the prices of 6 books:3.1 1.7 2.0 5.3 0.9 7.2 10(+-)0.10=2.00+0.90+7.20 10(+-)0.10=1.70+2.00+5.30+0.90 10(+-)0.10=3.10+1.70+5.30 *思考題 可以看出,程序中求六個數(shù)所能產(chǎn)生全部組合的算法并不好,使用六重循環(huán)進(jìn)行處理使程序顯得不夠簡潔??梢栽O(shè)計出更通用、優(yōu)化的算法產(chǎn)生全部組合。6. 77.波松瓦酒的分酒趣題 法國著名數(shù)學(xué)家波瓦松在表年時代研究過一個有趣的數(shù)學(xué)問題:某人有12品脫的啤酒一瓶,想從中倒出6品脫,但他沒有6品脫的容器,僅有一個8品脫和5品脫的容器,怎樣倒才能將啤酒分為兩個6品脫呢? *問題分析與算法設(shè)計 將12品脫酒 8品脫和5品脫的空瓶平分,可以抽象為解不定方程: 8x-5y=6 其意義是:從12品脫的瓶中向8品脫的瓶中倒x次,并且將5品脫瓶中的酒向12品脫的瓶中倒y次,最后在12品脫的瓶中剩余6品脫的酒。用a,b,c代表12品脫、8品脫和5品脫的瓶子,求出不定方程的整數(shù)解,按照不定方程的意義則倒法為: a-> b-> c->a x y 倒酒的規(guī)則如下: 1)按a-> b-> c->a的順序; 2)b倒空后才能從a中取 3)c裝滿后才能向a中倒 按以上規(guī)則可以編寫出程序如下: *程序與程序注釋 #include voidgetti(inta,inty,int z);inti;/*最后需要分出的重量*/ void main(){ inta,y,z;printf(“input Full a,Emptyb,c,Get i:”);/*a 滿瓶的容量 y:第一個空瓶的容量 z:第二個空瓶的容量*/ scanf(“%d%d%d%d”,&a,&y,&z,&i);getti(a,y,z);/*按a-> y-> z-> a的操作步驟*/ getti(a,z,y);/*按a-> z-> y-> a的步驟*/ } void getti(inta,inty,int z)/*a:滿瓶的容量 y:第一個空瓶的容量 z:第二個空瓶的容量*/ { int b=0,c=0;/* b:第一瓶實際的重量 c:第二瓶實際的重量*/ printf(“ a%db%dc%d %4d%4d%4d”,a,y,z,a,b,c);while(a!=i||b!=i&&c!=i)/*當(dāng)滿瓶!=i或另兩瓶都!=i*/ { if(!b){ a-=y;b=y;} /*如果第一瓶為空,則將滿瓶倒入第一瓶中*/ else if(c==z){ a+=z;c=0;} /*如果第二瓶滿,則將第二瓶倒入滿瓶中*/ else if(b>z-c)/*如果第一瓶的重量>第二瓶的剩余空間*/ { b-=(z-c);c=z;} /*則將裝滿第二瓶,第一瓶中保留剩余部分*/ else{ c+=b;b=0;} /*否則,將第一瓶全部倒入第二瓶中*/ printf(“ %4d %4d %4d”,a,b,c);} }

      第三篇:c語言

      學(xué)C語言有感

      姓 名: 李文麗 學(xué) 號:034108048 班 級:083411 指導(dǎo)老師:張印

      2009年12月

      學(xué)C語言有感

      第1頁

      學(xué)C語言有感

      摘要:C語言既有高級語言的特點,又具有匯編語言的特點;既能用來編寫不依賴計算機(jī)硬件的應(yīng)用程序,又能用來編寫各種系統(tǒng)程序;是一種受歡迎、應(yīng)用廣泛的程序設(shè)計語言C語言版本。首先按照學(xué)習(xí)C語言的順序分別介紹了我在學(xué)習(xí)C語言過程中所遇到的問題,敘述了在C語言學(xué)習(xí)過程,學(xué)習(xí)C語言的重點,難點,以及易出錯的地方,并且用具體的案例做解釋。然后闡述了學(xué)習(xí)C語言的體會:C語言的語法部分是學(xué)好C語言的基礎(chǔ),學(xué)習(xí)c語言不能停留在學(xué)習(xí)它的語法規(guī)則,只有通過上機(jī)才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。最后總結(jié)學(xué)習(xí)c語言,既是件有趣的事情,又是件艱苦的事情。靜下心來學(xué)習(xí),我們會有所收獲,更會其樂無窮的。

      關(guān)鍵詞:運算符 表達(dá)式 優(yōu)先級 語句 變量

      一、C語言的學(xué)習(xí)中的問題

      在這個學(xué)期里,我們工商管理專業(yè)的學(xué)生在專業(yè)老師張印的帶領(lǐng)下進(jìn)行了實用c語言簡明教程的學(xué)習(xí)。經(jīng)過這一個學(xué)期的學(xué)習(xí),我們已經(jīng)對c語言這門課程有了一定的了解。C語言是一門最基礎(chǔ)的語言,也是一門廣泛使用的語言。所以學(xué)習(xí)C語言義不容辭

      首先,在學(xué)習(xí)的最初幾節(jié)課,老是主要向我們講述了C語言的特點,學(xué)習(xí)C語言的意義,以及學(xué)習(xí)C語言能給我們所帶來的方便優(yōu)越之處。

      C語言是一種結(jié)構(gòu)化語言。它層次清晰,簡潔緊湊、靈活方便,便于按模塊化方式組織程序,易于調(diào)試和維護(hù)。C語言的表現(xiàn)能力和處理能力極強(qiáng),語法限制不太嚴(yán)格、程序設(shè)計自由度大。它不僅具有豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問內(nèi)存的物理地址,進(jìn)行位(bit)一級的操作,適用范圍大,可移植性好??傊?,C語言既有高級語言的特點,又具有匯編語言的特點;既是一個成功的系統(tǒng)設(shè)計語言,有是一個使用的程序設(shè)計語言;既能用來編寫不依賴計算機(jī)硬件的應(yīng)用程序,又能用來編寫各種系統(tǒng)程序;是一種受歡迎、應(yīng)用廣泛的程序設(shè)計語言C語言版本。

      當(dāng)然,C語言也有自身的不足,比如:C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性,對數(shù)族下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語言比其他高級語

      學(xué)C語言有感

      第2頁

      言較難掌握。

      下面我給大家說一說我在學(xué)習(xí)C語言過程中所遇到的問題。

      在第二章,我們學(xué)習(xí)的是數(shù)據(jù)描述與基本操作。在這一章,我們主要講了數(shù)據(jù)類型,運算符與表達(dá)式,和不同類型數(shù)據(jù)間的混合運算。其中比較難以理解和掌握的是自加、自減運算符。

      自加、自減運算符作用是使變量的值增1或減1;當(dāng)符號在前,變量在后,++i/--i 變量的值先加1或先減1,然后再參與其它運算。當(dāng)符號在后,變量在前,++i/--i 變量的值先參與其它運算,然后再加1或先減1。例如: # include int main(){ int i,j;i=3;j=++i;printf(“i=%d j=%dn”,i,j);return 0;} 運行結(jié)果:i=4 j=4 在進(jìn)行自加、自減運算中我們應(yīng)該注意一下幾點:

      1.自加運算符(++)和自減運算符(--)只能用于變量,而不能用于常量或表達(dá)式,如6++或(a+b)++都是不合法的。因為5是常量,常量的值是不能改變的。(a+b)++也不可能實現(xiàn),假如a+b的值為5,那么自加后得到的6放在什么地方?

      2.++和--的結(jié)合方向是“自右向左”。負(fù)號運算符和++運算符同優(yōu)先級,而結(jié)合方向為“自右向左”,即它相當(dāng)于-(i++),如果有printf(“%d”,-i++),則先取出i的值3,輸出-i的值-3,然后i增值為4。注意-(i++)是先用i的原值3加上負(fù)號輸出-3,再對i加1,不要認(rèn)為加完1后再加負(fù)號,輸出-4,這是不對的。

      例如,x=a*b+c%d 無所謂;

      例如,a=3;y=a*++a;不同的編譯系統(tǒng)有兩種處理方式,結(jié)果不同:

      A)按從左到右的順序處理為:先取a的值3,再計算++a,a的值 自增為4,子表達(dá)式++a的值也為4,所以相乘的結(jié)果為12;

      學(xué)C語言有感

      第3頁

      B)按從右到左的順序處理為:先計算++a,a的值自增為4,子表達(dá)式++a的值也為4,再取a的值為4,所以相乘的結(jié)果為16。

      在第三章我們講的是順序結(jié)構(gòu)程序設(shè)計,其中所涉及的主要問題說優(yōu)先級。

      說到優(yōu)先級什么叫優(yōu)先級?比方說,我們在公交車終點站排座隊時總會遇到70歲以上的老人不需要排隊就能上車的情景,這就是優(yōu)先級的涵義。C程序在運行時也象排隊坐車一樣,首先照顧那些優(yōu)先級高的運算符,若是優(yōu)先級相同,那么就象遇到兩位(或兩位以上)70歲以上的老人那樣,讓他們依次上車。

      下面我們通過幾個例子來說明:

      (1)3*20/4%10 這個表達(dá)式中出現(xiàn)3種運算符,是同級運算符,運算順序按從左至右結(jié)合,因此先計算3 * 20=60,然后被4除,結(jié)果為15,最后是%(求余數(shù))運算,所以表達(dá)式的最終結(jié)果為15%10 = 5(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

      例子中的“;”是C語言的語句分隔符,執(zhí)行順序為從左到右,第1條語句執(zhí)行后a的值為3,第2條語句執(zhí)行后b的值為5,第3條語句中有兩個運算符前置+ +和*,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運算,所以a的值4參與運算,C的值為20,最后執(zhí)行第4條語句,由于a + +為后置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算后其值加1,值為5。這個例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20。(3)a = 3,b = 5,b+ = a,c = b* 5

      例子中的“,”是逗號結(jié)合運算,上式稱為逗號表達(dá)式,自左向右結(jié)合,最后一個表達(dá)式的結(jié)果值就是逗號表達(dá)式的結(jié)果,所以上面的逗號表達(dá)式結(jié)果為40,a的值為3,b的值為8,c的值為40。

      但是C語言中的優(yōu)先級的運算并不是千篇一律的,只能說是在大多數(shù)情況下,有些運算符的優(yōu)先級有其自己的特點,因此這點大家要注意。例如條件表達(dá)式:條件?結(jié)果1:結(jié)果2,這種表達(dá)式很多朋友都知道,它的作用與IF…ELSE…條件判斷語句很雷同,它運算時的優(yōu)先級就不是按照C語言的規(guī)則來完成的。所以說對于優(yōu)先級各位編程愛好者一定靈活掌握,不要死記硬背。

      第三四章的選擇結(jié)構(gòu)程序設(shè)計和循環(huán)結(jié)構(gòu)設(shè)計說我們這學(xué)期所學(xué)內(nèi)容的重點。在這里,學(xué)者結(jié)構(gòu)程序設(shè)計比較簡單,我們就不多說了,主要談一下循結(jié)構(gòu)環(huán)程序設(shè)計。

      學(xué)C語言有感

      第4頁

      循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機(jī)特長的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do –while循環(huán)和for循環(huán)。四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提昌用goto循環(huán),所以下面我們重點講解另外的三種循環(huán)。

      用while和do—while循環(huán)時,循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)是在語句1中進(jìn)行的;while 循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do—while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do—while的循環(huán)體最少被執(zhí)行一次,而while 循環(huán)和for就不一定了。這三種循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán),而goto語句與if構(gòu)成的循環(huán),不能用break和 continue語句進(jìn)行控制。這三種結(jié)構(gòu)并不是彼此孤立的,在循環(huán)中可能出現(xiàn)分支、順序結(jié)構(gòu),分支中也可能出現(xiàn)循環(huán)、順序結(jié)構(gòu)而把循環(huán)、分支看成一個語句,它又是構(gòu)成順序結(jié)構(gòu)的一個元素,因此這三種結(jié)構(gòu)相互結(jié)合,就能實現(xiàn)各種算法,設(shè)計出解題程序,但若是很大的題目,這樣編出的程序往往很長,重復(fù)結(jié)構(gòu)多,并且可閱讀性差,因此我們常將C程序設(shè)計成模塊化結(jié)構(gòu)。

      二、C語言學(xué)習(xí)的重點、難點

      針對我個人而言,在C語言學(xué)習(xí)過程,學(xué)習(xí)C語言的重點,難點,以及易出錯的地方主要有以下幾個方面: 如果對幾個變量賦予同一個初值,應(yīng)寫成: int a=3,b=3,c=3;表示a、b、c的初值都是3。不能寫成: int a=b=c=3;2 強(qiáng)制類型轉(zhuǎn)換其一般形式為(類型名)(表達(dá)式)表達(dá)式應(yīng)該用括號括起來。如(int)(x+y)表示將x+y的值轉(zhuǎn)換成整形如果寫成(int)x+y則表示將x轉(zhuǎn)換成整形,然后與y相加。使用scanf函數(shù)注意的問題: ①“格式控制”后面應(yīng)當(dāng)是變量地址,而不應(yīng)是變量名。如 scanf(“%d”,a)是不對的,應(yīng)改為scanf(“%d”,&a);②scanf函數(shù)格式控制最后面不能有n否則將沒有結(jié)果輸出如scanf(“%dn”,&a);是不對的。③輸入數(shù)據(jù)時不能規(guī)定精度,如scanf(“%7.2f”),&a);是不合法的 ④如果在%后有一個“*”附加說明符,表示跳過它指定的列數(shù)。

      學(xué)C語言有感

      第5頁

      三、學(xué)習(xí)c語言的體會

      在經(jīng)過了一個學(xué)期的學(xué)習(xí)之后,對于學(xué)習(xí)c語言心得體會也總結(jié)了一下:

      1、既然是一門語言,他就漢語,英語一樣,都有自己的語法規(guī)則,學(xué)習(xí)一門語言,就是要按照它的語法來編程。C語言的語法部分是學(xué)好C語言的基礎(chǔ),只有學(xué)好了這些語法,才會寫程序,看程序。所以對一個初學(xué)者來說,加深對課堂講授內(nèi)容的理解,要扎實地熟悉每一個語法,并能根據(jù)這些語法來編程。

      2、課堂上要講授許多關(guān)于c語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機(jī)練習(xí),對于語法知識有了感性的認(rèn)識,加深對它的理解,在理解的基礎(chǔ)上就會自然而然地掌握c語言的語法規(guī)定。對于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實踐中會發(fā)現(xiàn)原來理解的偏差,這是由于大部分學(xué)生是初次接觸程序設(shè)計,缺乏程序設(shè)計的實踐所致。

      3、學(xué)習(xí)c語言不能停留在學(xué)習(xí)它的語法規(guī)則,而是利用學(xué)到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機(jī)幫助我們解題。只有通過上機(jī)才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。學(xué)習(xí)C語言是沒有什么捷徑的,打好基礎(chǔ),做好每章的練習(xí)才是關(guān)鍵。尤其是書本里的習(xí)題,不能因為簡單就不去實踐,學(xué)習(xí)C語言,乃至于學(xué)習(xí)所有的電腦知識都是一樣的,實踐練習(xí)永遠(yuǎn)處于最為重要的地位,須知電腦是要實際操作的,對于C語言,更是要是把這個程序自己編出來并且運行成功,知識點才記得最為深刻。

      通過上機(jī)實驗來驗證自己編制的程序是否正確,恐怕是大多數(shù)同學(xué)在完成老師作業(yè)時的心態(tài)。但是在程序設(shè)計領(lǐng)域里這是一定要克服的傳統(tǒng)的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去“掩蓋”程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機(jī)調(diào)試運行時,可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發(fā)能力。學(xué)習(xí)c語言更為重要的是掌握編程的思想,如何用簡捷的方法解決一個問題。同樣做一個循環(huán)問題,可能有人要做300次循環(huán),而有的人要做100次,這就是差距。平時,我們學(xué)習(xí)的時候要注意掌握每個概念,當(dāng)然理論的學(xué)習(xí)是離不開實踐的,尤其是c語言,需要你編寫大量的程序,最初可以學(xué)著別人的程序打,慢慢就應(yīng)該獨立出來,把自己的想法用c語言描述出來,這是一件十分快樂的事情。建議初學(xué)者不要看高級編程,先勤寫代碼、多看代碼、培

      學(xué)C語言有感

      第6頁

      養(yǎng)風(fēng)格、熟悉語法、最關(guān)鍵的還是把握思想。當(dāng)你能夠信手拈來的時候,你的c語言才可以說學(xué)會了。一定要養(yǎng)成自己獨立寫完一個程序的能力,這樣可以有一種成就感。不斷培養(yǎng)這種成就感,循序漸進(jìn),進(jìn)步是自然的事情。

      四、總結(jié)

      學(xué)習(xí)c語言,既是件有趣的事情,又是件艱苦的事情。說它有趣,是因為從中你能得到快樂,能使你的計算機(jī)整體水平上升一大步。說它艱苦,是因為學(xué)習(xí)它的過程比起學(xué)習(xí)其他計算機(jī)知識,要難得多

      C語言只是一門計算機(jī)語言,說到底就是一種工具。它的用處就是可以讓你用它編出能夠運行的程序來,而這些程序可以實現(xiàn)某些人需要的功能。人通過學(xué)習(xí)c語言也可以更加深入的了解計算機(jī),所以很多人都把c語言作為計算機(jī)入門的第一門語言來學(xué)習(xí),因為他學(xué)習(xí)起來相對簡單一些。至于實際的意義,無非是讓你多學(xué)會一門技能,讓你更加深入對計算機(jī)的了解,為學(xué)習(xí)其他計算機(jī)語言打下好的基礎(chǔ)。

      學(xué)習(xí)最好抱著一種踏踏實實的心態(tài),老是想著有什么實際的好處并不會促進(jìn)我們的學(xué)習(xí),因為知識對人的影響是潛移默化的,靜下心來學(xué)習(xí)吧,我相信我們會有收獲的!而且如果你真的用心學(xué)習(xí),會發(fā)現(xiàn)學(xué)起來越來越有意思,也會給你帶來無窮的樂趣的!

      學(xué)C語言有感

      第7頁

      參考文獻(xiàn):

      [1] 3 沈其益等編著,棉花病害——基礎(chǔ)理論與防治,北京:科學(xué)出版社,1992.7 [2] 3 沈其益、張三等編著,棉花病害——基礎(chǔ)理論與防治,北京:科學(xué)出版社,1992.7。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。參考文獻(xiàn)(不少于10篇,中文參考文獻(xiàn)不少于7篇,英文不少于3篇)

      學(xué)C語言有感

      第8頁

      學(xué)C語言有感

      第9頁

      第四篇:如何學(xué)C語言

      如何學(xué)C語言

      (一)“項目驅(qū)動”式教學(xué)

      目前最著名、最有影響、應(yīng)用最廣泛的windows、linux和UNIX三個操作系統(tǒng)都是用C語言編寫的。0S是計算機(jī)系統(tǒng)(由軟硬件兩個子系統(tǒng)構(gòu)成)的核心和靈魂,它是軟件中最龐大最復(fù)雜的系統(tǒng)軟件。既然如此龐大復(fù)雜的0S都可以用c語言編寫,從狹義而言,還有什么系統(tǒng)軟件和應(yīng)用軟件不能用c語言編寫呢?由此可以肯定的說,c語言是一門十分優(yōu)秀而又重要的語言。

      c語言程序設(shè)計是過程性程序設(shè)計語言,它的發(fā)展貫穿了計算機(jī)發(fā)展的歷程,它蘊含了程序設(shè)計的基本思想,囊括了程序設(shè)計的基本概念,所以它是理工科高等院校的一門基礎(chǔ)課程。從市面上有關(guān)c語言的書籍和高等院校采用的教材來看,它們有一個共性,那就是:脫離了實際應(yīng)用(全是小打小鬧的小例子),純粹的過程性程序設(shè)計,沒有軟件工程思想的體現(xiàn),沒有一定程序設(shè)計風(fēng)格,僅僅是為了讓大家明白什么是c語言而已。

      高等院校開設(shè)c語言程序設(shè)計的目的是讓學(xué)生對程序設(shè)計有個入門,有個直觀的理解,同時為其他后續(xù)課程作鋪墊。但是如果教學(xué)僅僅以此為目的,那么教學(xué)本身就效果而言是個大大的失敗。

      大家知道,在商業(yè)上講究唯利是圖,“利”是商業(yè)追求的目標(biāo),離開了“利”經(jīng)商,則商無動力,其結(jié)果是必敗無疑。在c語言程序設(shè)計教學(xué)當(dāng)中,教師應(yīng)該把“唯用是圖”作為教學(xué)的首要目標(biāo)。如果拋開了實際應(yīng)用進(jìn)行程序設(shè)計教學(xué),就是紙上談兵,就是“說明書”式的教學(xué)。印度的程序設(shè)計課程采用“事件驅(qū)動式”教學(xué),我認(rèn)為在中國的c語言程序設(shè)計教學(xué)中應(yīng)該采用“項目驅(qū)動式”教學(xué)?!绊椖框?qū)動式”教學(xué)就是以項目為目的,以c語言理論教學(xué)為過程,最終能用c語言設(shè)計項目,實現(xiàn)項目的要求?!绊椖框?qū)動式”教學(xué)的關(guān)鍵在于培養(yǎng)學(xué)生“如何做什么”和“可以干什么”。一個項目就是一個工程,在“項目驅(qū)動式”教學(xué)中,首先應(yīng)該讓學(xué)生簡單了解什么是軟件工程思想,其次在c語言理論教學(xué)過程中,讓學(xué)生懂得面向?qū)ο蟮某绦蛟O(shè)計的風(fēng)格,最后引導(dǎo)他們來設(shè)計項目。

      (二)“項目驅(qū)動”式教學(xué)應(yīng)注意的問題

      1.c語言程序設(shè)計教學(xué)要幫助學(xué)生樹立面向工程的觀點

      在計算機(jī)行業(yè)中,軟件是通過人們的智力活動、把知識與技術(shù)轉(zhuǎn)化成信息的一種產(chǎn)品。軟件的設(shè)計已經(jīng)用工程的觀念來進(jìn)行管理。軟件設(shè)計工作被當(dāng)作一項系統(tǒng)工程來對待。軟件的的生存周期一般可分為以下階段:問題定義、可行性研究、需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼、測試、運行與維護(hù)。我們不難看出軟件工程的復(fù)雜程度是很大的。理工科高等院校把c語言作為一門基礎(chǔ)課程,也是為了給社會培養(yǎng)信息技術(shù)人才。眾所周知,養(yǎng)成一個好的習(xí)慣是非常重要的,所以c語言程序設(shè)計作為大多數(shù)工科院校學(xué)生接觸的第一門程序設(shè)計語言(有的院校講pascal),就應(yīng)該讓學(xué)生樹立正確的觀點。那么當(dāng)前的程序設(shè)計教學(xué)也必須以切合將來軟件工程開發(fā)的實際需要為第一目標(biāo),使學(xué)生在學(xué)習(xí)程序設(shè)計的初級階段就樹立正確的軟件工程觀點。這樣做不僅可以為學(xué)生將來從事計算機(jī)應(yīng)用設(shè)計打下良好的基礎(chǔ),而且有利于培養(yǎng)學(xué)生分析問題的完備性,以及統(tǒng)籌全局,協(xié)調(diào)關(guān)系的基本素質(zhì)。

      2.理論教學(xué)應(yīng)從單一的“結(jié)構(gòu)化程序設(shè)計”向“結(jié)構(gòu)化與面向?qū)ο蟛⑴e”轉(zhuǎn)變

      “結(jié)構(gòu)化程序設(shè)計”方法是程序設(shè)計的基礎(chǔ),必須讓學(xué)生掌握得堅實可靠。結(jié)構(gòu)化程序設(shè)計的過程是培養(yǎng)學(xué)生思維能力的過程,在教學(xué)中經(jīng)常發(fā)現(xiàn)有些學(xué)生的思維混亂。這些都是缺乏思維訓(xùn)練的結(jié)果。結(jié)構(gòu)化程序設(shè)計的訓(xùn)練不僅可以讓學(xué)生養(yǎng)成良好的程序設(shè)計習(xí)慣,而且可以有效地培養(yǎng)學(xué)生思維的條理性和邏輯性。所以在授課過程中要注意講解結(jié)構(gòu)化程序設(shè)計的思想時應(yīng)突出兩點:(1)程序的質(zhì)量首先取決于它的結(jié)構(gòu)。(2)程序設(shè)計的基本方法是自頂向下地逐步求精和模塊化。

      在c程序教學(xué)過程中,越到后面的章節(jié),學(xué)生越會產(chǎn)生設(shè)計程序逐漸變難的感覺,這是不符

      合邏輯的一種怪現(xiàn)象。按照常理,C語言學(xué)的越多,說明你的程序設(shè)計知識越多,設(shè)計起程序來應(yīng)該更加得心應(yīng)手,那么出現(xiàn)這種現(xiàn)象的原因何在呢?當(dāng)然該問題的出現(xiàn)的原因是多方面的,但是其中最重要的一點就是長期以來程序設(shè)計的觀念不是以如何處理好對象為出發(fā)點,而是以如何使用好語言為基本點。受這種思想的影響,我們的程序設(shè)計教學(xué)大多數(shù)不是以如何解決好問題為重點,而是以講解語法規(guī)則和語句格式為重點,是“說明書”式的教學(xué)。這樣做造成的結(jié)果就是見到一個程序后學(xué)生首先想到是該用哪條語句,而不是思考怎樣合理的解析。要切實解決這個問題,首先應(yīng)該改變程序設(shè)計的觀念?!懊嫦?qū)ο蟪绦蛟O(shè)計”思想是目前最為流行、極為實用的一種程序設(shè)計方法,但是讓學(xué)生直接接觸“面向?qū)ο蟪绦蛟O(shè)計”,肯定不能對程序設(shè)計打下牢固的基礎(chǔ)?!敖Y(jié)構(gòu)化與面向?qū)ο蟛⑴e”是現(xiàn)代計算機(jī)程序設(shè)計的發(fā)展趨勢,應(yīng)該認(rèn)真探索研究,讓學(xué)生有一個較為輕松的學(xué)習(xí)過程。程序設(shè)計的實質(zhì)就是編寫處理對象的過程,所以將c與c++有機(jī)的融為一體的教材應(yīng)該是首選教材,在教學(xué)過程中,我們應(yīng)該從社會發(fā)展的角度進(jìn)行探索研究,將目前最為流行又極為實用“面向?qū)ο蟪绦蛟O(shè)計”思想融合到c語言教學(xué)中。

      3.c語言教學(xué)應(yīng)培養(yǎng)學(xué)生良好的程序設(shè)計風(fēng)格

      具有良好的設(shè)計風(fēng)格應(yīng)該是程序員所具備的基本素質(zhì),在實際的項目中程序員往往都有自己的一些編程風(fēng)格。目前95%以上的程序設(shè)計書籍不注重程序設(shè)計風(fēng)格問題,這導(dǎo)致了很多學(xué)生沒有良好的程序設(shè)計風(fēng)格,在他們剛剛畢業(yè)踏入社會時,如果周圍的同事沒有良好的編程風(fēng)格,那么很難通過環(huán)境來使自己提高這方面的素質(zhì),即使有提高也不容易比較全面的提高。因此在學(xué)生接觸的第一門程序設(shè)計語言教學(xué)中,就應(yīng)該培養(yǎng)學(xué)生良好的程序設(shè)計風(fēng)格,使他們一進(jìn)工作環(huán)境就具備這個素質(zhì)。

      Pascal設(shè)計者N.Writh教授十分重視程序設(shè)計風(fēng)格的養(yǎng)成,他堅信“教給學(xué)生們以表達(dá)他們思維的語言會深深地影響他們思維和創(chuàng)造發(fā)明的習(xí)慣,而正是這些語言本身的混亂直接影響著學(xué)生們的程序設(shè)計的風(fēng)格”,他這里所指的“這些運用”是當(dāng)時那些主要用于程序設(shè)計教學(xué)的計算機(jī)語言。對學(xué)生來講,一開始就強(qiáng)調(diào)程序設(shè)計風(fēng)格很有必要,良好的程序設(shè)計風(fēng)格不僅有助于提高程序的可靠性、可理解性、可測試性、可維護(hù)性和可重用性,而且也能夠促進(jìn)技術(shù)的交流,改善軟件的質(zhì)量。所以培養(yǎng)良好的程序設(shè)計風(fēng)格對于初學(xué)者來說非常重要。程序設(shè)計風(fēng)格,實際上是指的是編碼風(fēng)格。在教學(xué)過程中應(yīng)從源程序文檔化,數(shù)據(jù)說明的原則,輸入/輸出方法這三個方面培養(yǎng)學(xué)生的編碼風(fēng)格,進(jìn)而從編碼原則探討提高程序的可讀性、改善程序質(zhì)量的方法。

      (1)源程序文檔化。編碼的目的是產(chǎn)生程序,但是為了提高程序的可維護(hù)性。源代碼是需要實現(xiàn)文檔化的。源程序文檔化包括選擇標(biāo)識符(變量和標(biāo)號)的名字、安排注釋以及標(biāo)準(zhǔn)的書寫格式等。

      ①選擇標(biāo)識符的命名規(guī)則。標(biāo)識符包括模塊名、變量名、常量名、標(biāo)號名、子程序名等。這些名字應(yīng)能反映它所代表的實際東西,應(yīng)有一定實際意義,使其能顧名思義。另外在模塊名、變量名、常量名、標(biāo)號名、子程序名中使用下劃線是一種風(fēng)格。使用這一技術(shù)的一種廣為人知的命名規(guī)則就是匈牙利命名法(變量類型由一個或兩個字符表示,并且這些字符將作為變量名的前綴)。當(dāng)然使用匈牙利命名法與否都沒有錯誤,重要的是要保持一致性——在整個程序中使用相同的命名規(guī)則。這就是說,如果你在一個小組環(huán)境中編程,你和其他小組成員應(yīng)該制定一種命名規(guī)則。并自始至終使用這種規(guī)則。如果有人使用了別的命名規(guī)則,那么集成的程序讀起來將是很費勁的。此外,你還要與程序中用到的第三方庫(如果有的話)所使用的風(fēng)格保持一致。如果可能的話,你應(yīng)該盡量使用與第三方庫相同的命名規(guī)則,這將加強(qiáng)你的程序的可讀性和一致性。

      ②注釋。程序中的注釋是程序設(shè)計者與程序閱讀者之間通信的重要手段。注釋能夠幫助讀者理解程序,并為后續(xù)測試維護(hù)提供明確的指導(dǎo)信息。因此,注釋是十分重要的,大多數(shù)程序

      設(shè)計語言提供了使用自然語言來寫注釋的環(huán)境,為程序閱讀者帶來很大的方便。注釋分為功能性注釋和序言性注釋。

      a.功能性注釋。功能性注釋在源程序中,用以描述其后的語句或程序段是在做什么工作,也就是解釋下面要“做什么”,而不是解釋下面怎么做。對于書寫功能性注釋,要注意以下幾點:第一描述一段程序,而不是每一個語句。第二利用縮進(jìn)和空行,使程序與注釋容易區(qū)別。第三注釋要準(zhǔn)確無誤。

      b.序言性注釋。序言性注釋通常位于每個程序模塊的開頭部分,它給出程序的整體說明,對于理解程序具有引導(dǎo)作用。有些軟件開發(fā)部門對序言性注釋做了明確而嚴(yán)格的規(guī)定,要求程序編制者逐項列出。有關(guān)內(nèi)容包括:程序標(biāo)題;有關(guān)該模塊功能和目的的說明;主要算法;接口說明:包括調(diào)用形式,參數(shù)描述,子程序清單;有關(guān)數(shù)據(jù)描述;模塊位置(在哪一個源文件中,或隸屬于哪一個軟件包);開發(fā)簡歷:模塊設(shè)計者、復(fù)審考、復(fù)審日期。③用標(biāo)準(zhǔn)的書寫格式。源程序清單的書寫建議采用以下幾點:

      a.每行只寫一條語句;

      b.用分層縮進(jìn)的寫法顯示嵌套結(jié)構(gòu)層次,這樣可使程序的邏輯結(jié)構(gòu)更加清晰,層次更加分明。c.書寫表達(dá)式時適當(dāng)使用空格或圓括號作隔離符。

      d.在注釋段周圍加上邊框;

      e.注釋段與程序段、以及不同的程序段之間插入字行;

      (2)數(shù)據(jù)說明采用的原則。在編寫程序時,要注意數(shù)據(jù)說明的風(fēng)格。

      數(shù)據(jù)說明的次序如果規(guī)范,將有利于測試,排錯和維護(hù)。首先說明的先后次序要固定,例如,按常量說明、簡單變量類型說明、數(shù)組說明用數(shù)據(jù)塊說明、所有的文件說明的順序說明。當(dāng)然在類型說明中還可進(jìn)一步要求,例如按如下順序排列:整型量說明、實型量說明、字符量說明、邏輯說明。

      其次當(dāng)用一個語句說明多個變量名時,應(yīng)當(dāng)對這些變量按字母的順序排列。

      最后對于復(fù)雜數(shù)據(jù)結(jié)構(gòu),應(yīng)利用注釋說明實現(xiàn)這個數(shù)據(jù)結(jié)構(gòu)的特點。

      (3)輸入/輸出方法。輸入/輸出的方式和格式應(yīng)當(dāng)盡量避免因設(shè)計不當(dāng)給用戶帶來的麻煩。這就要求,源程序的輸入/輸出風(fēng)格必須滿足能否為用戶接受這一原則。所以在設(shè)計程序時,應(yīng)考慮以下原則:輸入數(shù)據(jù)時,要使輸入的步驟和操作盡可能簡單,應(yīng)允許使用自由格式輸入;應(yīng)允許缺省值;對輸入的數(shù)據(jù)要進(jìn)行檢驗,以保證每個數(shù)據(jù)的有效性。

      (三)結(jié)束語

      在教學(xué)過程中,我們讓學(xué)生設(shè)計一個程序模擬體育彩票的銷售與對獎的過程,取得了良好的效果。他不僅啟發(fā)和誘導(dǎo)了學(xué)生獨立思考、積極思維的主動性,而且充分調(diào)動了學(xué)生學(xué)習(xí)的自覺性和積極性,使學(xué)生融會貫通地掌握了所學(xué)知識,提高了分析問題和解決實際問題的能力。

      搞好c程序設(shè)計的教學(xué)工作涉及的因素很多,如果以項目來驅(qū)動教學(xué),首先讓學(xué)生樹立面向工程的思想,其次把教學(xué)從單一的“結(jié)構(gòu)化程序設(shè)計”向“結(jié)構(gòu)化與面向?qū)ο蟛⑴e”轉(zhuǎn)變,最后特別要培養(yǎng)學(xué)生養(yǎng)成良好的編碼風(fēng)格,從而使他們學(xué)會能夠“干什么”,那么我們認(rèn)為教學(xué)目的就達(dá)到了。

      第五篇:C語言

      1.算法(Algorithm)是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決

      問題的策略機(jī)制。也就是說,能夠?qū)σ欢ㄒ?guī)范的輸入,在有限時間內(nèi)獲得所要求的輸出。

      2.算法具有以下特點:有窮性、確定性、有零個或多個輸入、有一個或過個輸出、可行

      性。

      3.結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。

      4.結(jié)構(gòu)化程序:自頂向下、逐步求精、模塊化設(shè)計、結(jié)構(gòu)化編碼。

      5.什么叫結(jié)構(gòu)化算法,為什么要提倡結(jié)構(gòu)化算法:結(jié)構(gòu)化算法是由一些基本結(jié)構(gòu)順序組成的。在基本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個基本的結(jié)構(gòu)范圍內(nèi)。一個非結(jié)構(gòu)化的算法可以用一個等價的結(jié)構(gòu)化算法代替,其功能不變。跟結(jié)構(gòu)化算法比較起來,非結(jié)構(gòu)化算法有以下缺點。流程不受限制的隨意轉(zhuǎn)來轉(zhuǎn)去,使流程圖豪無規(guī)律.使人在閱讀的時候難以理解算法的邏輯.難以閱讀,也難以修改.從而使算法的可靠性和可維護(hù)性難以保證。

      6.結(jié)構(gòu)化程序設(shè)計(structured programming)是進(jìn)行以模塊功能和處理過程設(shè)計為主的詳

      細(xì)設(shè)計的基本原則

      下載國際c語言亂碼大賽經(jīng)典之作word格式文檔
      下載國際c語言亂碼大賽經(jīng)典之作.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        C語言

        整形 字符型 單精度型基本類型雙精度型枚舉類型數(shù)組類型構(gòu)造類型結(jié)構(gòu)體類型 數(shù)據(jù)類型 共同體類型指針類型(C語言的精華)空類型整形:int 字符型 char 單精度實型 float雙精度實......

        C語言

        Home Exam List Notification Problem Ranklist Message User Information HJP-2013學(xué)期作業(yè) 程序設(shè)計題1. (10分) 一秒鐘以后題目描述 輸入某時刻的時、分......

        C語言

        第十章 結(jié)構(gòu)體與共用體 10.1 選擇題 【題10. 1】已知學(xué)生記錄描述為 struct student {int no; char name[20]; char set; struct {int year; int month; int day; }bi......

        C語言

        Description 編寫程序,輸入三個整數(shù)變量hour(小時)、minute(分鐘)、second(秒)代表一個時間, 輸出該時間20秒以后的時間。 輸入格式 一行三個整數(shù),分別代表小時、分鐘、秒,中間使用冒......

        c語言

        1.編寫一程序P111.C實現(xiàn)以下功能 x(x只考慮整數(shù)int且必須定義為int、但F(x)完全可能超過int的表示范圍)通過鍵盤輸入(輸入前給出提示Please input x:),然后計算并在屏幕上輸......

        C語言

        第1章 C語言程序設(shè)計初步 本章是C語言程序設(shè)計的入門部分, 從整體上介紹C語言的起源和發(fā)展,講述C語言的特點、結(jié)構(gòu)和基礎(chǔ)語法要點。 1.1 C語言概述 1.1.1 C語言的發(fā)展 C語言是界上......

        c語言

        個 人 簡 歷 個人信息 姓 電 Email 畢業(yè)院校 學(xué) 歷 名 話 許松 *** 395458593@qq.com 中南財經(jīng)政法大學(xué) 本 科 性 年 專 籍 別 齡 業(yè) 貫 男 22 計算機(jī)信息管理 四......

        c語言

        第一次大作業(yè) 作業(yè)題目: 第一題:編寫一個程序,要求實現(xiàn)以下功能:輸入單價和數(shù)量,求出貨物的金額。貨物可能會有折扣,如有折扣,請計算折后金額。要求程序人機(jī)界面友好,操作使用方便。......