第7周 C语言程序设计(新2版) 练习1-14 打印输出各个字符出现频度的直方图(输出结果有问题)
2016-05-11 17:51
309 查看
问题及代码:
学习心得:
知识总结:
参考源代码(更直观):
/*打印输入中各个字符出现频度的直方图*/ #include<stdio.h> #include<ctype.h> #define MAXHIST 15 //最大直方图长度 #define MAXCHAR 128 //最大的不同字符 #define IN 1 //单词内 #define OUT 0 //单词外 int main() { int c,i; int len; int maxvalue; //数组wl[]的最大值 int cc[MAXCHAR]; // 字符数组 for(i=0;i<MAXCHAR;i++) cc[i]=0; //数组的所有元素赋初值为0 while((c=getchar())!=EOF) if(c<MAXCHAR) cc[c]++; maxvalue=0; for(i=1;i<MAXCHAR;i++) { if(isprint(i)) //调用这个函数,是何功能 ? printf("%5-%c%-5d:",i,i,cc[i]); else printf("%5- -5d:",i,cc[i]); if(cc[i>0]) { if((len=cc[i]*MAXHIST/maxvalue)<=0) len=1; } else len=0; while(len>0) { putchar('*'); --len; } putchar('\n'); } }运行结果:
学习心得:
知识总结:
参考源代码(更直观):
# include <stdio.h> int main(void){ int a[26]; int c; int i; int j; for(i = 0; i <26; i++){ a[i] = 0; } while((c =getchar()) != EOF){ for(i = 'a'; i <= 'z'; i++){ if(c == i){ a[i - 97]++; } } } for(i = 0; i < 26; i++){ if(a[i] != 0){ printf("%c ", i + 97); for(j = 0; j < a[i]; j++){ putchar('*'); } putchar('\n'); } } return 0; }运行结果:
相关文章推荐
- C++11正则表达式 ps:多线程
- c++第五次作业
- 两个数组实现堆栈
- C++编程小九九
- C++中的三目运算符号
- 【C语言】变长数组与柔性数组
- C语言 字符串二维数据的引用
- C语言编程的进制问题问题
- C++队列中应该注意的一些问题
- c++ find 函数
- 【C语言】判断字符串是否是回文
- C++ vector 的简单用法
- c++第五次实验--多继承
- more effective C++的读书笔记 ——不要重载&&和||
- 【C语言】动态内存分配alloca
- C++之嵌套类与外围类及友元
- C++中的::操作符
- 关于C++全局变量声明的问题
- c++第五次上机实验——教师干部类
- C++实现双链表