打印输入中单词长度的直方图
来源:互联网 发布:eplan软件大小 编辑:程序博客网 时间:2024/05/17 07:05
这是《C程序设计语言》中的一题,是书中1-13题:
#include <stdio.h>#define MAXHIST 15 //直方图的最大长度#define MAXWORD 12 //输入单词的最大长度#define IN 1#define OUT 0int main(){ int c, i, nc, len, state; int wl[MAXWORD]; //按照单词的长度,统计单词中字母数为1~11的单词出现的次数 int ovflow; int maxvalue; //出现最多次的某长度单词出现的次数 state = OUT; ovflow = 0; nc = 0; for(i = 0; i < MAXWORD; ++i) wl[i] = 0; while((c = getchar()) != EOF) { if(c == ' ' || c == '\t' || c == '\n') { state = OUT; if(nc > 0) if(nc < MAXWORD) ++wl[nc]; else ++ovflow; nc = 0; } else if(state == OUT) { state = IN; nc = 1; } else nc++; } maxvalue = 0; for(i = 1; i < MAXWORD; ++i) if(wl[i] > maxvalue) maxvalue = wl[i]; for(i = 1; i < MAXWORD; ++i) { printf("%5d - %5d:", i, wl[i]); if(wl[i] > 0) { if((len = wl[i] * MAXHIST / maxvalue) <= 0) //len为直方图中直方条的长度 len = 1; } else len = 0; while(len > 0) { putchar('*'); //直方图用“*”来表示 --len; } putchar('\n'); } if(ovflow > 0) printf("There are %d words >= %d\n", ovflow, MAXWORD); return 0;}
这里对于题目可能会出现误解,可能会理解成对于输入中的每个单词,用直方图表示其长度然后打印出来。实际上题目的意思是输入的单词中各个单词长度不一样,统计每种长度的单词数,然后用直方图表示出各长度单词数的多少。下面是运行结果:
其中程序语句len = wl[i] * MAXHIST / maxvalue 表示长度为i的单词数占maxvalue的比例,直方图最大长度为MAXHIST数量的"*”。
0 0
- 打印输入中单词长度的直方图
- 打印输入中单词长度的直方图
- 打印输入中单词长度的直方图
- 打印输入中单词长度的直方图
- 打印输入中单词长度的直方图
- 打印输入中单词长度的直方图(垂直打印)
- 打印输入中单词长度的直方图(水平打印)
- 打印输入中单词长度的直方图程序
- 【C】打印输入中单词长度的直方图(水平)
- 编写一个程序,打印输入中单词长度的直方图
- 打印输入中单词长度的直方图(水平方向)
- 打印输入中单词长度的直方图(垂直方向)
- 编写一个程序,打印输入中单词长度的直方图
- 打印输入中单词长度的水平直方图
- C:打印输入单词长度的直方图
- 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易
- 打印输入中单词长度的直方图(垂直方向的直方图)
- 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易。
- 2014.12.17学习笔记
- jsp的动作指令
- Maven项目搭建及常用包添加
- 计蒜客012-最后一个单词的长度
- Serializable和Externalizable
- 打印输入中单词长度的直方图
- Unity3D学习之(transform和Vector3向量)
- 类与对象
- 作报表需要的一些oracle sql
- iOS 支付宝 SDK 支付完毕后返回APP的方法
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- 实习篇---第二十天
- ./ggsci: error while loading shared libraries: libnnz11.so
- 【cocos2dx网络游戏】搭建CS架构的基本通信框架(一)Client