• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    程序員考試補課筆記-第六天

    發布: 2007-5-26 13:51 | 作者: 未知 | 來源: 互聯網 | 查看: 17次 | 進入軟件測試論壇討論

    領測軟件測試網 今天的整個課程只有這么的一道題,但是學到的東西確很多。下面給出這條題目:
    字符數字轉為整數數值(字符可以任意:比如"342A")遇到其它否數字取前數。
    我所寫的程序如下,自認為寫得不錯:
    #define N 10;
    int catio(const char *str) /*const 的作用是常數,所以這里的地址不會返回到實參里*/
    {
      int num[N];
      int i=0;j=1,n=0;
      for(;*str++;i++)
      {
        if(*str<48 || *str>57)
        break; /*判斷是否數字數值*/
        num[i]=*str-48;
      }
      for(i-=1;i>=0;i--)
      {
        n+=num[i]*j;
        j*=10; 
      }
    return n;
    }
    你們說是不是比較簡單呢?現在看不出等看完以下的另一個程序先斷定吧。如下:


    long catio(char c[]);
    {
      int n,d;
      char *q,*p;
      long e=1,s=0;
      for(q=p=c,n=0;*p!='\0' && *p>='0' && *p<='9';p++,n++,e*=10);


      while(n>0)
      {
      d=*q++;
      switch(d)
      {
      case 48: d=0;break; /*太長了,略*/
         :
         :
      case 57: d=9;break;
      }
      s+=d*(e/=10);
      n--;
    }
    return (s);
    }


      現在比較來看看,不過雖然這條程序是比我那個復雜,但是也有他的思路和可取之處。像在那個for循環了,一條命令帶過很方便也很簡潔。其實我們可以繼續改造這個程序,我們跟著老師的思路一步一步的把它進化,現在看看如下:
    long catio(char c[]);
    {
      int n,d;
      char *q,*p;
      long e=1,s=0;
      for(q=p=c,n=0;*p && *p>='0' && *p<='9';p++,n++,e*=10);


      while(n>0)
      {
        d=*q++-'0';
        s+=d*(e/=10);
        n--;
      }
      return (s);
    }


      這樣是不是更簡化了,那么還可以再簡化下去嗎?前面的我們是可以做出來啊,當是老師說還可以更簡單,我們都只好懷著期待的心情去聽了。他一步一步的說出來,第一就是在s+d*(e/10)這里可以變為另一種形式,s=s*10+d,如果按照這樣又可以去掉一個多余的變量了,變量e就沒有了。接下來的更不可意議了,我不知道怎么說,看看程序先吧。
    long catio(char *c);
    {
      long s=0;
      for(;*p && *c>='0' && *c<='9';s=s*10+*c++-'0');
      return (s);
    }
      大家看到了嗎?原來這么長的程序可以一再簡化到這個地步,這就是C語言的靈活了(我好像已經說了好幾遍了,真的沒有辦法,不得不贊嘆)。
      今天就是這么一題,可真的有意外驚喜呢!好了,現在不寫了,還有十道練習題等著我去做呢,大家也要努力喔!

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>