- 試題排行
- 最新熱點(diǎn)
- 最新推薦
2
3
4
5
6
7
8
9
10
2008年上半年軟考軟件設(shè)計(jì)師考試試題(上午)
2008年上半年軟考網(wǎng)絡(luò)工程師考試試題(下午)
2008年上半年軟考軟件設(shè)計(jì)師考試試題(下午)
2008年上半年軟件水平考試程序員考試試題(上
2008年下半年軟考網(wǎng)絡(luò)工程師預(yù)測(cè)試題及答案
2008年上半年軟件水平考試程序員考試試題(下
2008下半年軟件水平考試軟件設(shè)計(jì)師押題試卷
08年上半年軟考數(shù)據(jù)庫(kù)系統(tǒng)工程師考試試題(上
2008下半年軟件水平考試程序員模擬試題及答
字符數(shù)字轉(zhuǎn)為整數(shù)數(shù)值(字符可以任意:比如"342A")遇到其它否數(shù)字取前數(shù)。
我所寫的程序如下,自認(rèn)為寫得不錯(cuò):
#define N 10;
int catio(const char *str) /*const 的作用是常數(shù),所以這里的地址不會(huì)返回到實(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;
}
你們說(shuō)是不是比較簡(jiǎn)單呢?現(xiàn)在看不出等看完以下的另一個(gè)程序先斷定吧。如下:
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; /*太長(zhǎng)了,略*/
:
:
case 57: d=9;break;
}
s+=d*(e/=10);
n--;
}
return (s);
}
現(xiàn)在比較來(lái)看看,不過(guò)雖然這條程序是比我那個(gè)復(fù)雜,但是也有他的思路和可取之處。像在那個(gè)for循環(huán)了,一條命令帶過(guò)很方便也很簡(jiǎn)潔。其實(shí)我們可以繼續(xù)改造這個(gè)程序,我們跟著老師的思路一步一步的把它進(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);
}
這樣是不是更簡(jiǎn)化了,那么還可以再簡(jiǎn)化下去嗎?前面的我們是可以做出來(lái)啊,當(dāng)是老師說(shuō)還可以更簡(jiǎn)單,我們都只好懷著期待的心情去聽了。他一步一步的說(shuō)出來(lái),第一就是在s+d*(e/10)這里可以變?yōu)榱硪环N形式,s=s*10+d,如果按照這樣又可以去掉一個(gè)多余的變量了,變量e就沒(méi)有了。接下來(lái)的更不可意議了,我不知道怎么說(shuō),看看程序先吧。
long catio(char *c);
{
long s=0;
for(;*p && *c>='0' && *c<='9';s=s*10+*c++-'0');
return (s);
}
大家看到了嗎?原來(lái)這么長(zhǎng)的程序可以一再簡(jiǎn)化到這個(gè)地步,這就是C語(yǔ)言的靈活了(我好像已經(jīng)說(shuō)了好幾遍了,真的沒(méi)有辦法,不得不贊嘆)。
今天就是這么一題,可真的有意外驚喜呢!好了,現(xiàn)在不寫了,還有十道練習(xí)題等著我去做呢,大家也要努力喔!
轉(zhuǎn)帖于:軟件水平考試_考試吧- 推薦給朋友
- 收藏此頁(yè)
·程序員考試補(bǔ)課筆記-第八天 (2004-12-27 13:29:00)
·程序員考試補(bǔ)課筆記-第七天 (2004-12-27 13:28:00)
·程序員考試補(bǔ)課筆記-第四天 (2004-12-27 13:26:00)
·程序員考試補(bǔ)課筆記-第三天 (2004-12-26 13:21:00)
·程序員考試補(bǔ)課筆記-第二天 (2004-12-26 13:20:00)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。