//p33.c --- - ¥Î¤F¥ß©e¤uµ{Âà¥]·§©À: ¥t¼gfunction°µ¿é¤J ! // ½Ð´ú¸Õ³o¦¨¦¡¨Ã¥B§ä¥X°ÝÃD¥X¦b­þ¸Ì? // ¯uªº¦³°ÝÃD³á! // ¦n°Õ, ÁY¤p½d³ò, °ÝÃD¦b getLong ¨ç¼Æ¤ºªº scanf °Õ // ·|¨Ï±o³Ì«á³Ì«á¿é¤Jªº¨S¦³ºâ¶i¥h! Why? Why? Why? // ©Ò¥H¦Ñ®v¦­´N¸ò§A»¡¤£­n¥Î scanf §A³£¤£Å¥! // ½Ð¦^ÀY¬Ý¬Ý¤§«e p31.c ¥Î fgets ·f°t atol ¬O¨S¦³°ÝÃDªº! // 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 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ªíµ²§ô printf("Got %ld\n", x); if( feof(stdin) ) break; // ­Y¬O EOF ¤]­n°± ! (ª`·N) stdin ¬OÁä½L // ÁÙ¦³°Ú, ­Y¤w¸g EOF µo¥Í, getLong( ) ¦^¶Ç¨Óªº¤]¬O¿ùªº !!! a[n] = x; // §â x ©ñ¤J a[ ], sum += x; ++n; // ¬JµM¦s¤J array, ²Î­pªº¨Æµ¥¤U Call function statistics §@ x = getLong( ); // ³z¹L getLong( ) Ū¨ú¾ã¼Æ¨ì x } // while avg = sum/n; printf("Total %d data read.\nAverage=%7.2f\n", n, avg); statistics( ); // ²Î­pªº¨Æ´N¥æµ¹¥¦ // ·Q¿ìªk¼È°±¤@¤U, ¥H§K¥i¯à°{¤@¤U´N¤£¨£ }// 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§ï scanf("%ld ", &ans); // %ld ¬Oµ¹ long int ³á // 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³á ! /************************* D:\testc> gcc p33.c D:\testc> a 1 2 Got 1 3 Got 2 4 Got 3 5 Got 4 ^Z Got 5 Total 4 data read. Average= 2.50 D:\testc> *************************************/