这个练习直到求最大值之前的部分都是一样的。关键是那两个for语句。
for(i = MAXHIST; i > 0; ++i){
for (j = MAXHIST; j > 0; --j)
for (i = 1; i < MAXWORD; ++i)
if(wl[j] * MAXHIST / maxvalue >= i)
printf("");
else
printf(" ");
wl[j] * MAXHIST / maxvalue这个公式依然是计算需要打多少个,然后判断当前这个高度是否需要打.他是从上到下从左到右进行扫描的,
简单的说就是从直方图最高的那一行开始判断,假设是20,那么开始从左到右进行判断,因为从左到右依次是1、2、3……MAXWORD。所以这个公式将从1个单词长度开始判断出现的次数的比例是否满足这个高度,比如弱这个公式判断的是最大值 那么这个公式的结果就是20.那么当前的高度i也是20的话则打印,如果当前高度是19.公式得到的结果还是20,那么>=当前高度i,所以依然要打印。而如果公式的计算结果<i也就是说没达到这个高度的条件的话则打印空格然后进行下一个,就是wl[++j]的判断。然后把这个高度i从1到MAXWORD都判断后高度i减一然后继续判断公式是否达到此高度。
这两个练习包括之前的都是我看习题解答那本书琢磨的,让我一个初学者去编写这种题目简直丧心病狂,我不清楚有没有初学者不看答案自己编出来。反正我是没办法。但是再弄懂后开起来还是蛮简单的。
练习1-14那个答案中的头文件我还不知道是什么,因为没看到那。所以先不写等看到那的时候再回来写。
练习1-13
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...