附帶條件:可以用任何 loop 如 : for , while 之類.且限用十行之內的程式碼.
其實它只是要考 recursive 的觀念.去掉 function 宣告,好像4行就可以搞定。
long sum(long N)
{
if (N > 1)
return (N + sum(N - 1));
else
return 1;
}
配合 C 語言特有 ? : 語法應該一行就可以完成:
long sumN(long N)
{
return ( (N > 1) ? (N + sumN(N - 1)) : 1);
}
其實此問題無法考出程度 ,倒是可以考個 pointer, function pointer, 或是 linked list 之類。
另一個問題是 求質數 (Prime) ,說實在的這個問題可深可淺。有時要看臨場的考試時間及職缺內容來衡量如何回答。
Windows SDK 題目:請用 psuedo code (虛擬碼)寫出 Windows SDK AP 主流程, 也就是要你寫出 WinMain function 中的邏輯。
當初從 Windows 3.0 SDK API 一路 K 過來的人當然沒問題,但現在很多人都直接 VB ,GUI 拖拉元件寫程式,可能會吐血。
試描述以下兩支程式執行結果有何不同 ? 並解釋為何什麼 ?
// code1.c
char str1[] = "This is a string";
char *p = str1;
char **pp;
int main(int argc, char** argv)
{
*pp = p;
printf("p = %s\n" , p);
printf("*pp = %s\n", *pp);
return (EXIT_SUCCESS);
}
// -------------------------------------------------
// code2.c
char str1[] = "This is a string";
int main(int argc, char** argv)
{
char *p = str1;
char **pp;
*pp = p;
printf("p = %s\n" , p);
printf("*pp = %s\n", *pp);
return (EXIT_SUCCESS);
}
C語言不只是C語言而已,它是用來設計作業系統(OS: Operation System) 的程式語言。你要知道它的定位,才知道要學到什麼程度? 還有其它什麼相關的domain know how 要一起學,而不會只是學皮毛而已。
以上程式有問題的地方如何修正 ?
C 語言 union 問題 : http://blogkrogh.blogspot.com/2008/06/cunion.html
C語言面試問題二: http://blogkrogh.blogspot.com/2011/01/c.html