13-3-¶ó.Quiz °ÔÀÓ

±¸Á¶Ã¼¸¦ ¹è¿üÀ¸´Ï Á¾ÇÕ ½Ç½ÀÆíÀÇ ¿¹Á¦¸¦ Çϳª ºÐ¼®ÇØ º¸µµ·Ï ÇÏÀÚ. Quiz °ÔÀÓÀº ±¸Á¶Ã¼ ¹è¿­¿¡ ¿©·¯ °¡Áö ¹®Á¦¿¡ ´ëÇÑ Á¤º¸µéÀ» ÀÛ¼ºÇØ ³õ°í ³­¼ö·Î ¹®Á¦¸¦ ¼±ÅÃÇÏ¿© ÃâÁ¦ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. Àüü ¼Ò½º´Â ´ÙÀ½°ú °°´Ù. º°·Î ±æÁöµµ ¾ÊÀ¸¸ç ¸ðµç ÄÚµå´Â main ÇÔ¼ö¿¡ ÀÛ¼ºµÇ¾î ÀÖÀ¸¹Ç·Î ºÐ¼®Çϱâ ÆíÇϵµ·Ï µÇ¾î ÀÖ´Ù.

 

¿¹ Á¦ : Quiz

#include <Turboc.h>

#include <ctype.h>

 

// ¹®Á¦ Çϳª¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö´Â ±¸Á¶Ã¼

struct tag_Munje {

     char *Question;

     char *Case[3];

     int Answer;

     BOOL Used;

};

 

// ¹®Á¦ ¹è¿­

struct tag_Munje Munje[]={

     {"´ÙÀ½ ŸÀÔÁß ±âº»ÇüÀÌ ¾Æ´Ñ °ÍÀº","Á¤¼öÇü", "¹è¿­","¹®ÀÚÇü",2,FALSE},

     {"´ÙÀ½ Áß ¹Ýº¹¹®ÀÌ ¾Æ´Ñ °ÍÀº","switch", "for","while",1,FALSE},

     {"±¸Á¶Ã¼¸¦ ¼±¾ðÇÒ ¶§ »ç¿ëÇÏ´Â Å°¿öµå´Â","int", "goto","struct",3,FALSE},

     {"´ÙÀ½ Áß °¡Àå Å©±â°¡ Å« ŸÀÔÀº","int", "double","char",2,FALSE},

     {"¿­°ÅÇüÀ» ¼±¾ðÇÒ ¶§ »ç¿ëÇÏ´Â Å°¿öµå´Â","enum", "alias","define",1,FALSE},

     {"´ÙÀ½ Áß ´ÜÇ× ¿¬»êÀÚ´Â","++", "?","=",1,FALSE},

     {"¹®ÀÚ ¹è¿­ÀÇ ³»¿ëÀ» ¹Ù²Ü ¶§ »ç¿ëÇÏ´Â ÇÔ¼ö´Â","strassign", "strmove","strcpy",3,FALSE},

     {"±¸Á¶Ã¼ÀÇ ¸â¹ö¸¦ ÀÐÀ» ¶§ »ç¿ëÇÏ´Â ¿¬»êÀÚ´Â","->", "*",".",3,FALSE},

     {"Á¤¼öÇü ŸÀÔÀÌ ¾Æ´Ñ °ÍÀº","unsigned", "short","float",3,FALSE},

     {"C ÇÁ·Î±×·¥¿¡¼­ ¹Ýµå½Ã ÇÊ¿äÇÑ ÇÔ¼ö´Â","entry", "main","WinMain",2,FALSE},

};

 

void main()

{

     int num;

     int count;

     int i;

     char ch;

 

     randomize();

     for (count=0;count<5;count++) {

          // ÃâÁ¦µÇÁö ¾ÊÀº ¹®Á¦ Çϳª¸¦ °í¸¥´Ù.

          do {

               num=random(sizeof(Munje)/sizeof(Munje[0]));

          } while (Munje[num].Used == TRUE);

          Munje[num].Used=TRUE;

 

          // ¹®Á¦¸¦ Ãâ·ÂÇÑ´Ù.

          clrscr();

          gotoxy(2,2);

          printf("%s?",Munje[num].Question);

          for (i=0;i<3;i++) {

              gotoxy(2,5+i*2);

              printf("(%d) %s",i+1,Munje[num].Case[i]);

          }

          gotoxy(2,12);

          printf("1,2,3 Áß Çϳª¸¦ ¼±ÅÃÇϼ¼¿ä.³¡³¾¶§´Â Q : ");

 

          // Á¤´äÀ» ÀÔ·Â¹Þ¾Æ ÆÇÁ¤ÇØ ÁØ´Ù.

          ch=getch();

          if (tolower(ch) == 'q') {

              break;

          }

          ch=ch-'0';

          gotoxy(2,15);

          if (ch == Munje[num].Answer) {

              printf("Á¤´äÀÔ´Ï´Ù.");

          } else {

              printf("Ʋ·È½À´Ï´Ù. Á¤´äÀº %d¹øÀÔ´Ï´Ù.",Munje[num].Answer);

          }

          delay(1000);

     }

 

     gotoxy(2,17);

     printf("¼ö°íÇϼ̽À´Ï´Ù.\n");

}

 

tag_Munje ŸÀÔÀº ¹®Á¦ Çϳª¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â ±¸Á¶Ã¼·Î Á¤ÀǵǾî ÀÖ´Ù. ¹®Á¦´Â Áú¹®°ú ´äº¸±â, ±×¸®°í Á¤´äÀ¸·Î ±¸¼ºµÇ¸ç ÀÌ¿Ü¿¡ Áߺ¹ ¹®Á¦ ÃâÁ¦¸¦ ¹æÁöÇϱâ À§ÇÑ Used ¸â¹ö°¡ Æ÷ÇԵǾî ÀÖ´Ù. Áú¹®ÀÎ QuestionÀº ¹®ÀÚ¿­À̹ǷΠchar *ÇüÀ¸·Î ¼±¾ðµÇ¾î ÀÖÀ¸¸ç ´äº¸±âÀÎ Caseµµ ¹®ÀÚ¿­ÀÌµÇ 3°³ÀÇ ´äº¸±â¸¦ º¸¿©ÁÙ °ÍÀ̹ǷΠũ±â 3ÀÇ char * ¹è¿­·Î ¼±¾ðÇß´Ù. Case1, Case2, Case3¸¦ °¢°¢ÀÇ ¸â¹ö·Î ¼±¾ðÇÒ ¼öµµ ÀÖÁö¸¸ ¹Ýº¹ÀûÀÎ Ãâ·ÂÀ» À§ÇØ ¹è¿­À» »ç¿ëÇÏ´Â °ÍÀÌ ´õ È¿À²ÀûÀÌ´Ù.

Á¤´äÀÎ Answer ¸â¹ö´Â ¼¼ °³ÀÇ ´äº¸±â Áß ¾î¶² °ÍÀÌ Á¤´äÀÎÁö ´äº¸±â ¹øÈ£¸¦ ±â¾ïÇϹǷΠÁ¤¼öÇüÀ̸é ÃæºÐÇÏ´Ù. »ç½Ç °¡´ÉÇÑ °ªÀÌ 1, 2, 3 Áß ÇϳªÀ̱⠶§¹®¿¡ intÇü ´ë½Å short³ª char·Î ¼±¾ðÇصµ Á¤´äÀ» ±â¾ïÇϴµ¥´Â ºÎÁ·ÇÏÁö ¾Ê´Ù. Used ¸â¹ö´Â ÀÌ ¹®Á¦°¡ ÀÌÀü¿¡ ÃâÁ¦µÇ¾ú´ÂÁö ¾Æ´ÑÁö¸¦ ±â¾ïÇϴµ¥ ÃÖÃÊ ¸ðµÎ FALSE°ªÀ¸·Î ÃʱâÈ­µÇ¸ç ¹®Á¦°¡ ÃâÁ¦µÇ¸é TRUE·Î º¯°æµÈ´Ù. ¹®Á¦ ¼±Åà ·çƾ¿¡¼­´Â Used°¡ TRUEÀÎ ¹®Á¦´Â äÅÃÇÏÁö ¾ÊÀ½À¸·Î½á ÀÌ¹Ì ÃâÁ¦µÈ ¹®Á¦°¡ ´Ù½Ã ÃâÁ¦µÇÁö ¾Êµµ·Ï ÇÏ¿´´Ù. Used ¸â¹öó·³ ½ÇÇàÁß¿¡¸¸ »ç¿ëµÇ´Â Á¤º¸¸¦ ·±Å¸ÀÓ µ¥ÀÌÅͶó°í Çϴµ¥ ÆÄÀÏ·Î ¿µ±¸ÀûÀ¸·Î ÀúÀåÇÒ ¶§´Â ´ë»ó¿¡¼­ Á¦¿ÜµÈ´Ù.

tag_Munje ŸÀÔÀ» Á¤ÀÇÇÑ ÈÄ ÀÌ Å¸ÀÔÀÇ ±¸Á¶Ã¼ ¹è¿­ Munje¸¦ ÃʱâÈ­Çϴµ¥ ¾Õ¿¡¼­ ¾Ë¾Æº» ¹Ù´ë·Î { } °ýÈ£¾È¿¡ °¢ ¸â¹öÀÇ ÃʱⰪÀ» ³ª¿­Çϱ⸸ ÇÏ¸é µÈ´Ù. ÇÑ Çà¿¡ ÇÑ ¹®Á¦¾¿ Áú¹®°ú ¼¼ °³ÀÇ ´äº¸±â, ±×¸®°í Á¤´äÀ» ±â·ÏÇßÀ¸¸ç Used ¸â¹ö´Â ¸ðµÎ FALSE·Î ÃʱâÈ­Çß´Ù. Munje ¹è¿­ÀÇ Å©±â°ªÀº »ý·«Çߴµ¥ ÀÌ·¸°Ô ÇØ µÎ¸é ÄÄÆÄÀÏ·¯°¡ ÃʱⰪÀÇ °³¼ö¸¦ Çì¾Æ·Á¼­ ¹è¿­ÀÇ Å©±â¸¦ ÀÚµ¿À¸·Î °è»êÇØ ÁÙ °ÍÀÌ¸ç ¹®Á¦¸¦ ´õ ´Ã¸®°í ½Í´Ù¸é Ãʱâ½ÄÀÇ ³¡¿¡ ÃʱⰪ¸¸ °è¼Ó ÀÔ·ÂÇÏ¸é µÈ´Ù.

Ç¥ÇöÇÏ°íÀÚ ÇÏ´Â Á¤º¸°¡ ¾î¶² ½ÄÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´ÂÁö¸¦ °üÂûÇØ º¸¸é ¿øÇÏ´Â ÀÚ·á ±¸Á¶¸¦ ±Ý¹æ ¼³°èÇÒ ¼ö ÀÖ´Ù. ÀÌ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÒ ¹®Á¦´Â Áú¹®, ´äº¸±â, Á¤´ä µî °¢°¢ ´Ù¸¥ ŸÀÔÀÇ º¯¼öµéÀ» ÇÊ¿ä·Î ÇϹǷΠ¹è¿­·Î´Â Ç¥ÇöÇÒ ¼ö ¾øÀ¸¸ç ±¸Á¶Ã¼°¡ ÇÊ¿äÇÏ´Ù. ¶ÇÇÑ ÀÌ·± ¹®Á¦µéÀÌ ¿©·¯ °³ ÇÊ¿äÇϹǷΠ±¸Á¶Ã¼ ¹è¿­ÀÌ µÇ¾î¾ß Çϴµ¥ ±× °á°ú°¡ ¹Ù·Î ÄÚµåÀÇ Munje ±¸Á¶Ã¼ ¹è¿­ÀÌ´Ù. ÀÚ·á ±¸Á¶°¡ ´Ù ÀÛ¼ºµÇ¾úÀ¸¸é ´ÙÀ½À¸·Î Äڵ带 ÀÛ¼ºÇϴµ¥ main ÇÔ¼öÀÇ ±¸Á¶´Â ´ÙÀ½°ú °°´Ù.

 

for (count...) {

     ¹®Á¦ ¼±ÅÃ

     ¼±ÅÃµÈ ¹®Á¦ Ãâ·Â

     Á¤´ä ÀÔ·Â ¹× ÆÇÁ¤

}

 

Á¦¾î º¯¼ö count·Î for ·çÇÁ¸¦ ´Ù¼¸ ¹ø µ¹µµ·Ï ÇßÀ¸¹Ç·Î ¹®Á¦´Â ÃÑ ´Ù¼¸ °³°¡ ÃâÁ¦µÈ´Ù. °¢ ¹®Á¦ ÃâÁ¦ ·çƾÀº ¹®Á¦ ¼±ÅÃ, Ãâ·Â, ÆÇÁ¤À¸·Î ¼¼ºÐµÇ´Âµ¥ ¸ÕÀú ¹®Á¦¸¦ ¼±ÅÃÇÏ´Â do~while ·çÇÁ¸¦ º¸ÀÚ. num º¯¼ö¿¡ ÃâÁ¦ÇÒ ¹®Á¦¸¦ ¼±ÅÃÇϴµ¥ ¹«ÀÛÀ§·Î ¹®Á¦¸¦ ÃâÁ¦Çϱâ À§ÇØ random ÇÔ¼ö¸¦ »ç¿ëÇß´Ù. ÃâÁ¦µÉ ¹®Á¦ÀÇ ¹üÀ§´Â 0~Munje ±¸Á¶Ã¼ÀÇ Å©±â±îÁöÀε¥ ÀÌ ÇÁ·Î±×·¥Àº ÃÑ 10°³ÀÇ ¹®Á¦¸¦ Á¤ÀÇÇÏ°í ÀÖÀ¸¹Ç·Î 0~9 Áß Çϳª°¡ ¼±ÅÃµÉ °ÍÀÌ´Ù.

num¿¡ ÃâÁ¦ÇÒ ¹®Á¦¸¦ ¹«ÀÛÀ§·Î ¼±ÅÃÇß´Ù°í Çؼ­ ÀÌ ¹®Á¦¸¦ °ð¹Ù·Î Ãâ·ÂÇÏÁö ¾ÊÀ¸¸ç while¹®ÀÇ Á¶°Ç½Ä¿¡¼­ ÀÌ¹Ì ÃâÁ¦µÈ ¹®Á¦ÀÎÁö Á¡°ËÇÑ´Ù. ¸ðµç ¹®Á¦µéÀÇ Used¸â¹ö´Â FALSE·Î ÃʱâÈ­µÇ¾î ÀÖÀ¸¸ç ÃâÁ¦Çϱâ Á÷Àü¿¡ TRUE·Î º¯°æÇÑ´Ù. ±×·¡¼­ Used ¸â¹ö°¡ TRUEÀ̸é ÀÌ¹Ì ÃâÁ¦µÈ ¹®Á¦À̹ǷΠ´Ù¸¥ ¹®Á¦¸¦ °í¸£µµ·Ï Çß´Ù. ¹æ±Ý ÃâÁ¦ÇÑ ¹®Á¦°¡ ´Ù½Ã ÃâÁ¦µÈ´Ù¸é º°·Î º¸±â¿¡ ÁÁÁö ¾ÊÀ» °ÍÀÌ´Ù.

do~while ·çÇÁ´Â ÃâÁ¦ÇÒ ¹®Á¦¸¦ ¹«ÀÛÀ§·Î ¼±ÅÃÇ쵂 ÀÌ¹Ì ÃâÁ¦µÈ ¹®Á¦´Â Á¦¿ÜÇÑ´Ù. ³­¼ö·Î numÀ» °í¸¥ ÈÄ¿¡ ÀÌ ¹®Á¦°¡ ÃâÁ¦µÇ¾ú´ÂÁö Á¡°ËÇØ¾ß ÇϹǷΠ¼±½ÇÇà ÈÄÆò°¡ ¹Ýº¹¹®ÀÎ do~while ·çÇÁ°¡ °¡Àå Àû´çÇÏ´Ù. do~while·çÇÁ¿¡¼­ ÃâÁ¦ÇÒ ¹®Á¦¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½ ¹ø¿¡ ÀÌ ¹®Á¦°¡ ´Ù½Ã ÃâÁ¦µÇÁö ¾Êµµ·Ï Used¸â¹ö¿¡ TRUE¸¦ ´ëÀÔÇØ ³õ´Â´Ù.

¹®Á¦¸¦ È­¸éÀ¸·Î Ãâ·ÂÇÏ´Â ÄÚµå´Â ¾ÆÁÖ °£´ÜÇÏ´Ù. ÀÌÀü¿¡ Ãâ·ÂµÈ ¹®Á¦¸¦ Áö¿ì±â À§ÇØ clrscr ÇÔ¼ö¸¦ ¸ÕÀú È£ÃâÇÏ°í Àû´çÇÑ À§Ä¡·Î Ä¿¼­¸¦ ¿Å±ä ÈÄ Question, Case µîÀ» Ãâ·ÂÇÑ´Ù. ´äº¸±â ¸â¹öÀÎ Case´Â ¹è¿­À̹ǷΠ·çÇÁ¸¦ µ¹¸é¼­ Â÷·Ê´ë·Î Ãâ·ÂÇß´Ù. °¢ ¹®ÀÚ¿­ÀÌ Ãâ·ÂµÉ ¼öÆò ÁÂÇ¥´Â ¸ðµÎ 2ÀÌ¸ç ¼öÁ÷ ÁÂÇ¥´Â ´ÙÀ½°ú °°´Ù.

Áú¹®ÀÌ (2,2)¿¡ Ãâ·ÂµÇ°í ´äº¸±âµéÀº Â÷·Ê´ë·Î (2,5), (2,7), (2,9)¿¡ ÇÑÄ­¾¿ ¿©¹éÀ» µÎ¸é¼­ Ãâ·ÂÇß´Ù. À̶§ Á¦¾î º¯¼ö i°ªÀÎ 0, 1, 2¿Í °¢ ´äº¸±âÀÇ ¼öÁ÷ Ãâ·ÂÁÂÇ¥ 5, 7, 9»çÀÌ¿¡´Â 5+i*2¶ó´Â ÇÔ¼ö °ü°è¸¦ ãÀ» ¼ö ÀÖÀ¸¹Ç·Î ÀÌ ½ÄÀ» gotoxyÀÇ µÎ ¹ø° Àμö·Î »ç¿ëÇß´Ù. Á¦¾î º¯¼ö i´Â 0ºÎÅÍ ½ÃÀÛÇÏÁö¸¸ ´äº¸±â ¹øÈ£´Â 1ºÎÅÍ ½ÃÀÛÇϹǷΠ%d ¼­½Ä¿¡ ´ëÀÀµÇ´Â ¹øÈ£´Â i+1·Î ÁÖ¾î¾ß ÇÑ´Ù.

¹®Á¦¸¦ Ãâ·ÂÇÑ ÈÄ »ç¿ëÀڷκÎÅÍ Á¤´äÀ» ÀԷ¹޴µ¥ À̶§´Â Å°¸¦ ´©¸£´Â Áï½Ã °ªÀ» µ¹·ÁÁÖ´Â getch ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °¡Àå ÁÁ´Ù. scanf·Îµµ Á¤´äÀ» ÀԷ¹ÞÀ» ¼ö ÀÖÁö¸¸ ÀÌ ÇÔ¼ö´Â ¹Ýµå½Ã Enter¸¦ ´­·¯¾ß ÇϹǷΠºÒÆíÇÏ´Ù. getch·Î ¹®ÀÚ¸¦ ÀԷ¹ÞÀº ÈÄ ¸ÕÀú ÀÌ °ªÀÌ 'Q'³ª ¶Ç´Â ¼Ò¹®ÀÚ 'q'ÀÎÁö¸¦ Á¡°ËÇØ º¸°í ±×·¸´Ù¸é break·Î for ·çÇÁ¸¦ Å»ÃâÇϵµ·Ï Çß´Ù.

getch ÇÔ¼ö°¡ ÀԷ¹ÞÀº °ªÀº ¹®ÀÚ ÄÚµåÀ̱⠶§¹®¿¡ ÀÌ °ªÀ» Munje ±¸Á¶Ã¼ÀÇ Answer ¸â¹ö¿Í Á÷Á¢ ºñ±³ÇÏ·Á¸é ¹®ÀÚ Äڵ带 Á¤¼ö°ªÀ¸·Î º¯È¯ÇØ¾ß ÇÑ´Ù. ¹®ÀÚ '1'ÀÇ ÄÚµå´Â 0x31ÀÇ °ªÀ» °¡Áö¹Ç·Î ÀÌ °ªÀ» Á¤¼ö 1·Î ¹Ù²Ù·Á¸é 0x30À» »©¸é µÈ´Ù. 0x30Àº ¹®ÀÚ '0'¿Í °°À¸¹Ç·Î ch¿¡¼­ '0'¸¦ »©¸é Answer¿Í ºñ±³ °¡´ÉÇÑ Á¤¼ö°¡ µÈ´Ù.

ch¿¡ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ Á¤´äÀÇ ¹øÈ£¸¦ ±¸ÇßÀ¸¸é Munje ±¸Á¶Ã¼ÀÇ Answer ¸â¹ö¿Í ºñ±³ÇØ º¸°í Á¤´äÀ» ÀÔ·ÂÇß´ÂÁö ¿À´äÀ» ÀÔ·ÂÇß´ÂÁö ÆǺ°ÇÑ´Ù. if ¹®À¸·Î ÀÌ µÎ °ªÀ» ºñ±³ÇØ º¸°í Á¤´äÀÎ °æ¿ì´Â Á¤´äÀ̶ó´Â ¸Þ½ÃÁö¸¸ Ãâ·ÂÇÏ°í ¿À´äÀÎ °æ¿ì´Â Á¤´äÀ» °¡¸£ÃÄ ÁÖµµ·Ï Çß´Ù. delay(1000) ¹®ÀåÀº ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ ÈÄ 1ÃÊ°£ ´ë±âÇÏ¿© »ç¿ëÀÚ°¡ °á°ú¸¦ º¼ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

ÀÌ·± ½ÄÀ¸·Î count ·çÇÁ¸¦ ´Ù¼¸ ¹ø µ¹¸é¼­ ¹®Á¦ ´Ù¼¸ °³¸¦ Ãâ·ÂÇϸé ÇÁ·Î±×·¥ÀÌ Á¾·áµÈ´Ù. ±×´ÙÁö ¾î·Á¿î ¿¹Á¦°¡ ¾Æ´Ï¹Ç·Î ºÐ¼®¿¡ Å« ¾î·Á¿òÀº ¾ø¾úÀ» °ÍÀÌ´Ù. ¹®Á¦¸¦ ´õ ¸¹ÀÌ ÀÔ·ÂÇØ ³õ¾Ò´Ù¸é ´õ ¸¹Àº ¹®Á¦¸¦ ÃâÁ¦ÇÒ ¼ö ÀÖÀ» °ÍÀ̸ç Á» ´õ Àç¹ÌÀÖ°Ô ÁøÇàÇϵµ·Ï ¼öÁ¤ÇØ º¼ ¼ö ÀÖ´Â ¿©Áö°¡ ¸¹´Ù. ¹®Á¦¸¦ ´Ù Ǭ ÈÄ¿¡ ¸ÂÃá °³¼ö¿Í Ʋ¸° °³¼ö¸¦ º¸¿©Áشٵ簡 ¹®Á¦¿¡ ÀÀ´äÇÏ´Â ½Ã°£ Á¦ÇÑÀ» µÎ´Â ½ÄÀ¸·Î °³ÀÛÇØ º¼ ¼ö ÀÖ´Ù.