打印输入中单词长度的直方图
2011-04-14 15:28
309 查看
源于《The C Programming Language》P17 pr1-13:
编写一个程序,打印输入中单词长度的直方图。
代码:
分析:
1, 费了点时间读懂了题目,本题中的单词长度直方图的理解:
错误:“单词 - 长度”模式
例如: fuck - ****
teaching - ********
i - *
good - ****
正确:用直方图表示长度为n的单词数占总单词数的比例
2, 用数组wl存储长度从1~10的单词的个数,如上例,wl[1] = 1, wl[4] = 2, wl[8] = 1
3, len = wl[i] * MAXHIST / maxvalue; len:表示长度为i的单词数占总单词数的比例
编写一个程序,打印输入中单词长度的直方图。
代码:
/************************************************************** 直方图定义: n:某个长度单词出现的次数(长度为4的单词出现了9次,则n = 9) M:出现最频繁的长度的次数 H:定义的直方图的最大长度(本例中为MAXHIST) **************************************************************/ #include <stdio.h> #define MAXHIST 15 //直方图的最大长度 #define MAXWORD 11 //单词的最大长度 #define IN 1 //在单词中 #define OUT 0 //在单词外 int main() { int c, i, nc, state; //nc:单词的长度 int len; //直方图中每个直方条的长度 int maxvalue; //wl数组的最大值 int ovflow; //长度大于或等于MAXWORD的单词的数量 int wl[MAXWORD]; //按单词长度值0~11,统计输入中各长度的单词数,存放在wl数组中 state = OUT; nc = 0; ovflow = 0; for(i = 0; i < MAXWORD; ++i) wl[i] = 0; while((c = getchar()) != EOF) if(c == ' ' || c == '/n' || c == '/t') { 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 = 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; }
分析:
1, 费了点时间读懂了题目,本题中的单词长度直方图的理解:
错误:“单词 - 长度”模式
例如: fuck - ****
teaching - ********
i - *
good - ****
正确:用直方图表示长度为n的单词数占总单词数的比例
2, 用数组wl存储长度从1~10的单词的个数,如上例,wl[1] = 1, wl[4] = 2, wl[8] = 1
3, len = wl[i] * MAXHIST / maxvalue; len:表示长度为i的单词数占总单词数的比例
相关文章推荐
- 练习1-13 编写一个程序,打印输入中单词长度的直方图(垂直)
- 打印输入中单词长度的直方图
- 练习1-13 编写一个程序,打印输入中单词长度的直方图(水平)
- 打印输入单词长度的直方图 (水平方向)程序分析
- C:打印输入单词长度的直方图
- 学习C:打印输入中单词长度的水平方向直方图
- 打印输入中单词长度的直方图(垂直打印)
- 编写一个程序,打印输入中单词长度的直方图
- 打印输入中单词长度的直方图(水平打印)
- 练习1-13 编写一个程序,打印输入中单词长度的直方图(水平)(方法2)
- 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易
- 【C】打印输入中单词长度的直方图(水平)
- 编写程序,打印输入中单词长度的直方图(up/down/left/right)
- 打印输入中单词长度的直方图程序
- 打印输入中单词长度的直方图,垂直方向的。折磨使我强大的一个程序!
- 练习1-13 编写一个程序,打印输入中单词长度的垂直方向的直方图(垂直图)
- 习题1-13(垂直方向直方图):编写一个程序打印输入中单词长度的垂直方向的直方图。
- 打印输入中单词长度直方图 (垂直方向) c程序书中的练习题,上机无书下输入,调试
- 编写一个程序,打印输入中单词长度的水平和垂直方向直方图
- 编写一个程序,打印输入中单词长度的直方图