作者weii (迷惑失道)
看板SFFamily
标题[转录][闲聊] facebook上的C语言测验
时间Thu Aug 13 22:14:06 2009
※ [本文转录自 C_and_CPP 看板]
作者: runtime (LLLLL) 看板: C_and_CPP
标题: [闲聊] facebook上的C语言测验
时间: Thu Aug 13 00:25:39 2009
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.8
L 430EXII (持续增加中)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.22.18.76
1F:推 wa120:佩服~佩服~你是C语言中的高手阿!!除了C语言的一般使用之外 08/13 00:37
2F:推 Strogatz:觉得facebook的很多题目都没什麽意思 08/13 00:48
3F:推 dendrobium:当然... 08/13 01:07
4F:推 Goodwater:这题目也太容易做到高手 = = 08/13 01:08
5F:推 VictorTom:看来该注册脸书了, 我被输入帐密登入这题卡住了....XD 08/13 01:13
6F:推 costbook:>>> C语言高手 08/13 01:22
7F:推 costbook:原来C语言可以用匿名阵列 08/13 01:26
8F:推 QQting:第7题没问题吗@@? 08/13 01:28
9F:推 clanguage:答案是正解吗??? 08/13 01:29
10F:→ runtime:我用Dev C跑的 不确定喔 08/13 01:30
11F:推 smallworld:第七题是很有名的神码啊 08/13 01:32
第七题...我好像run错了
题目有多出一个^=i
所以第七题应该是 3 4
哇 没答案耶
12F:→ softwind:第一题?void*+int compiler应该会报 他不知道要跳几个By 08/13 01:32
咦 Dev C 跑得出来是 10
※ 编辑: runtime 来自: 163.22.18.76 (08/13 01:36)
13F:推 costbook:置底文刚好有解答 XD 08/13 01:35
14F:→ hylkevin:第四题不用回圈当然也可以写啊 08/13 01:36
15F:→ runtime:不过题目有说"要用回圈" 所以应该是1个 08/13 01:38
16F:→ softwind:Q1: 正在初始化' : 无法由 'int' 转换为 'void *' 08/13 01:40
17F:→ softwind:Q1: error C2036: 'void *' : 未知的大小 08/13 01:40
18F:→ softwind:你跑VC2008 免费版的 试试看吧 08/13 01:41
19F:推 awashharp:第二题解答好神!! 08/13 01:43
20F:推 dendrobium:这个问卷是不是错很多也是高手XD? 08/13 01:48
21F:推 costbook:这只是一般的C语言观念测验 08/13 01:55
22F:→ costbook:要测验高手应该10题都是pointer的题目 XD 08/13 01:55
23F:推 costbook: ~~~~~9题 08/13 01:59
24F:推 legendmtg:void*那题C会过C++不会 08/13 02:06
25F:推 sponge0121:楼上大大可以详细解说第一题吗 @@ 08/13 02:42
26F:推 frank99977:.....第八题我看不出来跟c语言有什麽关系.......... 08/13 03:15
27F:推 tomnelson:第2题解答是b?这是C++才能这样吧!C语言的话答案是a吧!? 08/13 03:22
28F:→ tomnelson:不然就是要自己malloc/calloc记忆体,然後如答案d中的方 08/13 03:25
29F:→ tomnelson:式设定值到array的每个element(num[0] ~ num[9]). 08/13 03:26
30F:推 Fenikso:正好相反 c++才不能这样用 08/13 03:28
31F:推 LPH66:我怎麽觉得第二题没有答案? 至少就我所知 {1,2,3} 这种东西 08/13 05:19
32F:→ LPH66:是只能写在初始化列上面的... 08/13 05:20
33F:推 Fenikso:c99新增的compound literal 08/13 06:09
35F:→ Fenikso:那不是宣告也不是type cast 08/13 07:20
36F:→ tiyun:第八题..出题者真脑残 08/13 07:37
37F:→ VictorTom:太甘心了, 等等上班吃早餐的时候来做一下....:) 08/13 08:22
38F:→ netsphere:第二题 没看过这种用法 08/13 08:58
39F:推 VictorTom:错了一大半呢, 问题是我怎麽觉得这题目还满鸟的.... 08/13 09:21
40F:推 VictorTom:第一题编不过的要改存档为.c或强迫用C compiler来编. 08/13 09:27
41F:→ VictorTom:C++不做适当type cast那样应该会error @_@" 08/13 09:27
42F:→ VictorTom:另外, 第七题无解, 答案是43 7; 要ij交换的话.... 08/13 09:28
43F:→ VictorTom:是i^=j^=i^=j; 它多了一次^=i 本来还以为是陷阱.... 08/13 09:28
44F:推 VictorTom:然後推第八题脑残, 不过第二题有趣:) 08/13 09:31
45F:→ final01:第1题竟然可这样写 是compiler再搞鬼嘛? 08/13 11:33
46F:→ VictorTom:应该是C语言本来就对异型assign检查比较不严格吧?? 08/13 12:23
47F:推 Bencrie:第一题感觉还好 ... pointer本来就跟long一样 XD 08/13 12:25
48F:推 VictorTom:小弟我还以为第一题陷阱在void*, pointer和long也不算一 08/13 13:05
49F:→ VictorTom:样, 楼上要不要试试把void*换成int*再看看结果:) 08/13 13:05
50F:推 QQ29:我想问第一题i+j为啥会说 error C2036: 'void *' :未知的大小 08/13 13:41
51F:推 QQ29:所以说第二题 vc还没有办法编译过噜? 08/13 13:43
52F:推 QQ29:如果第二题那样写可以过 他是配置在heap区嘛?跟new一样? 08/13 13:46
53F:推 VictorTom:第一题我推过了, 用C compiler不要用C++, 方法看推文= = 08/13 13:55
54F:→ VictorTom:第二题那个应该不是new吧.... 08/13 13:56
55F:→ VictorTom:啊我看错了, 楼上第一题不要理我....<(_ _)> 08/13 13:57
56F:→ VictorTom:其实有同样的问题, void* 做step的时候为什麽算1 byte. 08/13 13:58
57F:推 bibo9901:第一题gcc编译不过耶 08/13 14:07
58F:推 QQ29:V大说作step是指什麽? 08/13 14:12
59F:推 VictorTom:就是pointer做+n, -n之类的动作, 随手打的可能用错词汇 08/13 14:15
60F:→ VictorTom:了吧Orz 08/13 14:15
61F:推 QQ29:不过void*我无法对他作++ --耶 是因为void 没有规定是几byte? 08/13 14:55
62F:推 Bencrie:试了一下 ... 用int*他回我 31耶 @@a why? 08/13 15:29
63F:推 Bencrie:加了转型(int)i+j 才会对 orz 08/13 15:32
64F:推 QQ29:4+7 *4=31 *4是因为int是4byte 一次跳4个 08/13 15:35
65F:→ QQ29:打错是3+4*7=31 08/13 15:35
66F:推 Bencrie:oops 大概有点头绪了,因为左边的型态是pointer 08/13 15:38
67F:→ Bencrie:右边的型态是int,这样有点像 *(i+j) 然後不要做deref 08/13 15:39
68F:→ Bencrie:只是单纯的计算阵列地址 XD 08/13 15:39
69F:→ su31o4gj83:不懂void *i = 3做了什麽, 可以让printf("%d", i)为3 08/13 16:04
70F:推 VictorTom:void *i=3; // 翻译, 让指标i指到记忆体位置0x00000003 08/13 16:11
71F:→ VictorTom:基本上就根void *i = NULL; 做得事情差不多.... 08/13 16:12
72F:→ VictorTom:i=NULL时你print变数i, 它就把i目前的值(即指到的位置) 08/13 16:12
73F:→ VictorTom:印出来给你看, 所以print出来是3; 就好像指到NULL时印 08/13 16:13
74F:→ VictorTom:出来是0一样; 记忆体位址不过用一个数字代表/记录而已:) 08/13 16:14
75F:推 su31o4gj83:原来如此, 谢谢V大的回覆 08/13 16:17
76F:推 lungswu:第一题题目有错 08/13 16:23
※ 编辑: runtime 来自: 163.22.18.76 (08/13 16:28)
77F:推 VictorTom:第七题update了....Orz 08/13 16:34
78F:推 QQ29:第七题不是没答案嘛 08/13 16:35
79F:推 VictorTom:题目修正後就有了, 答应a :) 08/13 17:21
80F:推 qrtt1:没有出 pointer pointer 跟 func pointer XD 08/13 21:49
--
你凭什麽爱我...?
又凭什麽要走...!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.114.204.165