输出部分与单词个数直方图类似。 // 字符出现频率的直方图 #include <stdio.h> #include <ctype.h> #define MAXHIST 15 // max length of histogram #define MAXCHAR 128 // max different characters // Print horizontal histogram freq. of different characters int main() { int i, c; int len; // length of each bar int maxvalue; // maximum value for cc[] int cc[MAXCHAR]; // character counters for (i = 0; i < MAXCHAR; i++) { cc[i] = 0; } while ((c = getchar()) != EOF) { if (c < MAXCHAR) { ++cc[c]; // 对应字符的个数 } } // find the maximum value in cc[MAXCHAR] maxvalue = 0; for (i = 1; i < MAXCHAR; i++) // wl[0]未使用(单词的长度>0) { if (cc[i] > maxvalue) { maxvalue = cc[i]; } } // 输出直方图(水平) for (i = 1; i < MAXCHAR; ++i) { if (isprint(i)) { printf("%5d - %c - %2d : ", i, i, cc[i]); }