如其wl[i]大于零,就至少打印出一个星号

如果wl[i]大于零,就至少打印出一个星号
本帖最后由 limuyuan2008 于 2013-07-13 23:34:38 编辑
		if((len = wl[i] * MAXHIST / maxvalue) <= 0)
len = 1;
while(len > 0){
putchar('*');
--len;


题目是打印输入单词长度的直方图
wl[MAXWORD]是一个数组,用于储存单词长度数值
MAXWORD是输入单词的计数上限,大于等于MAXWORD的单词用另一个变量ovflow统计,最后打印超出范围的单词数
maxvalue是wl中最大值,就是输入单词中最长的单词长度
MAXHIST是直方图的长度
len不用解释了吧
所有变量都被声明为int类型
本段包含在一个FOR循环里
for(i = 1; i < MAXWORD; ++i)

我的问题:这里为什么要用len<=0?

------解决方案--------------------
小于 0 的情况应该不会发生.
但是 wl[i] * MAXHIST / maxvalue 这个运算即使 wl[i] 大于 0, 结果也可能等于 0.
既然题目要求 wl[i] 大于 0 是必须有一个 "*", 所以对结果等于 0 的情况特殊处理一下, 让它打印一个, 好符合题目要求.
------解决方案--------------------
我觉得前面应该还有别的条件吧?楼主的意思是每个直方图代表单词中字母的数量么?如果小于等于0,也许是说这个不是字母也说不定。看看前面还有别的条件么?最好把全部代码都列出来。