Dear ALL, ³o¬O²Ä¤T¶g²ßÃDªº°Ñ¦Ò¸Ñµª, ¦@¥]¬A p3a.c, p3b.c, p3c.c, p3d.c, p3e.c ¤­­Óprograms; ½Ð¨Ì§Ç±q p3a.c ¬Ý¨ì p3e.c, ·íµM­n·Q¿ìªk¬ÝÀ´! ÁÙ¦³¤£À´±o½Ð¤@©w­n¦b¤W¾÷¹ê²ß½Ò¸ò¤p§U±Ð½Ð±Ð!§â¥¦§ËÀ´! ²Ä¥|¶g²ßÃD (Pascal Triangle)ªº°Ñ¦Ò¸Ñµª¤U¶g¤é¤½§G !! (¨ä¹ê§A¥u­n§â¥¼§¹¦¨ªº½d¨Ò¥[¤W§ë¼v¤ù¤ºµ{¦¡½X´N¥i¥H¤F:-) £°, ¤£­n¥u¬OÀH«K test, ­n§âÃD¥Ø¤¤´£¨ìªº¤Wºô¬d¬Ý¨Ã¬ã¨s°Õ! ´N­n¶i¤J²Ä¤­¶g¤F, ½Ð¤j®a¤£­n¦A²V¤F :) ²Ä¤­¶g½Ð½m²ß Magic square, ¥]¬A©Ò¦³©_¼Æ¶¥ªº, ¥H¤Î©Ò¦³¥i¥H³Q¥|¾ã°£ªº°¸¼Æ¶¥(4, 8, 12, 16, ...); ¤×¨ä¬O¥i³Q¥|¾ã°£ªº°¸¼Æ¶¥¤¤¶·¥Î¨ì"¸Ó®æ¤l¦³§_¦b©Ò¿×ªº¹ï¨¤½u¤W"! ¤@©w­n¦n¦n¬ã¨s! ­Y³o¤]·|¤F, ¥i¥H¦Ò¼{¼g¥X¨â­Ó¯x°}¬Û­¼ªºµ{¦¡!! ¤j®a¦h¥[ªo!!! Best regards, Wen-Nung Tsai tsaiwn@cs.nctu.edu.tw //p3a.c --- - ¥Î¤F¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J ! // §Ú©î§Ú©î§Ú©î©î©î -- ¤u§@³£©î¶} ==> ¼g¦¨¨ç¼Æ (function; ¨ç¦¡) // ª`·N³o­Ó p3a.c ¦]¬°ÁÙ¨S¼g¦nŪ¨ú¾ã¼Æªº¤u§@, ¤@°õ¦æ´N¤£·|°±!!! // ½ÐºV¤J CTRL_C §âµ{¦¡·F±¼ ! #include #include long n, nBig; // how many data? nBig: how many bigger than average ? long getLong(void); // ¥ý«Å§i(Án©ú)·|¼g¤@­Ó getLong( ) function ƒº void statistics(void); // Án©ú·|¼g¤@­Ó¨S¦³°Ñ¼Æªºfunction ¥s°µ statistics long x, a[1234]; // ¦¹ÃD³W©w¦Ü¤Ö 999 ­Ó¤¸¯À; x ¬O¼È¦s¥Îªº // long a[1234]; //ªí¥Ü a ¬O¤@­Ó°}¦C(array)ªº¦W¦r, ¦³ a[0] .. ¨ìa[1233]¥i¥Î double sum, s2, avg, variance, std; // ©M, ¥­¤è©M, ¥­§¡, Åܲ§¼Æ, ¼Ð·Ç®t // §âÅܼÆ(Variable)³£¼g¦b©Ò¦³function¥~ªí¥Ü©Ò¦³ function³£¥i¥H¥Î, // ªü´N¬O§Úªº´N¬O§Aªº, ¥s°µ Global variable ¾ãÅéÅÜ¼Æ ©Î ¥þ°ìÅÜ¼Æ // ³o¼Ë´N¤£¥Î³z¹L°Ñ¼Æ¶Ç¨Ó¶Ç¥h! ¤è«K, ¤£¹L±aµÛ¤@¨Ç¦MÀI (talk this later) int main( ) { // ¤j¦h¼Æ main program ³£³o¼Ë¶}ÀY n = nBig = 0; sum = s2 = 0.0; x = getLong( ); // ³z¹L getLong( ) Ū¨ú¾ã¼Æ¨ì x while(x != -1) { // (ª`·N) ³W©w -1 ¬O¥Nªíµ²§ô; ¤£µ¥©ó-1¤~¶i¤JLoop if( feof(stdin) ) break; // ­Y¬O EOF ¤]­n°± ! (ª`·N) stdin ¬OÁä½L // ­Y·|¨ì³o, ªí¥Ü¦³Åª¨ì¸ê®Æ, ¥B¤£¬O -1 // §â x ©ñ¤J°}¦C a[n]; // ª`·N n ­n±q 0, 1, ... ¤@ª½¼W¥[ // ©Ò¥H§â¸ê®Æ©ñ¤J a[n] «á­n°O±o§â n ¼W¥[ 1 // ¦¹³B¥i¥H¥u­t³dŪ¨ú¸ê®Æ, ¤]¥i¥H¶¶«K­pºâ sum, ¬Ý§A°ª¿³ :-) // ¬JµM¦s¤J array, ²Î­pªº¨Æµ¥¤U Call function statistics ³B²z // ¦A¨Ó§O§Ñ¤F­nŪ¨ú¤U¤@­Ó data x = getLong( ); // ³z¹L getLong( ) Ū¨ú¤U¤@­Ó¾ã¼Æ¨ì x } // while; ³o¬O while Loop ªº§À¤Ú, ·|¦Û°Ê goto ¦^ while ÀY³¡ printf("Total %d data read.\n", n); // ÃÒ©ú¯uªº¦³Åª¨ì data :-) statistics( ); // ²Î­pªº¨Æ´N¥æµ¹¥¦ // ·Q¿ìªk¼È°±¤@¤U, ¥H§K¥i¯à°{¤@¤U´N¤£¨£! // «ØÄ³¥Î getchar( ); ¸U¤@§A¦³¥Î¨ì scanf «h¥i¯à¶·¥Î getchar( ) ¨â¦¸ ! }// main( long getLong( ) { // ¥H«á­n§ï¿é¤Jªº¤èªk¥u­n§ï³o function ´N¥i :-) printf("In getLong: "); // ­t³dŪ¨ú¤@­Ó long ¾ã¼Æ¨Ã¥Î return °e¦^¥h (¦^¶Ç) } void statistics(void) { // ¥i¥H¬Ý¨ì©Ò¦³ Global ¾ãÅéÅܼÆ(¥þ°ìÅܼÆ) printf("In statistics...\n"); // ¥Î Loop ºâ¥XÃD¥Ø³W©wªº¦UºØ²Î­p¸ê®Æ // ÁÙ¤£·|ªº¥ý½m²ß¦L¥X©Ò¦³ 1 ¨ì n ªº©_¼Æ (Hint: k%2 !=0 «h k ´N¬O©_¼Æ) } // statistics( // ¦pªG§A¦³ K&R ½Ò¥», ¥i¬ã¨s½Ò¥»¤º°Q½× atoi »P atof ¨ç¼Æ¬O¦p¦ó¼gªº, // ¥i¥HÅý§A¼W¥[¥\¤O³á ! //p3b.c --- - ¥Î¤F¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J ! // §Ú©î§Ú©î§Ú©î©î©î -- ¤u§@³£©î¶} ==> ¼g¦¨¨ç¼Æ (function; ¨ç¦¡) // ª`·N³o­Ó p3b.c ¤w¸g¼g¦nŪ¨ú¾ã¼Æ¨ç¼Æ getLong(), ½Ð¿é¤J -1 ªí¥Ü­n°±¤î ! // ³o­Ó p3b.c ´N¬O¤@¶}©lµ¹¤j®aªº p31.c ¦Aµy·L¸É¤W¤@ÂIÂI¤u§@¦Ó¤w! // ³op3b.c ¤w¸g¥i¥H¥¿½TŪ¤J¸ê®Æ, ¦ý¬OÁÙ¨S°µ²Î­p ! // ¦pªG§A¹ï©óÅܲ§¼Æ(variance)©M¼Ð·Ç®t(Standard Deviation)ÁÙ¤£¤ÓÁA¸Ñ, // ¦ý¬O«Ü·QÁA¸Ñ, «ØÄ³¥Î gogle.com ¬d¸ß "normal distribution" ¬Ý¬Ý! «Ü¦³½ì! // ¤]¥i¥H¬d "¤¤¥¡·¥­­©w¨½" ¬Ý¬Ý, ©Î¬d"Åܲ§¼Æ" ¤]¥i¬Ý¨ì¬ÛÃö¸ê®Æ! /////////////////////////////////////////////////////////////// // Try to write a function(¨ç¼Æ) long getLong( ); to read a Long int // µM«á¨C¦¸­nŪ¨ú¤@­Ó¾ã¼Æ´N ¡§¥s¡¨ (Call) ¥¦À°¦£°µ ! #include #include // (ª`·N) atol( ), atoi( ), ¥H¤Î atof( ) ³£«Å§i¦b long n, nBig; // how many data? nBig: how many bigger than average ? long getLong(void); // ¥ý«Å§i(Án©ú)·|¼g¤@­Ó getLong( ) function ƒº void statistics(void); // Án©ú·|¼g¤@­Ó¨S¦³°Ñ¼Æªºfunction ¥s°µ statistics long x, a[1234]; // ¦¹ÃD³W©w¦Ü¤Ö 999 ­Ó¤¸¯À; x ¬O¼È¦s¥Îªº double sum, s2, avg, variance, std; // ©M, ¥­¤è©M, ¥­§¡, Åܲ§¼Æ, ¼Ð·Ç®t // §âÅܼÆ(Variable)³£¼g¦b©Ò¦³function¥~ªí¥Ü©Ò¦³ function³£¥i¥H¥Î, // ªü´N¬O§Úªº´N¬O§Aªº, ¥s°µ Global variable ¾ãÅéÅÜ¼Æ ©Î ¥þ°ìÅÜ¼Æ // ³o¼Ë´N¤£¥Î³z¹L°Ñ¼Æ¶Ç¨Ó¶Ç¥h! ¤è«K, ¤£¹L±aµÛ¤@¨Ç¦MÀI (talk this later) int main( ) { // ¤j¦h¼Æ main program ³£³o¼Ë¶}ÀY n = nBig = 0; sum = s2 = 0.0; x = getLong( ); // ³z¹L getLong( ) Ū¨ú¾ã¼Æ¨ì x while(x != -1) { // (ª`·N) ³W©w -1 ¬O¥Nªíµ²§ô if( feof(stdin) ) break; // ­Y EOF ¤]­n°± ! (ª`·N) stdin ¬OÁä½L // ÁÙ¦³°Ú, ­Y¤w¸g EOF µo¥Í, getLong( ) ¦^¶Ç¨Óªº¤]¬O¿ùªº !!! a[n] = x; // §â x ©ñ¤J a[ ], ++n; // ¤@©w­n°Oªº³o¼Ë§â n ¥[ 1, ¤£µM·|Åܦ¨¤@ª½©ñ¤J a[0] ??? x = getLong( ); // ³z¹L getLong( ) Ū¨ú¤U¤@­Ó¾ã¼Æ¨ì x } // while; §O§Ñ¤F³o¬O while Loop ¤§ Loop body ªº§À¤Ú //Loop µ²§ô·|¨ì³o¸Ì¨Ó ! printf("Total %d data read.\n", n); statistics( ); // ²Î­pªº¨Æ´N¥æµ¹¥¦ getchar( ); // ·Q¿ìªk¼È°±¤@¤U, ¥H§K¥i¯à°{¤@¤U´N¤£¨£ return 0; // «ö·Ó³W©w, ¥Dµ{¦¡¶·¦^¶Ç 0 §i¶D¨t²Î»¡¥¿±`µ²§ô ! }// main( long getLong( ) { // ¥H«á­n§ï¿é¤Jªº¤èªk¥u­n§ï³o function ´N¥i :-) static char buf[99]; // a string buffer for input; why "static" ? long ans; // ª`·N­Y¥Î atof ­n§ï double; ¨ç¼ÆÀY³¡¤]­n§ï fgets(buf, sizeof(buf), stdin); // stdin ´N¬OÁä½L, ­n°O±o§t¤J ans = atol(buf); // ±q¦r¦ê¤¤Åª¥X long ¾ã¼Æ (long); ////// ­Y¬O¹ê¼Æ´N§â atol §ï¬° atof ³o¤]¬O§O¤H¼g¦nªº¨ç¼Æ(¨ç¦¡) return ans; } void statistics(void) { // ¥i¥H¬Ý¨ì©Ò¦³ Global ¾ãÅéÅܼÆ(¥þ°ìÅܼÆ) // ¥Î Loop ºâ¥XÃD¥Ø³W©wªº¦UºØ²Î­p¸ê®Æ // ÁÙ¤£·|ªº¥ý½m²ß¦L¥X©Ò¦³ 1 ¨ì n ªº©_¼Æ (Hint: k%2 !=0 «h k ´N¬O©_¼Æ) } // statistics( // ¦pªG§A¦³ K&R ½Ò¥», ¥i¬ã¨s½Ò¥»¤º°Q½× atoi »P atof ¨ç¼Æ¬O¦p¦ó¼gªº, // ¥i¥HÅý§A¼W¥[¥\¤O³á ! //p3c.c --- - ¥Î¤F¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J ! // §Ú©î§Ú©î§Ú©î©î©î -- ¤u§@³£©î¶} ==> ¼g¦¨¨ç¼Æ (function; ¨ç¦¡) // ª`·N³op3c.c ¤w¸g¥i¥H°µÂ²³æ²Î­p: ¥­§¡, ¦³¦h¤Ö­Ódata >= ¥­§¡ // ¦pªG§A¹ï©óÅܲ§¼Æ(variance)©M¼Ð·Ç®t(Standard Deviation)ÁÙ¤£¤ÓÁA¸Ñ, // ¦ý¬O«Ü·QÁA¸Ñ, «ØÄ³¥Î gogle.com ¬d¸ß "normal distribution" ¬Ý¬Ý! «Ü¦³½ì! // ¤]¥i¥H¬d "¤¤¥¡·¥­­©w²z" ¬Ý¬Ý, ©Î¬d"Åܲ§¼Æ" ¤]¥i¬Ý¨ì¬ÛÃö¸ê®Æ! /////////////////////////////////////////////////////////////// // Try to write a function(¨ç¼Æ) long getLong( ); to read a Long int // µM«á¨C¦¸­nŪ¨ú¤@­Ó¾ã¼Æ´N ¡§¥s¡¨ (Call) ¥¦À°¦£°µ ! #include #include // (ª`·N) atol( ), atoi( ), ¥H¤Î atof( ) ³£«Å§i¦b long n, nBig; // how many data? nBig: how many bigger than average ? long getLong(void); // ¥ý«Å§i(Án©ú)·|¼g¤@­Ó getLong( ) function ƒº void statistics(void); // Án©ú·|¼g¤@­Ó¨S¦³°Ñ¼Æªºfunction ¥s°µ statistics long x, a[1234]; // ¦¹ÃD³W©w¦Ü¤Ö 999 ­Ó¤¸¯À; x ¬O¼È¦s¥Îªº double sum, s2, avg, variance, std; // ©M, ¥­¤è©M, ¥­§¡, Åܲ§¼Æ, ¼Ð·Ç®t // §âÅܼÆ(Variable)³£¼g¦b©Ò¦³function¥~ªí¥Ü©Ò¦³ function³£¥i¥H¥Î, // ªü´N¬O§Úªº´N¬O§Aªº, ¥s°µ Global variable ¾ãÅéÅÜ¼Æ ©Î ¥þ°ìÅÜ¼Æ // ³o¼Ë´N¤£¥Î³z¹L°Ñ¼Æ¶Ç¨Ó¶Ç¥h! ¤è«K, ¤£¹L±aµÛ¤@¨Ç¦MÀI (talk this later) int main( ) { // ¤j¦h¼Æ main program ³£³o¼Ë¶}ÀY n = nBig = 0; sum = s2 = 0.0; x = getLong( ); // ³z¹L getLong( ) Ū¨ú¾ã¼Æ¨ì x while(x != -1) { // (ª`·N) ³W©w -1 ¬O¥Nªíµ²§ô if( feof(stdin) ) break; // ­Y EOF ¤]­n°± ! (ª`·N) stdin ¬OÁä½L // ÁÙ¦³°Ú, ­Y¤w¸g EOF µo¥Í, getLong( ) ¦^¶Ç¨Óªº¤]¬O¿ùªº !!! a[n] = x; // §â x ©ñ¤J a[ ], ++n; // ¤@©w­n°Oªº³o¼Ë§â n ¥[ 1, ¤£µM·|Åܦ¨¤@ª½©ñ¤J a[0] ??? x = getLong( ); // ³z¹L getLong( ) Ū¨ú¤U¤@­Ó¾ã¼Æ¨ì x } // while; §O§Ñ¤F³o¬O while Loop ¤§ Loop body ªº§À¤Ú //Loop µ²§ô·|¨ì³o¸Ì¨Ó ! printf("Total %d data read.\n", n); statistics( ); // ²Î­pªº¨Æ´N¥æµ¹¥¦ getchar( ); // ·Q¿ìªk¼È°±¤@¤U, ¥H§K¥i¯à°{¤@¤U´N¤£¨£ return 0; // «ö·Ó³W©w, ¥Dµ{¦¡¶·¦^¶Ç 0 §i¶D¨t²Î»¡¥¿±`µ²§ô ! }// main( long getLong( ) { // ¥H«á­n§ï¿é¤Jªº¤èªk¥u­n§ï³o function ´N¥i :-) static char buf[99]; // a string buffer for input; why "static" ? long ans; // ª`·N­Y¥Î atof ­n§ï double; ¨ç¼ÆÀY³¡¤]­n§ï fgets(buf, sizeof(buf), stdin); // stdin ´N¬OÁä½L, ­n°O±o§t¤J ans = atol(buf); // ±q¦r¦ê¤¤Åª¥X long ¾ã¼Æ (long); ////// ­Y¬O¹ê¼Æ´N§â atol §ï¬° atof ³o¤]¬O§O¤H¼g¦nªº¨ç¼Æ(¨ç¦¡) return ans; } void statistics(void) { // ¥i¥H¬Ý¨ì©Ò¦³ Global ¾ãÅéÅܼÆ(¥þ°ìÅܼÆ) // ¥Î Loop ºâ¥XÃD¥Ø³W©wªº¦UºØ²Î­p¸ê®Æ // ÁÙ¤£·|ªº¥ý½m²ß¦L¥X©Ò¦³ 1 ¨ì n ªº©_¼Æ (Hint: k%2 !=0 «h k ´N¬O©_¼Æ) int i, cnt=0; sum = 0; // Global variable for(i=0; i < n; ++i) { sum += a[i]; } avg = sum / n; // ª`·N sum »P avg ³£¬O real number ¹ê¼Æ double for(i=0; i < n; ++i) if(a[i] >= avg) ++cnt; // ¥²­n®É§â cnt ¥[ 1 printf("Average ¥­§¡ = %.3f ; >= ¥­§¡ªº¦³ %d ­Ó out of %d ­Ó\n", avg, cnt, n); // §O§Ñ¤F­n¼g³o¨Ç°Ñ¼Æµ¹²Ä¤@­Ó°Ñ¼Æ¤º %f %d %d ¥Î // ¹J¨ì function §À¤Ú·|¦Û°Ê return; ¦¹¨ç¼Æ¬O void ¨ç¼Æ, ¥i¥H¤£¼greturn; } // statistics( // ¦pªG§A¦³ K&R ½Ò¥», ¥i¬ã¨s½Ò¥»¤º°Q½× atoi »P atof ¨ç¼Æ¬O¦p¦ó¼gªº, // ¥i¥HÅý§A¼W¥[¥\¤O³á ! /************************** D:\testc>path c:\Dev-Cpp\bin;%path% D:\testc>gcc p3c.c D:\testc>a 1 2 3 4 5 -1 Total 5 data read. Average ¥­§¡ = 3.000 ; >= ¥­§¡ªº¦³ 3 ­Ó out of 5 ­Ó D:\testc> ************ °µ²ßÃDÀ³¸Ó­n¦h´ú¸Õ´X¦¸ !!**************/ //p3d.c --- - ¥Î¤F¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J ! // §Ú©î§Ú©î§Ú©î©î©î -- ¤u§@³£©î¶} ==> ¼g¦¨¨ç¼Æ (function; ¨ç¦¡) // ª`·N³op3d.c ¤w°µ§ó¦h²Î­p: Åܲ§¼Æ, ¼Ð·Ç®t; ////// ª`·N sqrt( )»Ý­n // ¦pªG§A¹ï©óÅܲ§¼Æ(variance)©M¼Ð·Ç®t(Standard Deviation)ÁÙ¤£¤ÓÁA¸Ñ, // ¦ý¬O«Ü·QÁA¸Ñ, «ØÄ³¥Î gogle.com ¬d¸ß "normal distribution" ¬Ý¬Ý! «Ü¦³½ì! // ¤]¥i¥H¬d "¤¤¥¡·¥­­©w²z" ¬Ý¬Ý, ©Î¬d"Åܲ§¼Æ" ¤]¥i¬Ý¨ì¬ÛÃö¸ê®Æ! /////////////////////////////////////////////////////////////// // Try to write a function(¨ç¼Æ) long getLong( ); to read a Long int // µM«á¨C¦¸­nŪ¨ú¤@­Ó¾ã¼Æ´N ¡§¥s¡¨ (Call) ¥¦À°¦£°µ ! #include #include #include // (ª`·N) atol( ), atoi( ), ¥H¤Î atof( ) ³£«Å§i¦b long n, nBig; // how many data? nBig: how many bigger than average ? long getLong(void); // ¥ý«Å§i(Án©ú)·|¼g¤@­Ó getLong( ) function ƒº void statistics(void); // Án©ú·|¼g¤@­Ó¨S¦³°Ñ¼Æªºfunction ¥s°µ statistics long x, a[1234]; // ¦¹ÃD³W©w¦Ü¤Ö 999 ­Ó¤¸¯À; x ¬O¼È¦s¥Îªº double sum, s2, avg, variance, std; // ©M, ¥­¤è©M, ¥­§¡, Åܲ§¼Æ, ¼Ð·Ç®t // §âÅܼÆ(Variable)³£¼g¦b©Ò¦³function¥~ªí¥Ü©Ò¦³ function³£¥i¥H¥Î, // ªü´N¬O§Úªº´N¬O§Aªº, ¥s°µ Global variable ¾ãÅéÅÜ¼Æ ©Î ¥þ°ìÅÜ¼Æ // ³o¼Ë´N¤£¥Î³z¹L°Ñ¼Æ¶Ç¨Ó¶Ç¥h! ¤è«K, ¤£¹L±aµÛ¤@¨Ç¦MÀI (talk this later) int main( ) { // ¤j¦h¼Æ main program ³£³o¼Ë¶}ÀY n = nBig = 0; sum = s2 = 0.0; x = getLong( ); // ³z¹L getLong( ) Ū¨ú¾ã¼Æ¨ì x while(x != -1) { // (ª`·N) ³W©w -1 ¬O¥Nªíµ²§ô if( feof(stdin) ) break; // ­Y EOF ¤]­n°± ! (ª`·N) stdin ¬OÁä½L // ÁÙ¦³°Ú, ­Y¤w¸g EOF µo¥Í, getLong( ) ¦^¶Ç¨Óªº¤]¬O¿ùªº !!! a[n] = x; // §â x ©ñ¤J a[ ], ++n; // ¤@©w­n°Oªº³o¼Ë§â n ¥[ 1, ¤£µM·|Åܦ¨¤@ª½©ñ¤J a[0] ??? x = getLong( ); // ³z¹L getLong( ) Ū¨ú¤U¤@­Ó¾ã¼Æ¨ì x } // while; §O§Ñ¤F³o¬O while Loop ¤§ Loop body ªº§À¤Ú //Loop µ²§ô·|¨ì³o¸Ì¨Ó ! printf("Total %d data read.\n", n); statistics( ); // ²Î­pªº¨Æ´N¥æµ¹¥¦ getchar( ); // ·Q¿ìªk¼È°±¤@¤U, ¥H§K¥i¯à°{¤@¤U´N¤£¨£ return 0; // «ö·Ó³W©w, ¥Dµ{¦¡¶·¦^¶Ç 0 §i¶D¨t²Î»¡¥¿±`µ²§ô ! }// main( long getLong( ) { // ¥H«á­n§ï¿é¤Jªº¤èªk¥u­n§ï³o function ´N¥i :-) static char buf[99]; // a string buffer for input; why "static" ? long ans; // ª`·N­Y¥Î atof ­n§ï double; ¨ç¼ÆÀY³¡¤]­n§ï fgets(buf, sizeof(buf), stdin); // stdin ´N¬OÁä½L, ­n°O±o§t¤J ans = atol(buf); // ±q¦r¦ê¤¤Åª¥X long ¾ã¼Æ (long); ////// ­Y¬O¹ê¼Æ´N§â atol §ï¬° atof ³o¤]¬O§O¤H¼g¦nªº¨ç¼Æ(¨ç¦¡) return ans; } void statistics(void) { // ¥i¥H¬Ý¨ì©Ò¦³ Global ¾ãÅéÅܼÆ(¥þ°ìÅܼÆ) // ¥Î Loop ºâ¥XÃD¥Ø³W©wªº¦UºØ²Î­p¸ê®Æ // ÁÙ¤£·|ªº¥ý½m²ß¦L¥X©Ò¦³ 1 ¨ì n ªº©_¼Æ (Hint: k%2 !=0 «h k ´N¬O©_¼Æ) int i, cnt=0; sum = 0; // Global variable for(i=0; i < n; ++i) { sum += a[i]; } avg = sum / n; // ª`·N sum »P avg ³£¬O real number ¹ê¼Æ double for(i=0; i < n; ++i) if(a[i] >= avg) ++cnt; // ¥²­n®É§â cnt ¥[ 1 printf("Average ¥­§¡ = %.3f ; >= ¥­§¡ªº¦³ %d ­Ó out of %d ­Ó\n", avg, cnt, n); // §O§Ñ¤F­n¼g³o¨Ç°Ñ¼Æµ¹²Ä¤@­Ó°Ñ¼Æ¤º %f %d %d ¥Î /// variance = 0.0; // Global variable for(i=0; i < n; ++i) { variance += (a[i]-avg) * (a[i]-avg); // ¦h°µ´îªk, ¤Ï¥¿¹q¸£«Ü§Ö :-) } variance /= n; // ª`·N¤£­n°£¥H (n-1); ¦]¬°¤£¬O ©â¼Ë(sampling) std = sqrt(variance); printf("Åܲ§¼Æ variance = %.3f ; ¼Ð·Ç®t= %.3f\n", variance, std); // ¹J¨ì function §À¤Ú·|¦Û°Ê return; ¦¹¨ç¼Æ¬O void ¨ç¼Æ, ¥i¥H¤£¼greturn; } // statistics( // ¦pªG§A¦³ K&R ½Ò¥», ¥i¬ã¨s½Ò¥»¤º°Q½× atoi »P atof ¨ç¼Æ¬O¦p¦ó¼gªº, // ¥i¥HÅý§A¼W¥[¥\¤O³á ! /************************** D:\testc>path c:\Dev-Cpp\bin;%path% D:\testc> D:\testc>gcc p3d.c D:\testc>a 1 2 3 4 5 6 -1 Total 6 data read. Average ¥­§¡ = 3.500 ; >= ¥­§¡ªº¦³ 3 ­Ó out of 6 ­Ó Åܲ§¼Æ variance = 2.917 ; ¼Ð·Ç®t= 1.708 D:\testc> ************ °µ²ßÃDÀ³¸Ó­n¦h´ú¸Õ´X¦¸ !!**************/ //p3e.c --- - ¥Î¤F¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J ! // §Ú©î§Ú©î§Ú©î©î©î -- ¤u§@³£©î¶} ==> ¼g¦¨¨ç¼Æ (function; ¨ç¦¡) // ª`·N³op3e.c ¥Î¼Æ¾Ç¤½¦¡ª½±µºâ²Î­p­È: Åܲ§¼Æ, ¼Ð·Ç®t; /// ½Ð»P p3d.c ¤ñ¸û°µªk, ¤½¦¡ªº³¡¤À­Y¤£À´¥i¥H½Ð±Ð¼Æ¾Ç¨tªº©Î¤Wºô¬d¸ß /// ¨âºØ°µªkµª®×¬Û¦P, ¦ý³o p3e.c ªº°µªk¨ä¹ê¥i¥H¦bŪ¨ú¸ê®Æ®É"¶¶«K"ºâ¥X ///// ªü´N¬O»¡¥i¥H¤£¥²¥Î¨ì array, ///// ¥i¬O¦]¬°²ßÃD³W©w­n­pºâ¦h¤Ö­Ó¤j©óµ¥©ó¥­§¡, ³o´N«D¥Î array ¤£¥iÅo!!! ////// ª`·N sqrt( )»Ý­n // ¦pªG§A¹ï©óÅܲ§¼Æ(variance)©M¼Ð·Ç®t(Standard Deviation)ÁÙ¤£¤ÓÁA¸Ñ, // ¦ý¬O«Ü·QÁA¸Ñ, «ØÄ³¥Î gogle.com ¬d¸ß "normal distribution" ¬Ý¬Ý! «Ü¦³½ì! // ¤]¥i¥H¬d "¤¤¥¡·¥­­©w²z" ¬Ý¬Ý, ©Î¬d"Åܲ§¼Æ" ¤]¥i¬Ý¨ì¬ÛÃö¸ê®Æ! /////////////////////////////////////////////////////////////// // Try to write a function(¨ç¼Æ) long getLong( ); to read a Long int // µM«á¨C¦¸­nŪ¨ú¤@­Ó¾ã¼Æ´N ¡§¥s¡¨ (Call) ¥¦À°¦£°µ ! #include #include #include // (ª`·N) atol( ), atoi( ), ¥H¤Î atof( ) ³£«Å§i¦b long n, nBig; // how many data? nBig: how many bigger than average ? long getLong(void); // ¥ý«Å§i(Án©ú)·|¼g¤@­Ó getLong( ) function ƒº void statistics(void); // Án©ú·|¼g¤@­Ó¨S¦³°Ñ¼Æªºfunction ¥s°µ statistics long x, a[1234]; // ¦¹ÃD³W©w¦Ü¤Ö 999 ­Ó¤¸¯À; x ¬O¼È¦s¥Îªº double sum, s2, avg, variance, std; // ©M, ¥­¤è©M, ¥­§¡, Åܲ§¼Æ, ¼Ð·Ç®t // §âÅܼÆ(Variable)³£¼g¦b©Ò¦³function¥~ªí¥Ü©Ò¦³ function³£¥i¥H¥Î, // ªü´N¬O§Úªº´N¬O§Aªº, ¥s°µ Global variable ¾ãÅéÅÜ¼Æ ©Î ¥þ°ìÅÜ¼Æ // ³o¼Ë´N¤£¥Î³z¹L°Ñ¼Æ¶Ç¨Ó¶Ç¥h! ¤è«K, ¤£¹L±aµÛ¤@¨Ç¦MÀI (talk this later) int main( ) { // ¤j¦h¼Æ main program ³£³o¼Ë¶}ÀY n = nBig = 0; sum = s2 = 0.0; x = getLong( ); // ³z¹L getLong( ) Ū¨ú¾ã¼Æ¨ì x while(x != -1) { // (ª`·N) ³W©w -1 ¬O¥Nªíµ²§ô if( feof(stdin) ) break; // ­Y EOF ¤]­n°± ! (ª`·N) stdin ¬OÁä½L // ÁÙ¦³°Ú, ­Y¤w¸g EOF µo¥Í, getLong( ) ¦^¶Ç¨Óªº¤]¬O¿ùªº !!! a[n] = x; // §â x ©ñ¤J a[ ], ++n; // ¤@©w­n°Oªº³o¼Ë§â n ¥[ 1, ¤£µM·|Åܦ¨¤@ª½©ñ¤J a[0] ??? x = getLong( ); // ³z¹L getLong( ) Ū¨ú¤U¤@­Ó¾ã¼Æ¨ì x } // while; §O§Ñ¤F³o¬O while Loop ¤§ Loop body ªº§À¤Ú //Loop µ²§ô·|¨ì³o¸Ì¨Ó ! printf("Total %d data read.\n", n); statistics( ); // ²Î­pªº¨Æ´N¥æµ¹¥¦ getchar( ); // ·Q¿ìªk¼È°±¤@¤U, ¥H§K¥i¯à°{¤@¤U´N¤£¨£ return 0; // «ö·Ó³W©w, ¥Dµ{¦¡¶·¦^¶Ç 0 §i¶D¨t²Î»¡¥¿±`µ²§ô ! }// main( long getLong( ) { // ¥H«á­n§ï¿é¤Jªº¤èªk¥u­n§ï³o function ´N¥i :-) static char buf[99]; // a string buffer for input; why "static" ? long ans; // ª`·N­Y¥Î atof ­n§ï double; ¨ç¼ÆÀY³¡¤]­n§ï fgets(buf, sizeof(buf), stdin); // stdin ´N¬OÁä½L, ­n°O±o§t¤J ans = atol(buf); // ±q¦r¦ê¤¤Åª¥X long ¾ã¼Æ (long); ////// ­Y¬O¹ê¼Æ´N§â atol §ï¬° atof ³o¤]¬O§O¤H¼g¦nªº¨ç¼Æ(¨ç¦¡) return ans; } void statistics(void) { // ¥i¥H¬Ý¨ì©Ò¦³ Global ¾ãÅéÅܼÆ(¥þ°ìÅܼÆ) // ¥Î Loop ºâ¥XÃD¥Ø³W©wªº¦UºØ²Î­p¸ê®Æ // ÁÙ¤£·|ªº¥ý½m²ß¦L¥X©Ò¦³ 1 ¨ì n ªº©_¼Æ (Hint: k%2 !=0 «h k ´N¬O©_¼Æ) int i, cnt=0; sum = 0; // Global variable s2 = 0; // ¥Î¨Óºâ"¥­¤è©M" (sum of square) for(i=0; i < n; ++i) { sum += a[i]; s2 += a[i] * a[i]; // ­Y¤£À´±o½Ð¤Wºô¬d "Åܲ§¼Æ¤½¦¡" } avg = sum / n; // ª`·N sum »P avg ³£¬O real number ¹ê¼Æ double for(i=0; i < n; ++i) if(a[i] >= avg) ++cnt; // ¥²­n®É§â cnt ¥[ 1 printf("Average ¥­§¡ = %.3f ; >= ¥­§¡ªº¦³ %d ­Ó out of %d ­Ó\n", avg, cnt, n); // §O§Ñ¤F­n¼g³o¨Ç°Ñ¼Æµ¹²Ä¤@­Ó°Ñ¼Æ¤º %f %d %d ¥Î /// variance = s2 - sum*sum / n; //­Y¤£À´±o½Ð¤Wºô¬d "Åܲ§¼Æ¤½¦¡" variance /= n; // ª`·N¤£­n°£¥H (n-1); ¦]¬°¤£¬O ©â¼Ë(sampling) std = sqrt(variance); printf("Åܲ§¼Æ variance = %.3f ; ¼Ð·Ç®t= %.3f\n", variance, std); // ¹J¨ì function §À¤Ú·|¦Û°Ê return; ¦¹¨ç¼Æ¬O void ¨ç¼Æ, ¥i¥H¤£¼greturn; } // statistics( // ¦pªG§A¦³ K&R ½Ò¥», ¥i¬ã¨s½Ò¥»¤º°Q½× atoi »P atof ¨ç¼Æ¬O¦p¦ó¼gªº, // ¥i¥HÅý§A¼W¥[¥\¤O³á ! /************************** D:\testc>path c:\Dev-Cpp\bin;%path% D:\testc> D:\testc>gcc p3e.c D:\memo\Documents\LABs>a 1 2 3 4 5 6 -1 Total 6 data read. Average ¥­§¡ = 3.500 ; >= ¥­§¡ªº¦³ 3 ­Ó out of 6 ­Ó Åܲ§¼Æ variance = 2.917 ; ¼Ð·Ç®t= 1.708 D:\testc> D:\testc>gcc p3d.c D:\testc>a 1 2 3 4 5 6 -1 Total 6 data read. Average ¥­§¡ = 3.500 ; >= ¥­§¡ªº¦³ 3 ­Ó out of 6 ­Ó Åܲ§¼Æ variance = 2.917 ; ¼Ð·Ç®t= 1.708 D:\testc> ************ °µ²ßÃDÀ³¸Ó­n¦h´ú¸Õ´X¦¸ !!**************/