2008年3月25日 星期二

字串反轉遇到的問題--已解決

這幾天開始去面試
多多少少免不了要考些專業科目
考題看得出來都是一些基本的C
不過有些時候我們在機上作業久了,依賴compiler久了
就真的會對程式的觀念開始模糊,其實這樣不見的是一個好事就是了

anyway,今天考了一題關於字串反轉的問題
簡單的說就是當輸入為一個"abcde"的字串
我們要如何將其轉換成"edcba"
考的就是字串的處理以及指標與陣列之間的關係

其解答為
void reverse(char *s)
{
    int i, j;
    char c;

    for (i = 0, j = strlen(s) - 1; i < j; i++, j--)
    {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}

我的寫法並不像是上述的寫法,因為一時之間有些慌亂,
就用硬幹的方式把他湊出來
所以才在網路上尋找到了這個寫法
結果在實機作業的時候
一直遇到compile錯誤的情形
trace後發現問題出在s[i] = s[j]; 這行程式上

原因是因為我們在main function上call reverse時
其輸入若是"字串指標"時(char *s = "abc";)
在某些compiler會將此字串放在一個不可更改的記憶體上
因此在reverse function要做資料互換時
就會無法更改而一直出錯

因此,在這邊的處理方式為將輸入改為"字串陣列"(char s[]={'a','b','c','\0'})
用此種宣告即可以避免上述問題的發生

2008年3月13日 星期四

阿瞇的新菜色

阿瞇的新菜色話說每個留學生在國外必備的生活技能就是煮飯啦
自己煮可以懷念家鄉味外,最主要就是可以省錢啦
這個技能就連平日不會做菜的阿瞇瞇都學會了
本來阿瞇瞇一開始去英國只會燙青菜還有炒麵加小熱狗
而且用的都是調理包之流
出來的成品來阿瞇瞇的媽媽都很辛酸
覺得女兒一個人在國外過得太辛苦

不過經過多次的磨練
阿瞇做出來的菜色看起來真是越來越可口啦
請大家給他拍拍手~~~

不過阿瞇手藝越來越進步了
下次回來我真的就可以品嚐看看啦
我對阿咪有信心~~

2008年3月12日 星期三

昨天最夯的兩則新聞

最開心--恭喜中華隊打入北京奧運
最白癡--蠢蛋立委帶人去鬧場

歷經星期一不小心敗給加拿大隊後
中華隊終於在昨天贏了澳洲隊
順利進入北京奧運

不過在這麼歡欣鼓舞的事情發生時
沒有一家新聞台即時的發佈這個消息

反倒是大家都在注意政治新聞--昨天某立委跑去別人家鬧場
我對昨天立委的腦殘行為不是很認同
而新聞台的這麼重政治輕體育也很讓人不舒服

老實說小馬真的都快要贏了
可是偏偏就是有這麼多人在後面扯後腿
扯的是外人就算了
偏偏還是腦殘自己人
小馬在外面跑行程一定是會聽到吐血吧
難道這些人不知道低調的藝術??
現在真的是一黨獨大了,就算用裝的也可以裝謙卑啊
一群蠢蛋,真的是見獵心喜,忘了去衡量大局,忘了去評估情勢
反而還造成社會的動盪,真的是夠了~~

我這篇只是想罵那些政治人物,可以這樣去把自己的優勢玩掉
還讓對方凝聚了氣勢,除了蠢真的是沒什麼好說了