在线现看午夜福利片|女人16久久免费视频|鲁丝片一区鲁丝片二区鲁丝|一区二区三区欧美在线

  1. 
    
    <b id="glvx9"></b>
        1. <blockquote id="glvx9"><meter id="glvx9"></meter></blockquote>
            查看全部128種考試
            軟件水平考試
             考試動態(tài) 報考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專業(yè)英語 技術(shù)文章 軟考論壇 考試用書
             程序員 軟件設(shè)計師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫系統(tǒng)工程師
            1
            2
            3
            4
            5
            6
            7
            8
            9
            10
            Exam8.com  
            【字體: 程序員考試補(bǔ)課筆記-第六天
            程序員考試補(bǔ)課筆記-第六天
            spks.exam8.com 來源:考試吧(Exam8.com) 更新:2004-12-27 13:27:00 軟件水平考試 考試論壇
              今天的整個課程只有這么的一道題,但是學(xué)到的東西確很多。下面給出這條題目:

               字符數(shù)字轉(zhuǎn)為整數(shù)數(shù)值(字符可以任意:比如"342A")遇到其它否數(shù)字取前數(shù)。

            我所寫的程序如下,自認(rèn)為寫得不錯:

            #define N 10;

            int catio(const char *str) /*const 的作用是常數(shù),所以這里的地址不會返回到實(shí)參里*/

            {

              int num[N];

              int i=0;j=1,n=0;

              for(;*str++;i++)

              {

                if(*str<48 || *str>57)

                break; /*判斷是否數(shù)字?jǐn)?shù)值*/

                num[i]=*str-48;

              } 

              for(i-=1;i>=0;i--)

              {

                n+=num[i]*j;

                j*=10; 

              }

            return n;

            }

            你們說是不是比較簡單呢?現(xià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);

            }

              現(xiàn)在比較來看看,不過雖然這條程序是比我那個復(fù)雜,但是也有他的思路和可取之處。像在那個for循環(huán)了,一條命令帶過很方便也很簡潔。其實(shí)我們可以繼續(xù)改造這個程序,我們跟著老師的思路一步一步的把它進(jìn)化,現(xiàn)在看看如下:

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

            }

              這樣是不是更簡化了,那么還可以再簡化下去嗎?前面的我們是可以做出來啊,當(dāng)是老師說還可以更簡單,我們都只好懷著期待的心情去聽了。他一步一步的說出來,第一就是在s+d*(e/10)這里可以變?yōu)榱硪环N形式,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語言的靈活了(我好像已經(jīng)說了好幾遍了,真的沒有辦法,不得不贊嘆)。

              今天就是這么一題,可真的有意外驚喜呢!好了,現(xiàn)在不寫了,還有十道練習(xí)題等著我去做呢,大家也要努力喔!

            轉(zhuǎn)帖于:軟件水平考試_考試吧
            文章搜索  
            看了本文的網(wǎng)友還看了:
            網(wǎng)友評論
            昵 稱: *  評 分: 1分 2分 3分 4分 5分
            標(biāo)題:   匿名發(fā)表    (共有條評論)查看全部評論>>
            版權(quán)聲明 -------------------------------------------------------------------------------------
              如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
            關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
            Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
            中國科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
            百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機(jī)構(gòu)  經(jīng)營許可證號:京ICP060677