** ²Ä¤T¶gªºÂ²³æ²ÎpÁÙ¨S§Ë¼ôªº½Ð°È¥²n§ä¤p§U±Ð©Î§ä¦P¾ÇÀ°¦£§A§Ë¼ô ** ²Ä¥|¶gªº Pascal Triangle ÁÙ¤£·|ªº½ÐÄ~Äò½m²ß, ¦pªG¤w¸g·|¥Î two-dimensional array ³B²zªº, ¥i¥H¥ý½m²ß¦L¦¨¥¿¤T¨¤§Îªº¼Ë¤l!(¥un¥[¤J¤@¦C if ¥y¤l´N¥i¥H!!) µM«á, ¦A¸ÕµÛ§ï¥Î one-dimensional array ½m²ß (Hint: ¤¤¶¡¦U¤¸¯Àn¥Ñ¥k¦Ó¥ª³B²z! ¨ä¹ê«Ü²³æ:) *** ¥»¶gªº½m²ß¦³¨âÃD, ¸ê¤u¨tªº¨âÃD³£n°µ! «D¸ê¤u¨tªº½ÐºÉ§A¥i¯à, ¥i¥H°µ¦h¤Ö´N°µ¦h¤Ö ƒº Problem 5a: ¼g¤@Óµ{¦¡, Ū¤J¨â¾ã¼Æ m »P n, ¦L¥X m Óª«¥ó¤¤¿ï¨ú n Óª«¥ó·|¦³´XºØ¿ïªk, §Y C(m, n) ¤wª¾ 0 <= m, n <= 100; ¥B¥u¦Ò¼{n°Ýªºµª®×¥i¥Î long ªí¥Ü§Y¥i; ªü´N¬O¤£¥²¦Ò¼{³B²z¤j¼Æ(Big number)°Õ! Purpose: ½m²ß«ä¦Ò¸ÑÃD¤èªk! ¦¹ÃD¨ä¹ê¬O Pascal Triangle ÅܤÆÃD!! Description: ¦Û¤v¨M©w¿é¤J¤èªk¥H¤Î¦óºØ±¡ªpnµ²§ôµ{¦¡ µ{¦¡½Ð¥Î long ÅܼƧY¥i, ¤£¥²¦Ò¼{ overflow ªº°ÝÃD ! Hint: ¥Î Pascal Triangle, ¤£n¸Õ¹Ï¥hºâ m ¶¥¼»P n ¶¥¼ ! C(m, n) ªºµª®×¦b m ¶¥ Pascal Triangle ªº²Ä m ¦C²Ä n ®æ¤¤! Problem 5b: ¼g¤@Óµ{¦¡, Ū¤J¾ã¼Æ n, (¦Ò¼{ 3 <= n <= 19 §Y¥i,) µM«á¦L¥X n ¶¥Å]¤è°} (Magic Square of order n) Purpose: §ó¶i¤@¨B½m²ß Array °t¦X Loop ªº³B²z, ¤×¨ä¬O¥|ªº¿¼Æ¶¥Å]¤è°}¤¤¦p¦ó§PÂ_¸Ó®æ¤l¬O§_¦b©Ò¿×ªº¹ï¨¤½u¤W?? Description: µ{¦¡n¤@ª½³B²z¨ì¿é¤Jªº n ȬOt¼Æ¤~°±! µ{¦¡¥²¶·¥i¥H³B²z©_¼Æ¶¥Å]¤è°}¥H¤Î¥|ªº¿¼Æ¶¥Å]¤è°}; Y¥i¥H³B²z©Ò¦³°¸¼Æ(2°£¥~)¶¥§ó¦nƒº:-) Hint: ½Ð¥Î©Òµ¹½d¨Ò p50.c ×§ï§Y¥i D:\testc> linenum < p50.c 01 //p50.c --- ¦p¤§«e¦U½d¨Ò, n¥Î¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J ! 02 // ½Ð®³³oÓ¥h§ï, ¼g¤J¾Ç¸¹©m¦W, ¨Ã¥Bµù©ú³Ì«á×§ï®É¶¡ 03 // we wrote a ¥iŪ¤Jlong¾ã¼Æªº¨ç¼Æ(function) long getLong( ); 04 // µM«á¨C¦¸nŪ¨ú¤@Ó¾ã¼Æ´N ¡§¥s¡¨ (Call) ¥¦À°¦£°µ ! 05 // ½Ð¬G·N¿é¤J 2 ©Î 38 ¬Ý¬Ý·|«ç¼Ë? 06 /// ¾Ç¸¹: ©m¦W: 07 /// Last modified date and time: 08 /// Original creation date and time: 2010/10/11 16:15 09 //////////// 10 #include <stdio.h> 11 #include <stdlib.h> 12 #define N_MAX 19 13 int n; // ª`·N³o n ¬O int, ¥H«e¬O¥Î long, ²{¦b¬G·N§ï¥Î int 14 // (ª`·N) atol( ), atoi( ), ¥H¤Î atof( ) ³£«Å§i¦b <stdlib.h> 15 long getLong(void); // ¥ý«Å§i(Án©ú)·|¼g¤@Ó getLong( ) function ƒº LAB-05 @ 5-th week Ä~Äò¬ã¨s Loop + Array (p.2/2) 16 void magOdd(int); // for ©_¼Æ¶¥ Magic Square 17 void mag4k(int); // for order = 4k where k = 1, 2, 3, ... 18 void ggyy(int n) { 19 printf("Sorry, can NOT process order n = %d\n", n); 20 printf(" Please try order = 3.. %d\n", N_MAX); 21 } 22 int main( ) { // ¤j¦h¼Æ main program ³£³o¼Ë¶}ÀY 23 for( ;; ) { // (ª`·N) Loop forever 24 printf("Magic Square of order n, Give me n: "); 25 n = (int)getLong( ); // ¼g¦¨¨ç¼Æ(function;¨ç¦¡)¬O«Ü¦nªº²ßºD 26 if(feof(stdin)) n = -1; // force to terminate if EOF 27 if(n == 0) n = 4; // default order = 4 for fun :-) 28 if( n < 0 ) break; // Y¬Ot¼Æ´N°± ! ª`·N¥i§ï¥Î§Oªº¤èªk 29 if((n < 3) || (n > N_MAX) ) { // n ¤£²Å¦X³W©w ! 30 ggyy(n); 31 continue; // will goto top of the Loop, §Y for(;;) 32 } 33 if( (n%2) == 1) magOdd(n); // ©_¼Æ¶¥ 34 else if( (n%4) == 0) mag4k(n); // order = 4k where k=1,2,... 35 else { 36 ggyy(n); // ·Q¤@·Q, why ¦¹³B¤£»Ý¥Î continue; ??? 37 } 38 // (ª`·N) ¥i¥H°Ý user n¤£nÄ~Äò? 39 } // while 40 printf("Bye bye!\nHit RETURN key ..."); 41 getchar( ); // ¥ø¹ÏŪ¨ú¤@Ó char, Åýµ{¦¡°±µÛµ¥ User «ö RETURN Áä 42 return 0; // §iª¾§@·~¨t²Î(OS)ªí¥Ü§Ú̳o¥Dµ{¦¡¥¿±`µ²§ô 43 }// main( 44 long getLong( ) { // ¥H«án§ï¿é¤Jªº¤èªk¥un§ï³o function ´N¥i :-) 45 static char buf[99]; // a string buffer for input; why "static" ? 46 double ans; 47 fgets(buf, sizeof(buf), stdin); // stdin ´N¬OÁä½L, n°O±o§t¤J <stdio.h> 48 ans = atol(buf); // ±q¦r¦ê¤¤Åª¥X long ¾ã¼Æ (long) 49 ////// Y¬O¹ê¼Æ´N§â atol §ï¬° atof ³o¤]¬O§O¤H¼g¦nªº¨ç¼Æ(¨ç¦¡) 50 return ans; 51 } 52 int x[N_MAX][N_MAX]; // ¼g¦b³o ¥Dµ{¦¡ main( ) ¬Ý¤£¨ì :-) 53 int i, j, k; // µ¹¥H¤U functions ¥Î©ó Loop ±±¨îÅÜ¼Æ :-) 54 //.. ·íµM¤]¥i¥H¦b functions ¤º¦Û¤v¥t¥~©w¸qÅÜ¼Æ 55 void magOdd(int n) { // ¥i¥H¥Î¤W±ªº int x[ ] [ ] 56 printf("Magic square of ORDer = %d\n", n); 57 58 }// magOdd( 59 /// ///////// 60 void mag4k(int n) { // ¥i¥H¥Î¤W±ªº int x[ ] [ ] 61 printf("Magic square of order = %d\n", n); 62 63 }// mag4k( 64 /****** 65 D:\testc>path c:\Dev-Cpp\bin;%path% 66 D:\testc>gcc p50.c 67 D:\testc>a 68 Magic Square of order n, Give me n: 2 69 Sorry, can NOT process order n = 2 70 Please try order = 3.. 19 71 Magic Square of order n, Give me n: 38 72 Sorry, can NOT process order n = 38 73 Please try order = 3.. 19 74 Magic Square of order n, Give me n: 5 75 Magic square of ORDer = 5 76 Magic Square of order n, Give me n: 4 77 Magic square of order = 4 78 Magic Square of order n, Give me n: -1 79 Bye bye! 80 Hit RETURN key ... 81 82 D:\testc> **********************/