เนื้อหาวิชา : 3 : กระบวนการทางคณิตศาสตร์และตรรกศาสตร์
ข้อ 161. กำหนดให้ fmod(x,y) คืนค่าเศษหลังจุดทศนิยมของผลหาร x/y และ floor(x) คืนค่าจำนวนเต็มที่ได้จากการปัดเศษหลังจุดทศนิยมทิ้งไป หลังจากทำงานสองบรรทัดนี้แล้ว x มีค่าเท่าไร
x = 19.75; x = fmod(x, floor(x));
1 : 1.00
2 : 19.75
3 : 0.75
4 : 1.75
เฉลย: 3
อธิบาย:
floor(19.75) ได้ 19
fmod(19.75, 19) คือเศษจากการหาร 19.75 ด้วย 19 ซึ่งเหลือ 0.75
ข้อ 162. ให้ตัวแปรทุกตัวเป็นชนิดจำนวนเต็ม หลังจากส่วนของโปรแกรมข้างล่างนี้ทำงานเสร็จ x1 และ x2 มีค่าเท่าใด
x2 = 1; x4 = 5; x2 = (x4 + x2 % 2 - 3); x4 = x2; x3 = x4; x1 = x3;
1 : x1 = 5, x2 = 5
2 : x1 = 3, x2 = 1
3 : x1 = 1, x2 = 5
4 : x1 = 3, x2 = 3
เฉลย: 4
อธิบาย:
แทนค่าx2 = (x4 + x2 % 2 - 3);x2 = (5 + 1 % 2 - 3); = (5 + (1 % 2) - 3); = (5 + (1) - 3); = 3x4 = x2; = 3x3 = x4; = 3x1 = x3; = 3
Note: % ทำก่อน บวก/ลบ และไล่ค่าทีละบรรทัด
ข้อ 163. ให้ตัวแปรทุกตัวเป็นชนิดจำนวนเต็ม หลังจากส่วนของโปรแกรมข้างล่างนี้ทำงานเสร็จ ตัวแปร ans มีค่าเท่าใด
x2 = 1; x4 = 5; x2 = (x4 + x2 % 2 - 3); x4 = x2; x3 = x4; x1 = x3; ans = x4 + x3 + x3 + x2 + x1;
1 : 18
2 : 17
3 : 16
4 : 15
เฉลย: 4
อธิบาย:
จากข้อก่อน หลังคำนวณแล้ว
x2=3,
x4=3,
x3=3,
x1=3
ดังนั้น
ans = 3+3+3+3+3 = 15
ข้อ 164. กำหนดให้
int x, y = 7, z = 5;
x = ((++y) + (z–)) % 10;
เมื่อส่วนของโปรแกรมนี้ทำงานแล้ว ค่าของ x คืออะไร
1 : 0
2 : 1
3 : 2
4 : 3
เฉลย: 4
อธิบาย:
แทนค่า
x = ((++y) + (z–)) % 10;
x = ((++7) + (5–)) % 10;
++y เพิ่ม y ก่อนใช้ค่า จาก 7 เป็น 8
ส่วน z– ใช้ค่าเดิมก่อนคือ 5 แล้วค่อยลดทีหลัง
ดังนั้น
x = ((8) + (5)) % 10; = 13 % 10 = 3
Note:
++y เพิ่มก่อนใช้
z– ใช้ก่อนลด
ข้อ 165. ส่วนของโปรแกรมข้อใดมีความหมายเหมือนกับโปรแกรมด้านบน
if(raining)
if(window_open)
puts("Close the window");
1 : if(raining && window_open) puts(“Close the window”);
2 : if(raining || window_open) puts(“Close the window”);
3 : if(not (raining && window_open)) puts(“Close the window);
4 : if(not (not raining || window_open) puts(“Close the window);
เฉลย: 1
อธิบาย: if(raining) if(window_open) puts("Close the window");
จะแสดงข้อความ "Close the window" เมื่อ raining เป็นจริง และ window_open ก็เป็นจริงด้วย
จึงเท่ากับเงื่อนไข raining && window_open
Note: if ซ้อน if = ต้องจริงทั้งสองเงื่อนไข
ข้อ 166. กำหนดให้ sqrt(Y) คือฟังก์ชันหาค่ารากที่สองของ Y จงหาค่าของนิพจน์ เมื่อ M=-3, N=5, X=-3.57, Y=4.78
1. sqrt(Y) < N 2. (X > 0) OR (Y > 0) 3. (NOT((M > N) AND (X < Y))) OR ((M <= N) AND (X > X))
1 : 1. เท็จ 2. จริง 3. จริง
2 : 1. จริง 2. จริง 3. จริง
3 : 1. เท็จ 2. เท็จ 3. จริง
4 : 1. จริง 2. จริง 3. เท็จ
เฉลย: 2
อธิบาย:
แทนค่า
1. sqrt(Y) < 5
sqrt(4.78) ประมาณ 2.18 ซึ่งน้อยกว่า 5 → จริง
2. (-3.57 > 0) OR (4.78 > 0)
แม้ X(-3.57) ไม่มากกว่า 0 แต่ Y(4.78) มากกว่า 0 → จริง
3. (NOT((-3 > 5) AND (-3.57 < 4.78))) OR ((-3 <= 5) AND (-3.57 > -3.57))
(NOT(( F ) AND ( T ))) OR (( T ) AND ( F ))
(NOT(( F )) OR (( F ))
T OR F → จริง
Note:
เพื่อความเร็ว ตัดตัวเลือก ชอยส์ไหนตัวเลือกเยอะ น่าจะเป็นอันนั้น
1 : 1. เท็จ 2. จริง 3. จริง
2 : 1. จริง 2. จริง 3. จริง
3 : 1. เท็จ 2. เท็จ 3. จริง
4 : 1. จริง 2. จริง 3. เท็จ
2. น่าจะจริง 3. น่าจะจริง → หา 1.
1. = จริง ตอบ 2: เลย
ข้อ 167. กำหนด count=16, num=4, value=31.0, many=2.0 เมื่อทำคำสั่งต่อไปนี้ value มีค่าเท่าไร
value = (value - count)*(count - num)/many + num/many;
1 : 91
2 : 92
3 : 101
4 : 102
เฉลย: 2
อธิบาย: value = (value - count)*(count - num)/many + num/many;
= (31.1 - 16)*(16- 4)/2.0 + 4/2.0;
= (15)*(12)/2.0 + 4/2.0;
= 90 + 2; = 92
Note: ทำวงเล็บก่อน แล้วค่อยคูณ/หาร/บวก
ข้อ 168. กำหนดตัวแปร
Value = 50;
เมื่อกระทำการ bit-wise XOR ด้วยตัวแปร Value เอง จะมีผลอย่างไรกับค่าตัวแปร Value
1 : ตัวแปร Value จะมีค่าเท่ากับ 0
2 : ตัวแปร Value จะมีค่าเท่ากับ 1
3 : ตัวแปร Value จะมีค่าเท่ากับ 50
4 : ไม่มีข้อใดถูกต้อง
เฉลย: 1
อธิบาย:
การ XOR ค่ากับตัวเองจะได้ 0 เสมอ
เพราะบิตที่เหมือนกันเมื่อ XOR กัน → จะได้ 0
Note: XOR เหมือนเท็จ ต่างจริง
ข้อ 169. ข้อใดคือความแตกต่างระหว่าง Bitwise Operator และ Logical Operator
1 : Bitwise Operator จะกระทำตรรกกับบิตข้อมูลของตัวแปร แต่ Logical Operator จะกระทำตรรกกับค่าข้อมูลของตัวแปร
2 : Bitwise Operator จะกระทำตรรกกับตัวแปรชนิดจำนวนเต็ม แต่ Logical Operator จะกระทำตรรกกับตัวแปรชนิดใด ๆ ก็ได้
3 : Bitwise Operator จะกระทำตรรกกับตัวแปรชนิดใด ๆ ก็ได้ แต่ Logical Operator จะกระทำตรรกกับตัวแปรชนิดจำนวนเต็ม
4 : Bitwise Operator และ Logical Operator เป็นเพียงชื่อเรียกของ Compiler แต่ละภาษาเท่านั้น
เฉลย: 1
อธิบาย:
Bitwise Operator ทำงานระดับบิต เช่น AND/OR/XOR ทีละบิต
ส่วน Logical Operator ใช้ตัดสินค่าจริงหรือเท็จของเงื่อนไขทั้งก้อน
Note: Bitwise = ทีละบิต, Logical = จริง/เท็จของเงื่อนไข
ข้อ 170. กำหนดให้ % แทน modulus operator ถ้า 22 % x มีค่าเท่ากับ 4; x มีค่าเท่าไร
1 : 2
2 : 4
3 : 6
4 : 8
เฉลย: 3
อธิบาย:
ต้องหา x ที่ 22 หารแล้วเหลือเศษ 4
จากตัวเลือก 22 % 6 = 4
เพราะ 6 × 3 = 18 และ 22 – 18 = 4
Note: % คือเศษจากการหาร