练习1-14 编写一个程序,打印输入中各个字符出现频度的直方图。
代码如下:
#include <stdio.h> // 包含标准库的信息。 int main() // 定义名为main的函数,它不接受参数值。 { printf("======打印输入字符频度的直方图====== "); unsigned int ws[128]; // 字符频度数组。 int i, j, c; i = j = c = 0; // 默认每个字符出现0次。 for (i = 0; i < 128; i++) { ws[i] = 0; } while ((c = getchar()) != EOF) { // 进行字符匹配,如果匹配到字符频度就+1; for (i = 0; i < 128; i++) { if (i == c) { ws[i] += 1; break; } } } // 显示水平直方图。 for (i = 0; i < 128; i++) { if (ws[i] > 0 && i != ' ' && i != ' ' && i != ' ') { printf("%c:", i); for (j = 0; j < ws[i]; j++) { printf("*"); } printf(" "); } } getchar(); // 防止控制台一闪而过,需要接受任意字符后在关闭控制台。 return 0; // 向执行环境返回一个整形,0代表执行成功。 }
个人理解:
主要是加深对数组操作的理解。