程式設計師考試補課筆記-第六天 (轉)
今天的整個課程只有這麼的一道題,但是學到的東西確很多。下面給出這條題目:
字元數字轉為整數數值(字元可以任意:比如"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!='' && *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語言的靈活了(我好像已經說了好幾遍了,真的沒有辦法,不得不讚嘆)。
今天就是這麼一題,可真的有意外驚喜呢!好了,現在不寫了,還有十道練習題等著我去做呢,大家也要努力喔!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992826/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式設計師考試補課筆記-第一天 (轉)程式設計師筆記
- 程式設計師考試補課筆記-第二天 (轉)程式設計師筆記
- 程式設計師考試補課筆記-第七天 (轉)程式設計師筆記
- 程式設計師考試補課筆記-第十天 (轉)程式設計師筆記
- 程式設計師考試補課筆記-第十一天 (轉)程式設計師筆記
- 程式設計師考試補課筆記-第十二天 (轉)程式設計師筆記
- 初級程式設計師考試大綱 (轉)程式設計師
- 高階程式設計師考試經驗 (轉)程式設計師
- 高階程式設計師考試大綱 (轉)程式設計師
- 2003年中級程式設計師考試日記--下午題(一) (轉)程式設計師
- 2003年中級程式設計師考試日記--上午題(二) (轉)程式設計師
- 2003年中級程式設計師考試日記--下午題(二) (轉)程式設計師
- 2001年高階程式設計師考試心得 (轉)程式設計師
- PHP程式設計考試PHP程式設計
- 軟體設計師考試要求及考試範圍
- java程式設計師程式設計筆試基礎學習Java程式設計師筆試
- 四. 文字程式設計--Windows程式設計課程學習筆記程式設計Windows筆記
- 5 月書訊 | 程式設計師的歷史課,是時候補補了程式設計師
- web 考試筆記Web筆記
- 程式設計師修煉之道-筆記程式設計師筆記
- 《Python語言程式設計》課程筆記Python程式設計筆記
- 12個程式設計師筆試面試寶典程式設計師筆試面試
- Java程式設計師的筆試題10道Java程式設計師筆試
- 程式設計師怎麼高效做筆記程式設計師筆記
- 歷年軟體設計師考試試題分析
- 程式設計師級資格與水平考試大綱(2003年) (轉)程式設計師
- 一個C++程式設計師的Delphi學習筆記 (轉)C++程式設計師筆記
- UI設計課程筆記(三)UI筆記
- 一個程式設計師的讀書筆記:程式設計的反思程式設計師筆記
- 寫給程式設計師的管理入門課程(轉)程式設計師
- 程式設計師校招筆試經驗小分享程式設計師筆試
- 程式設計師C語言經典筆試題程式設計師C語言筆試
- 【北京之旅】--程式設計師應聘技巧之筆試程式設計師筆試
- 中軟國際Java程式設計師筆試題Java程式設計師筆試
- 《程式設計師》試刊二卷首語 (轉)程式設計師
- Coursera課程筆記----C++程式設計----Week3筆記C++程式設計
- Coursera課程筆記----C程式設計進階----Week 5筆記C程式程式設計
- 浙大翁愷《C語言程式設計》課程筆記C語言程式設計筆記