//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¦¸ !!**************/