精華區beta C_and_CPP 關於我們 聯絡資訊
http://apps.facebook.com/mentaltest-zmacgno/ facebook上的C語言測驗 試試看自己的程度吧 有一些題目還不賴 沒有臉書的 看以下 ==全部copy過來== 1. void *i = 3; int j = 7; printf("%d\n",i+j); 請問結果為何者? a 跑出一連串亂碼的數字 b 無法編譯此程式 c 10 d 7 2. int *num; 請問要如何把 num 當作陣列使用(num[index]), 並初始化大小為10, 再塞入0~9的數字? a 這是指標 無法這樣使用 b num=(int[10]){0,1,2,3,4,5,6,7,8,9}; c *(num+0)=0;*(num+1)=1...*(num+9)=9;以此類推 d num[0]=0;num[1]=1;....num[9]=9;以此類推 3. 以下這段程式碼會跑出什麼結果?? int i=100;char str[20]="%d";printf(str,i); a 100 b 編譯階段錯誤 c 執行階段錯誤 d %d100 4. 如果老師今天要你使要迴圈來寫一支聖誕樹程式 請問最少需要使用幾個迴圈? a 3個以上 b 不需要迴圈 c 2個 d 1個 5. for(;;); 執行後會有什麼結果 a 沒有功能的語法 b 無限迴圈 c 直接結束 d 沒有這種寫法 6. i=5;printf("%d",i++); 這段語法執行後會有下列何者答案? a %d b 6 c 7 d 5 7. i=7;j=44;i^=j^=i^=j; 請問執行以上程式後 i 為多少? j 為多少? (已修正) a i=44 j=7 b C語言無法這樣寫 c 程式無法編譯 d i=7 j=44 8. 任何程式語言的第一支程式通常叫什麼 a Hello C b Hello World c How are you d Hello 9. int num[10]={8,3,4,7,5,1,2,9,0,6}; 若要取得 7 這個數字, 以下何者語法正確? a *(num+3) b *(num+4) c num[4] d num[7] ==以下是正確解答== cbadbdaba -- ███◣ █◣◥◣ █◣◥◣ ███◣ ██◣ ███◣ ███◣ ███ █ █ █◣█ ███ ██ ███ ███ █▆█ ███ ▉▉█ █▆▆ █◥◣ ███ █◥█ ██ █▆▆ 小小器材控的成長日記 450D 50mm F1.8II 24-70 F2.8L 430EXII (持續增加中) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.18.76
wa120:佩服~佩服~你是C語言中的高手阿!!除了C語言的一般使用之外 08/13 00:37
Strogatz:覺得facebook的很多題目都沒什麼意思 08/13 00:48
dendrobium:當然... 08/13 01:07
Goodwater:這題目也太容易做到高手 = = 08/13 01:08
VictorTom:看來該註冊臉書了, 我被輸入帳密登入這題卡住了....XD 08/13 01:13
costbook:>>> C語言高手 08/13 01:22
costbook:原來C語言可以用匿名陣列 08/13 01:26
QQting:第7題沒問題嗎@@? 08/13 01:28
clanguage:答案是正解嗎??? 08/13 01:29
runtime:我用Dev C跑的 不確定喔 08/13 01:30
smallworld:第七題是很有名的神碼啊 08/13 01:32
第七題...我好像run錯了 題目有多出一個^=i 所以第七題應該是 3 4 哇 沒答案耶
softwind:第一題?void*+int compiler應該會報 他不知道要跳幾個By 08/13 01:32
咦 Dev C 跑得出來是 10 ※ 編輯: runtime 來自: 163.22.18.76 (08/13 01:36)
costbook:置底文剛好有解答 XD 08/13 01:35
hylkevin:第四題不用迴圈當然也可以寫啊 08/13 01:36
runtime:不過題目有說"要用迴圈" 所以應該是1個 08/13 01:38
softwind:Q1: 正在初始化' : 無法由 'int' 轉換為 'void *' 08/13 01:40
softwind:Q1: error C2036: 'void *' : 未知的大小 08/13 01:40
softwind:你跑VC2008 免費版的 試試看吧 08/13 01:41
awashharp:第二題解答好神!! 08/13 01:43
dendrobium:這個問卷是不是錯很多也是高手XD? 08/13 01:48
costbook:這只是一般的C語言觀念測驗 08/13 01:55
costbook:要測驗高手應該10題都是pointer的題目 XD 08/13 01:55
costbook: ~~~~~9題 08/13 01:59
legendmtg:void*那題C會過C++不會 08/13 02:06
sponge0121:樓上大大可以詳細解說第一題嗎 @@ 08/13 02:42
frank99977:.....第八題我看不出來跟c語言有什麼關係.......... 08/13 03:15
tomnelson:第2題解答是b?這是C++才能這樣吧!C語言的話答案是a吧!? 08/13 03:22
tomnelson:不然就是要自己malloc/calloc記憶體,然後如答案d中的方 08/13 03:25
tomnelson:式設定值到array的每個element(num[0] ~ num[9]). 08/13 03:26
Fenikso:正好相反 c++才不能這樣用 08/13 03:28
LPH66:我怎麼覺得第二題沒有答案? 至少就我所知 {1,2,3} 這種東西 08/13 05:19
LPH66:是只能寫在初始化列上面的... 08/13 05:20
Fenikso:c99新增的compound literal 08/13 06:09
Fenikso:http://www.ddj.com/cpp/184401404 08/13 07:20
Fenikso:那不是宣告也不是type cast 08/13 07:20
tiyun:第八題..出題者真腦殘 08/13 07:37
VictorTom:太甘心了, 等等上班吃早餐的時候來做一下....:) 08/13 08:22
netsphere:第二題 沒看過這種用法 08/13 08:58
VictorTom:錯了一大半呢, 問題是我怎麼覺得這題目還滿鳥的.... 08/13 09:21
VictorTom:第一題編不過的要改存檔為.c或強迫用C compiler來編. 08/13 09:27
VictorTom:C++不做適當type cast那樣應該會error @_@" 08/13 09:27
VictorTom:另外, 第七題無解, 答案是43 7; 要ij交換的話.... 08/13 09:28
VictorTom:是i^=j^=i^=j; 它多了一次^=i 本來還以為是陷阱.... 08/13 09:28
VictorTom:然後推第八題腦殘, 不過第二題有趣:) 08/13 09:31
final01:第1題竟然可這樣寫 是compiler再搞鬼嘛? 08/13 11:33
VictorTom:應該是C語言本來就對異型assign檢查比較不嚴格吧?? 08/13 12:23
Bencrie:第一題感覺還好 ... pointer本來就跟long一樣 XD 08/13 12:25
VictorTom:小弟我還以為第一題陷阱在void*, pointer和long也不算一 08/13 13:05
VictorTom:樣, 樓上要不要試試把void*換成int*再看看結果:) 08/13 13:05
QQ29:我想問第一題i+j為啥會說 error C2036: 'void *' :未知的大小 08/13 13:41
QQ29:所以說第二題 vc還沒有辦法編譯過嚕? 08/13 13:43
QQ29:如果第二題那樣寫可以過 他是配置在heap區嘛?跟new一樣? 08/13 13:46
VictorTom:第一題我推過了, 用C compiler不要用C++, 方法看推文= = 08/13 13:55
VictorTom:第二題那個應該不是new吧.... 08/13 13:56
VictorTom:啊我看錯了, 樓上第一題不要理我....<(_ _)> 08/13 13:57
VictorTom:其實有同樣的問題, void* 做step的時候為什麼算1 byte. 08/13 13:58
bibo9901:第一題gcc編譯不過耶 08/13 14:07
QQ29:V大說作step是指什麼? 08/13 14:12
VictorTom:就是pointer做+n, -n之類的動作, 隨手打的可能用錯詞彙 08/13 14:15
VictorTom:了吧Orz 08/13 14:15
QQ29:不過void*我無法對他作++ --耶 是因為void 沒有規定是幾byte? 08/13 14:55
Bencrie:試了一下 ... 用int*他回我 31耶 @@a why? 08/13 15:29
Bencrie:加了轉型(int)i+j 才會對 orz 08/13 15:32
QQ29:4+7 *4=31 *4是因為int是4byte 一次跳4個 08/13 15:35
QQ29:打錯是3+4*7=31 08/13 15:35
Bencrie:oops 大概有點頭緒了,因為左邊的型態是pointer 08/13 15:38
Bencrie:右邊的型態是int,這樣有點像 *(i+j) 然後不要做deref 08/13 15:39
Bencrie:只是單純的計算陣列地址 XD 08/13 15:39
su31o4gj83:不懂void *i = 3做了什麼, 可以讓printf("%d", i)為3 08/13 16:04
VictorTom:void *i=3; // 翻譯, 讓指標i指到記憶體位置0x00000003 08/13 16:11
VictorTom:基本上就根void *i = NULL; 做得事情差不多.... 08/13 16:12
VictorTom:i=NULL時你print變數i, 它就把i目前的值(即指到的位置) 08/13 16:12
VictorTom:印出來給你看, 所以print出來是3; 就好像指到NULL時印 08/13 16:13
VictorTom:出來是0一樣; 記憶體位址不過用一個數字代表/記錄而已:) 08/13 16:14
su31o4gj83:原來如此, 謝謝V大的回覆 08/13 16:17
lungswu:第一題題目有錯 08/13 16:23
※ 編輯: runtime 來自: 163.22.18.76 (08/13 16:28)
VictorTom:第七題update了....Orz 08/13 16:34
QQ29:第七題不是沒答案嘛 08/13 16:35
VictorTom:題目修正後就有了, 答應a :) 08/13 17:21
qrtt1:沒有出 pointer pointer 跟 func pointer XD 08/13 21:49
weii:轉錄至看板 SFFamily 08/13 22:14
twotwoone:C語言的謎題,網址:http://cocre.com/?p=945 08/13 22:23
softwind:C 沒有定義pointer要 4個bytes 08/13 23:50
PRAM:說實在的,做這種題目是在浪費時間。 08/14 02:59
wa120:題目裡有些寫法 在加速運算是有意義的:) 08/14 11:09
grayyoung:two那種出法 這問卷就要當公司面試用的了..XDDD 08/15 02:44
grayyoung:更正 是qr大 08/15 02:44
operationcow:第七題不能套用新手十戒的第九戒嗎@@ 08/15 11:16
ffxapper:不錯喔@@ 08/15 18:26
legendmtg:第七題跟第九戒沒有關係 08/18 02:45