Computer Programming: ข้อ 161–170

เนื้อหาวิชา : 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); = 3

x4 = x2; = 3

x3 = x4; = 3

x1 = 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: % คือเศษจากการหาร

Scroll to Top