C 语言 习题 1-14
练习 1-14 编写一个程序,打印输入中各个字符出现频度的直方图。
1 #include <stdio.h> 2 3 /* count digits, white space, others */ 4 5 int main(int argc, char const *argv[]) 6 { 7 int c, i, j, nwhite, nother; 8 int ndigit[10]; 9 10 nwhite = nother = 0; 11 for (i = 0; i < 10; ++i) { 12 ndigit[i] = 0; 13 } 14 15 while ((c = getchar()) != EOF) { 16 if (c >= '0' && c <= '9') { 17 ++ndigit[c-'0']; 18 } else if (c == ' ' || c == '\n' || c == '\t') { 19 ++nwhite; 20 } else { 21 ++nother; 22 } 23 } 24 25 for (i = 0; i < 10; ++i) { 26 printf("%d:", i); 27 for (j = 0; j < ndigit[i]; ++j) { 28 printf("*"); 29 } 30 printf("\n"); 31 } 32 printf("w:"); 33 for (i = 0; i < nwhite; ++i) { 34 printf("*"); 35 } 36 printf("\no:"); 37 for (i = 0; i < nother; ++i) { 38 printf("*"); 39 } 40 printf("\n"); 41 42 return 0; 43 }