ข้อสอบภาษาซีพร้อมเฉลย

  1. จากโปรแกรมต่อไปนี้จงหาว่าโปรแกรมใดให้ผลลัพธ์ในการทำงานเหมือนกับโปรแกรมนี้

main()

{

int  i;

i =1;

while(i <= 10)

{

printf(“%d”,i);

i:=i+1;

}

main()

{

int i;

for( i := 0 ; i <= 10; i++)

printf(“%d”,i-1);

}

main()

{

int i;

for( i := 0 ; i <= 9; i++)

printf(“%d”,i+1);

}

ก.                                                                                        ข.            ข.

main()

{

int i;

for( i := 1 ; i <= 9; i++)

printf(“%d”,i+1);

}

main()

{

int i;

for( i := 10 ; i >= 1; i–)

printf(“%d”,11-i);

}

ค.                                                                                            ง.

  1. จากส่วนของโปรแกรมต่อไปนี้

i =1;

f =1;

while( i < n)

{

i = i+1;

f = f * i;

}

ถ้า  n = 6 แล้ว  ค่าผลลัพธ์สุดท้ายของ  f   มีค่าเท่าใด

ก. 30                      ข. 720

ค. 120                    ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้

if(n < 0)

y = 0

else

{

x = 0; y = 1;

for( i = 1; i < n-1; i++)

{

z = x+y;

x = y;

y =z;

}

}

ถ้า n = 6 ค่าของ   z   คือ

ก. 3                        ข. 5

ค. 8                        ง. ไม่มีข้อใดถูก

จากส่วนของโปรแกรมต่อไปนี้ ตอบคำถามข้อ 45

p = 1; i =1;

while i <= n

{

p = p*x;

i = i+1;

}

  1. ถ้า n = 10, x = 2; แล้ว ค่าผลลัพธ์สุดท้ายของ p มีค่าเท่าใด

ก. 20                      ข. 10

ค. 1024                 ง. ไม่มีข้อใดถูก

  1. ความสัมพันธ์ของ p, n และ x คือ

ก. p = x n             ข. p = xn

ค. p = nx                 ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้

x = 2;

z = x + y;

if (y > 0)

z = z+1

else

z = 0;

ถ้า y = 3 แล้ว ค่าผลลัพธ์สุดท้ายของ z มีค่าเท่าใด

ก. z = 2                 ข. z = 0

ค. z = 6                 ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้
a = 414; b = 662;

x = a;

y = b;

while(y  !< 0)

{

r = x % y ;

x = y;

y = r;

}

x    มีค่าเท่าใด

ก. 414                    ข. 662

ค. 2                        ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมในข้อ 7 สรุปการทำงานได้ดังนี้

ก. ใช้คำนวณหา ห.ร.ม. ของ (a,b)

ข. ใช้คำนวณหา ค.ร.น. ของ (a,b)

ค. ใช้คำนวณหาเศษที่ได้จากการนำ y ไปหาร x

ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมต่อไปนี้
if (n < 0)

a = -n;

else

{

a = n;

k = 0;

x = 0;

}

while(k < a)

{

x = x+m ;

k = k+1 ;

}

if (n < 0)

p = -x;

else

p = x;

ถ้า m = 8, n =5; แล้ว ค่าผลลัพธ์สุดท้ายของ p มีค่าเท่าใด

ก. 40                      ข. –40

ค. 13                      ง. ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมในข้อ 9 นั้นใช้เพื่อคำนวณ

ก. mn                  ข. m+ n

ค. mn                     ง. ไม่มีข้อใดถูก

จากโปรแกรมต่อไปนี้ ตอบคำถาม ข้อ 11-12

main()

{

float  sum, i,j ;

sum =0.0;

j =1.0;

i =2.0;

while(i/j > 0.001)

{

j = j+j;

sum=sum+i/j;

printf(“%f”,sum);

}

 

  1. จากโปรแกรม จะพิมผลลัพธ์กี่บรรทัด

ก.   0 ถึง 9                            ข.    10 ถึง 19

ค.   20 ถึง 29                       ง.    30 ถึง 39

  1. จากโปรแกรม จะพิมพ์ผลลัพธ์ตัวสุดท้ายใกล้เคียงกับจำนวนเต็มค่าใดมากที่สุด

ก. 1                        ข. 2

ค. 3                        ง. 4

จากโปรแกรมต่อไปนี้ จงตอบคำถามข้อ 13-15

 1. main()

2. {

3.  int  i,j ;

4.  i =1;

5.  j=20;

6.  while(i<=5) &&  (j>=15)

7.  {

9.            printf(“i = %d, j=%d”,i,j);

10.          i =i+1;

11.          j =j-1;

12.  }

13. }

  1. ข้อใดคือผลลัพธ์ของโปรแกรมข้างต้น

ก.            1    20            2   19               3   18               4   17                  5   16

ข.            1    20            2    19             3    18             4    17                5    16            6    15

ค.            1    20            2    20             3    20             4    20

ง.            1    20            1    19             1    18             41   17               1    16            1    15

  1. ถ้าตัดบรรทัดที่ 10 ออก ผลลัพธ์จะเป็นอย่างไร

ก.            1    20            2   19               3   18               4   17

ข.            1    20            2    19             3    18             4    17                5    16            6    15

ค.            1    20            2    20             4    20             5    20   …(ไม่รู้จบ)

ง.            1    20            1    19             1    18             1   17                  1    16            1    15

  1. จากโจทย์ต้นฉบับ หลังจากตัดบรรทัดที่ 10 ออกแล้ว ถ้าเปลี่ยนบรรทัดที่ 6 จาก (i<=5) && (j>=15) เป็น (i<5) || (j>15) และ ผลลัพธ์จะเป็นอย่างไร

ก.            1    20            2   19               3   18               4   17

ข.            1    20            1    19             1    18             1   17                  1    16

ค.            1    20            2    19             3    18             4    17                5    16            6    15

ง.            1    20            1    19             1    18             1   17                  1    16…(ไม่รู้จบ)

จากส่วนของโปรแกรมต่อไปนี้ ตอบคำถามข้อ 17-18

1. num =3;

2. count =0;

3. i =1;

4. while(i <20)

5. {

6. if ((i % num) > count)

7. {

8. count =count+1;

9. i =i+1;

10. }

11. }

 

  1. หลังจากจบการทำงานแล้ว count จะมีค่าเป็นเท่าใด

ก. 20                      ข. 6

ค. 3                        ง. 2

  1. ถ้าเปลี่ยนค่า num ในบรรทัดที่ 1 ให้เป็น num:=5 หลังจากจบการทำงานแล้ว count จะมีค่าเป็นเท่าใด

ก. 20                      ข. 6

ค. 5                        ง. 4

จากโจทย์ตอบคำถามข้อ 19-21

int  m,n;

if (n<0)

a = n;

else

a = n;

k = 0;

x = 0;

while(k < a)

{

x = x+m;

k = k+1;

}

if (n < 0)

question = -x

else

question  =  x

  1. เมื่อ m = 0;  n = 6;  question  มีค่าเท่าใด

ก.  0                       ข.  12

ค.  7                       ง.  ไม่มีข้อใดถูก

  1. เมื่อ m = 0;  n = 6;  question  มีค่าเท่าใด

ก.  0                       ข.  12

ค.  36                     ง.  ไม่มีข้อใดถูก

  1. จงสรุปการทำงานของ โปรแกรมนี้
    • คำนวณหาผลคูณของ n  และ  m          ข. คำนวณหาผลบวกของ  n  และ  m
  • คำนวณหาผลบวกของ x  และ  m         ง. ไม่มีข้อถูก

จากโจทย์ตอบคำถามข้อ 22-24

int   a , b;

x = a;

y = b;

while(y != 0)

{

                                r =  x  % y;

x = y;

y =  r;

}

question2 = x;

  1. เมื่อ a = 91;  b = 287;  question2  มีค่าเท่าใด

ก.  0                       ข.  12

ค.  7                       ง.  ไม่มีข้อใดถูก

  1. เมื่อ a =256;  b = 198;  question2  มีค่าเท่าใด

ก.  0                       ข.  18

ค. 36                      ง.  ไม่มีข้อใดถูก

  1. จงสรุปการทำงานของโปรแกรมนี้

ก.   คำนวณหาจำนวนเฉพาะ                           ข.   คำนวณหาตัวหารร่วมมาก

ค.   คำนวณหาตัวคูณร่วมน้อย                         ง.   ไม่มีข้อใดถูก

  1. จากส่วนของโปรแกรมที่กำหนดให้

x = 1;

i = 1;

while(x <= 10000)

{

x =  2;

i = i+2;

}

หลังจากจบการทำงานแล้ว  ค่าของ  i มีค่าเป็นเท่าใด

ก.  7                       ข. 9                        ค. 11                      ง. ไม่มีข้อใดถูก

  1. กำหนดส่วนของโปรแกรม    จงหาผลลัพธ์ที่ได้

j = 2; i = 1;

do{

if   i<=j-2

do {

printf(“%d”,i);

i=i+2;

}while i<j-2

j = j+i;

}while(j<15);

ก. 1  3  5  7                                         ข. 1  3  5  7  9

ค. 1  3  5  7  9  11                             ง.  ไม่มีข้อใดถูก

ส่วนของโปรแกรมนี้ใช้ตอบคำถามข้อ  27-28

i=20;  j = 10; k = 0;

while(i>j)

{

if ((i>3) && (j>4) || (k >5))

{

printf(“Yeah !!”);

}

i=i-1;  j = j+2; k = i-j;

}

  1. จากส่วนของโปรแกรมข้างบน จงหาผลลัพธ์ของการทำงานว่ามีการพิมพ์  “Yeah !!” กี่บรรทัด

ก.   2                      ข.  3                       ค.  4                       ง.  5

  1. ถ้าเปลี่ยนคำสั่ง if ((i>3) && (j>4) || (k >5)) เป็น  if ((i>3) && (j>4) && (k >5)) จงหาผลลัพธ์ของการทำงานว่ามีการพิมพ์  “Yeah !!” กี่บรรทัด

ก.   1                      ข.  2                       ค.  3                       ง.  4

  1. จากส่วนของโปรแกรมต่อไปนี้ จงหาผลลัพธ์ของ  Count  ว่ามีค่าเท่าไร
i=2;j=0;k=0;count = 0;

while(k>=0)

{

if(i>j)

{

i=i-1;

k = k+1;

}

else

{

j=j+2;

k = k-1;

}

count = count +1;

}

printf(“Count  =  %d”,count);

ก.   2                      ข.  3                       ค.  4                       ง.  5

  1. จากส่วนของโปรแกรม จงหาผลลัพธ์ของ  y  มีค่าเท่ากับเท่าไร  เมื่อ  X มีค่า 3
if (x >=0)

{

if(x<10)

{

y = x*x;

if(x<=5)

x = y/2;

}

else

y = 5*x;

else

y = x*x*x;

printf(“Y =  %5.2f ”,y);

}

ก. 1.00                  ข. 3.00                  ค.9.00                    ง. 12.00

  1. จากส่วนของโปรแกรม ค่า  x และ  y  ในข้อใดที่ทำให้ผลลัพธ์พิมพ์  B  ออกมา

if(x<=200)  ||  (y >=200)

if(x<=100) && (y <= 100)

if (x<=50) && (y >= 50)

printf(“A”);

else

printf(“B”);

else

printf(“C”);

else

printf(“D”);

ก.  x = 50       y=100                        ข. x = 75     y=50

ค.  x = 200     y=100                        ง.  x = 50     y=75

  1. ให้แสดงผลลัพธ์ของ value1 , value2

n  = 20;

value1  = n++;

value2 = ++n;

printf(“%d , %d ”,value1,value2);

ก.   20 , 21           ข. 21 , 20             ค. 21 , 21             ง. 20 , 20

  1. จากโปรแกรมจงหาผลลัพธ์

main()

{

int x =3, y = 2;

float a,b;

a = x/y;

printf(“\n  a = %f ,”,a);

b = x/y;

printf(“b =  %f”,b);

}

ก.  a = 1.000000 , b = 1.500000                                  ข.  b = 1.000000 , a = 1.500000

ค.  a = 1.000000 , b = 1.000000                                  ง.  a = 1.0 , b = 1.5

  1. for(x = 0; x <100; x++) เมื่อจบโปรแกรม  x  มีค่าเท่าใด

ก.  โปรแกรมแสดงเลขคี่ตั้งแต่ 0-100            ข.โปรแกรมแสดง  1-100

ค.   โปรแกรมแสดงเลขคู่ตั้งแต่  0-100          ง. โปรแกรมแสดง  0-100

  1. for(x = 2; x <20; x+=3) เมื่อจบโปรแกรม  x  มีค่าเท่าใด

ก.  5    8   11  14  17  20                                                ข.  2   5   8   11   17

ค.   2   8   11   14   17   20                             ง.  5   10   15   20

ง. 12

Leave a comment