รวมข้อสอบคอม (หลายๆที่)

สำหรับคนที่อยากลองฝีมือนะครับ ผมเอามาจาก สอวน. นะครับข้อนี้ อันนี้ง่ายที่สุดแล้วอยากให้ลองคิดเล่นๆครับ



หากทำงานตามขั้นตอนต่อไปนี้

1. รับเลขจำนวนเต็ม m และ n เป็น input

2. ให้เลขจำนวนเต็ม x มีค่าเป็น 0

3. ถ้า m เป็นเลขคี่ บวก x กับ n เก็บผลลัพธ์ไว้ที่ x

4. หาร m ด้วย 2 (ถ้ามีเศษน้อยกว่าหนึ่งปัดทิ้ง) เก็บผลลัพธ์ไว้ที่ m

5. คูณ n ด้วย 2 เก็บผลลัพธ์ที่ n

6. ถ้า m มากกว่า 0 กลับไปขั้นตอนที่ 3

7. รายงานค่า x เป็นผลลัพธ์



ความสัมพันธ์ระหว่าง m, n, x คือ



ก. m+n=x

ข. mn = x

ค. m = n+x

ง. 2m+n=x







อีกข้อนึงครับ อันนี้ง่ายกว่ามากๆ รับรองว่าทุกคนต้องทำได้แน่นอน

กำหนดให้ลำดับขั้นตอนของคำสั่งมีดังนี้

1. กำหนดให้ k = 999 i = 1 และ p = 0

2. ถ้า k มากกว่า i จะไปทำขั้นที่ 3 มิฉะนั้นจะไปทำขั้นที่ 5

3. กำหนดให้ i มีค่าเพิ่มขึ้น 2 เท่า จากเดิม และให้ p มีค่าเพิ่มขึ้นจากเดิม 5

4. ไปทำขั้นที่ 2

5. แสดงค่า p



หลังจบแล้ว p เป็นเท่าไร

ก. 45

ข. 50

ค. 512

ง. 1024





มีอีก 10 กว่าข้อ ถ้าคิดสองข้อนี้ได้แล้วจะนำข้อที่เหลือมาฝาก แต่ถ้ายังไม่มีใครคิดได้ก็เก็บไว้ก่อนนะครับ เมื่อยมือ =.=;



ความคิดเห็นที่ 14


2 ก.พ. 2551 10:55
  1. เก่งตายล่ะ



ความคิดเห็นที่ 16

19 มี.ค. 2551 02:06
  1. Nice site!



ความคิดเห็นที่ 3

liptontea
3 ต.ค. 2548 02:55
  1. เพิ่มให้สองข้อครับ : )

    1. แสดงผลลัพธ์ของ

    int i;
    for(i=0;i<100&&(i%2)==0;i+=25)
    printf("%d",i);


    2. จากเลขจำนวนเต็มที่รับเข้ามาเป็น 1903 จำนวนใหฒ่ที่ได้จาก โปรแกรมคือ ?

    int main()
    { int x,d,i,num=0;
    scanf("%d",&x);
    for(i=1; x;i++)
    {
    d=x%10;
    x=x/10;
    num=num*10+d;
    }
    printf("result = %d",num);
    return 0;
    }



ความคิดเห็นที่ 11

liptontea
4 ต.ค. 2548 00:01
  1. ติดข้อไหนลอง complie ดูครับ : )
    base on C

    เอาไว้ว่าง ๆ จะมานั่งพิมพ์ให้นะครับ....



ความคิดเห็นที่ 4

x9y17k2b
3 ต.ค. 2548 09:23
  1. อีกข้อนึงครับ อันนี้ง่ายกว่ามากๆ รับรองว่าทุกคนต้องทำได้แน่นอน
    กำหนดให้ลำดับขั้นตอนของคำสั่งมีดังนี้
    1. กำหนดให้ k = 999 i = 1 และ p = 0
    2. ถ้า k มากกว่า i จะไปทำขั้นที่ 3 มิฉะนั้นจะไปทำขั้นที่ 5
    3. กำหนดให้ i มีค่าเพิ่มขึ้น 2 เท่า จากเดิม และให้ p มีค่าเพิ่มขึ้นจากเดิม 5
    4. ไปทำขั้นที่ 2
    5. แสดงค่า p

    หลังจบแล้ว p เป็นเท่าไร

    *ตอบ ข้อก. p = 45 ครับ



ความคิดเห็นที่ 5

x9y17k2b
3 ต.ค. 2548 09:31
  1. 1. แสดงผลลัพธ์ของ

    int i;
    for(i=0;i<100&&(i%2)==0;i+=25)
    printf("%d",i);

    *น่าจะแสดงว่า 25 มั้ง



ความคิดเห็นที่ 17

29 ก.ค. 2551 15:35
  1. เเจ๋ว



ความคิดเห็นที่ 15

4 ก.พ. 2551 13:35
  1. งง
    เราอ่อนคอมมากๆๆค๊าฟ



ความคิดเห็นที่ 13

17 ก.ย. 2550 15:37
  1. 1246554



ความคิดเห็นที่ 12

attapon56
4 ต.ค. 2548 17:38
  1. ถึงคุณ liptontea ครับ


    คือบ้านผมไม่มีตัว complie อ่ะครับ ปรกติไม่ได้เขียน C บ่อยๆเลยไม่ได้โหลดเก็บไว้ ทุกทีจะตรวจคำตอบนี่ก็เขียนเป็น php อ่าคับ :P เดื๋ยวนี้ให้มาเขียน C ยัง include ไม่ค่อยจะถูกเลย ได้แต่ไวยกรณ์นิดๆเองอ่ะคับ



ความคิดเห็นที่ 6

attapon56
3 ต.ค. 2548 14:40
  1. ปิ้น.......... เข้ามาตั้งแต่เมื่อไรเนี่ย


    ที่พี่คิดได้ 50 นะ :P เดื๋ยวคิดให้ใหม่ เผื่อคิดผิด



ความคิดเห็นที่ 7

attapon56
3 ต.ค. 2548 14:53
  1. เอาล่ะ 50 แน่นอนแล้ว บอกให้สองอย่างนะ

    เริ่มจากตอนสอบไม่มีคอมใช่ม๊ะก็เรามาดูกันว่าทำยังไงให้ I มันมากกว่า 999

    ข้อนี้ไม่ยากครับ เพราะเป็นอะไรที่แน่นอนมาก ถ้ามันให้ I+1 นี่ยังจะยากกว่าอีก

    เราลองทำตามคอมเลย จะได้

    ค่า P ตามช้อยที่เป็นไปได้คือ 45 และ 50 เพราะ 512 กะ 1024 หาร 5 ไม่ลง ถ้า p บวกทีละ 5 เป็นไปไม่ได้ที่ p จะหารด้วย 5 ไม่ลง และตรงนี้เอง เป็นตัวบอกเราว่าจะ loop ทั้งหมดกี่ครั้ง เอา 5 หารได้
    9 ไม่ก็ 10 ครั้ง

    1 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 (คูณ 2 กำลัง 9)
    ได้ 512 ครับ ซึ่งแน่นอน ถ้า loop อีกรอบจะได้ 1024 มันเกินแล้ว


    หึหึหึ อย่าเพิ่งดีใจไปครับ น้องลืม loop ครั้งสุดท้ายรึป่าว O.o;
    ถึงตอนนั้น i จะเป็นซักกี่ล้าน แต่ ค่า p ต้อง +5 รอบสุดท้ายนะคับ

    จะได้ P = 50 ^^;



ความคิดเห็นที่ 8

attapon56
3 ต.ค. 2548 14:53
  1. ตรวจด้วยภาษา PHP นะครับ ง่ายดีไม่ต้อง include แบบ C พอดีเปิดดรีมค้างไว้


    <?php
    $k = 999;
    $i = 1;
    $p = 0;

    while($k>$i){
    $i *= 2;
    $p += 5;
    }


    echo $p;
    ?>


    ได้ 50 จริงๆด้วยครับ ^^



ความคิดเห็นที่ 9

attapon56
3 ต.ค. 2548 15:49
  1. คห. 3 ผมงงๆกับโจทย์ข้อแรกอยู่นิดๆอ่ะครับ ถ้า for ไม่ใช้ {} นี่มันจะรวม printf ไปด้วย ซึ่งคำตอบที่ได้มันจะแตกต่างกันหรือปล่าว

    int i;
    for(i=0;i<100&&(i%2)==0;i+=25){}
    printf("%d",i);

    ไม่รู้นะ แต่ถ้าดูๆแล้ว เงื่อนไข I<100 และ I หารสองลงตัว เป็นจริง มันน่าจะจบที่ 0 แล้ว i += 25 ก็น่าจะตอบ 25 แบบปิ้นว่า ขอบคุณคุณ liptontea มากๆนะครับ ^^



ความคิดเห็นที่ 10

attapon56
3 ต.ค. 2548 15:53
  1. for(i=1; x;i++)

    สำหรับข้อสองผมงงๆอ่ะครับ ไม่เข้าใจว่ามันคืออะไร ความรู้ไม่ถึงครับ T.T;



ความคิดเห็นที่ 1

attapon56
18 ก.ย. 2548 12:39
  1. อันนี้ข้อสอบโอลิมปิกรอบ 1 โดยส่วนตัวผมว่าง่ายกว่า สอวน. มากๆเลยแหละครับ แต่ทำไมมันหลายๆภาษาจัง ตอนนี้มีเวลาพิมพ์ให้ซักข้อแล้วกัน เอาข้อที่น่าคิดหน่อยนะครับ ส่วนข้อง่ายๆเดื๋ยวกลับมาพิมพ์ให้อีกรอบ

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

    r: = 0;
    i := 1;
    while(i<=n)do
    begin
    for j := to n do
    r := r+1;
    i := 1*2
    end


    ถ้า n มีค่าเท่ากับ 128 หลังจากจบการทำงานแล้ว r มีค่าเป็นเท่าใด
    ก. 896
    ข. 8192
    ค. 1024
    ง. ไม่มีข้อใดถูก


    ในบรรทัดที่ 5 ถ้าเปลี่ยนจาก for j:=1 to n เป็น for j:=1 to j หลังจากจบการทำงานแล้ว r มีค่าเป็นเท่าใด ถ้า n มีค่าเท่ากับ 128
    ก. 120
    ข. 255
    ค. 1024
    ง. 11050


    ติดตามตอนต่อไปได้เร็วๆนี้น่อ



ความคิดเห็นที่ 2

attapon56
18 ก.ย. 2548 12:42
  1. งานนี้คุณ samongi น่าจะชอบนะครับ ^^



ความคิดเห็นที่ 18

28 ก.ย. 2552 20:42
  1. I'm มืด ตึ๊บ


แสดงความคิดเห็น

กรุณา Login ก่อนแสดงความคิดเห็น