利用一個array[26]從0到25分別對應A(a)到Z(z),
初始為0。
每次從stdin接收一個字母後,對應該字母的element + 1。
輸出時,從array[0]到array[25]找最大的element,
輸出之,輸出後把該element歸0。反覆,到所有elements為0為止。
/* ACM 10008 * mythnc * 2011/10/13 09:10:55 * run time = 0.004 */ #include <stdio.h> #include <ctype.h> int printout(int *s); int main(void) { int c; int alpha[26] = {0}; scanf("%*d"); while ((c = getchar()) != EOF) if (isupper(c)) alpha[c - 'A']++; else if (islower(c)) alpha[c - 'a']++; while (printout(alpha)) ; return 0; } /* printout: print array s from high to low sequence */ int printout(int *s) { int i, j, max; max = 0; for (i = 0; i < 26; i++) if (max < s[i]) { max = s[i]; j = i; } if (max == 0) /* if no letter have to be outputed */ return 0; printf("%c %d\n", 'A' + j, max); s[j] = 0; return 1; }
沒有留言:
張貼留言