แนวข้อสอบ Final (จดด่วน) สอบวันพฤหัสบดีที่ 5 ตุลาคม 2549 เวลา 9.00-12.00น. Choice 60 ข้อ 25 คะแนน อัตนัย 3 ข้อ 15 คะแนน(โจทย์แต่ละข้อไม่เกี่ยวข้องกัน) Subprogram Array 1 มิติ Sort หรือ Search(เก็งเอาเอง) ข้อสอบ สอบตั้งแต่บทที่ 6 – 8 ห้ามนำเครื่องคิดเลขเข้าห้องสอบ นำดินสอ 2B ไปสอบด้วย
รูปแบบของฟังก์ชัน ชนิดข้อมูลส่งกลับ ชื่อฟังก์ชัน(ชนิดข้อมูลที่รับเข้ามา ชื่อตัวแปรที่รับเข้ามา) เช่น void Calculate() void Calculate(int A) int Calculate() int Calculate(int A) ฟังก์ชันที่ไม่มีการส่งผ่านค่า ฟังก์ชันที่มีการส่งผ่านค่าเข้าไปยังฟังก์ชัน ฟังก์ชันที่มีการส่งค่าออกมาจากฟังก์ชัน ฟังก์ชันที่มีการส่งค่าเข้าและออกจากฟังก็ชัน
ไม่มี ไม่มี ไม่มี FindGPA Ex1 ให้นักศึกษาระบุค่า Return, ชื่อฟังก์ชัน, ชนิดข้อมูลรับเข้า และชื่อตัวแปรที่รับเข้ามา ให้ถูกต้อง void FindGPA(void) { คำสั่ง } ไม่มี ค่าที่ส่งกลับคืนมาจากฟังก์ชัน คือ .............................. ชื่อของฟังก์ชัน คือ ................................................. ชนิดของข้อมูลรับเข้า คือ …………………………………...... ชื่อตัวแปรที่รับเข้ามา คือ …………………………………....... FindGPA ไม่มี ไม่มี
Ex2 ให้นักศึกษาตอบคำถามต่างๆ จากฟังก์ชันต่อไปนี้ float cal_currency(float bath, float currency) { float USD; USD = bath*currency; return(USD); } float ตัวแปร USD เป็นตัวแปรชนิดใด .................................. ค่าส่งกลับจากฟังก์ชันเก็บอยู่ในตัวแปรใด....................... ข้อมูลรับเข้ามีชนิดข้อมูลเป็นแบบใด...……………………..... ชื่อตัวแปรที่รับเข้ามา คือ …………………………………........ USD float ทั้ง 2 ตัวแปร bath และ currency
Ex3 ให้นักศึกษาเขียนฟังก์ชัน เพื่อทำการคำนวณหาค่าเฉลี่ยของตัวเลข 10 ตัว ซึ่งตัวเลขแต่ละตัวถูกเก็บไว้ในตัวแปร Num1,…, Num10 และกำหนดให้ตัวแปรที่ใช้เก็บค่าเฉลี่ยคือ Avg หลังจากคำนวณค่าเฉลี่ยแล้ว ให้ทำการส่งค่ากลับไปที่ตัวแปร Avg วิธีที่ 1 float Average(int Num1,int Num2,..., int Num10) { float Avg; int Sum=0; Sum=(Num1+Num2+...+Num10); Avg=Sum/10; return(Avg); }
Ex3 วิธีที่ 2 ใช้ Loop รับค่าแล้วคำนวณ float Average( ) { int Num,i=1,Sum=0; float Avg; while (i<=10) scanf(“%d”,&Num); Sum=Sum+Num; i=i+1; } Avg=Sum/10; return(Avg); Average Sum=0,i=1 N i<=10 Y Avg=Sum/10 Read Num return Sum=Sum+Num i=i+1
Ex4 จงหาผลรันของโปรแกรมต่อไปนี้ (ถ้ารับ10,50) #include <stdio.h> #include <conio.h> int add(int a, int b) { int sum; sum = a+b; return sum; } void main() int x,y,result; clrscr(); printf(“Please enter number1 : “); scanf(“%d”,&x); printf(“Please enter number2 : “); scanf(“%d”,&y); result=add(x,y); printf(“Result of %d+%d is %d\n”,x,y,result); getch(); คำตอบ Please enter number1 : 10 Please enter number2 : 50 Result of 10+50 is 60
Sum=a+b Add Write x,y,result START Add Read x,y Sum=a+b return Add Write x,y,result stop
Input : ? เงินเดือนและชื่อ Output : ? เงินได้สุทธิ Ex5. จงเขียน Flowchart เพื่อคำนวณหาเงินได้สุทธิของพนักงาน 10 คน โดย ในโปรแกรมหลักจะต้องมีโปรแกรมย่อย ดังนี้ โปรแกรมย่อยสำหรับรับค่าเงินเดือนและชื่อพนักงาน (INPUTDATA) โปรแกรมย่อยสำหรับคำนวณเงินโบนัสพนักงาน(CALCULATE) โดยมีเงื่อนไขดังนี้ พนักงานที่มีเงินเดือน 0-10,000 บาท ได้โบนัส 5% พนักงานที่มีเงินเดือน 10,000-50,000 บาท ได้โบนัส 10% พนักงานที่มีเงินเดือน มากกกว่า 50,000 บาท ได้โบนัส 15% โปรแกรมย่อยสำหรับการแสดงผล (DISPLAY) โดยแสดงเงินได้สุทธิ ที่เกิดจาก เงินเดือน+โบนัส Input : ? Output : ? เงินเดือนและชื่อ เงินได้สุทธิ
InputData Calculate Display MAIN START InputData i=1 read Name, Salary N i<=10 Y InputData return STOP Calculate Display i=i+1
N Y Y N Calucate Salary<=10000 Salary<=50000 Bonus=Salary x 0.05 return
Display Net=Salary+Bonus Write Net return
Ex6 จงเขียน Flowchart เพื่อคำนวณหาอายุรวมและอายุเฉลี่ยของนักศึกษาทั้งหมด โดยรับค่าปีพ.ศ.ที่เกิด เพื่อนำไปคำนวณอายุของนักศึกษา จะหยุดรับค่าเมื่อพ.ศ.เกิดเป็น ปี 9999 โดยจะต้องมีโปรแกรมย่อยดังนี้ โปรแกรมย่อยสำหรับคำนวณอายุนักศึกษา(CALCUALTE) โปรแกรมย่อยสำหรับคำนวณหาอายุเฉลี่ย(AVERAGE) โปรแกรมย่อยสำหรับแสดงผลอายุรวมและอายุเฉลี่ย(DISPLAY) Input : ? Output : ? ปี พ.ศ.เกิด อายุรวมและอายุเฉลี่ย
MAIN N Y START Count=0,Sum=0 read Year Year≠9999 Average Count=Count+1 Display Calculate Sum=Sum+Age STOP read Year
Calculate Average Display Age=2549-Year Avg=Sum/Count Write Sum,Avg return return return
Question?