此程序是 程序-编写一个程序,打印输入中各个字符出现频度的直方图

问题描述

编写一个程序,打印输入中各个字符出现频度的直方图

#include
/* NUM_CHARS should really be CHAR_MAX but K&R haven't covered that at this stage in the book /
#define NUM_CHARS 256
int main(void)
{
int c;
long freqarr[NUM_CHARS + 1];
long thisval = 0;
long maxval = 0;
int thisidx = 0;
for(thisidx = 0; thisidx <= NUM_CHARS; thisidx++)
{
freqarr[thisidx] = 0;
}
while((c = getchar()) != EOF)
{
if(c < NUM_CHARS)
{
thisval = ++freqarr[c];
if(thisval > maxval)
{
maxval = thisval;
}
}
else
{
thisval = ++freqarr[NUM_CHARS];
if(thisval > maxval)
{
maxval = thisval;
}
}
file:///E|/我的下载资料/程序设计/c语言/The_C...guage中文英文答案/C程序设计语言(第二版)课后答案.htm(第 16/246 页)2008-5-15 11:00:46
The C Programming Language Exercise
}
for(thisval = maxval; thisval > 0; thisval--)
{
printf("%4d |", thisval);
for(thisidx = 0; thisidx <= NUM_CHARS; thisidx++)
{
if(freqarr[thisidx] >= thisval)
{
printf("
");
}
else if(freqarr[thisidx] > 0)
{
printf(" ");
}
}
printf("n");
}
printf(" +");
for(thisidx = 0; thisidx <= NUM_CHARS; thisidx++)
{
if(freqarr[thisidx] > 0)
{
printf("-");
}
}
printf("n ");
for(thisidx = 0; thisidx < NUM_CHARS; thisidx++)
{
if(freqarr[thisidx] > 0)
{
printf("%d", thisidx / 100);
}
}
printf("n ");
for(thisidx = 0; thisidx < NUM_CHARS; thisidx++)
{
if(freqarr[thisidx] > 0)
{
printf("%d", (thisidx - (100 * (thisidx / 100))) / 10 );
}
}
printf("n ");
for(thisidx = 0; thisidx < NUM_CHARS; thisidx++)
{
if(freqarr[thisidx] > 0)
{
printf("%d", thisidx - (10 * (thisidx / 10)));
}
}
if(freqarr[NUM_CHARS] > 0)
{
printf(">%dn", NUM_CHARS);
}
printf("n");
return 0;
file:///E|/我的下载资料/程序设计/c语言/The_C...guage中文英文答案/C程序设计语言(第二版)课后答案.htm(第 17/246 页)2008-5-15 11:00:46
The C Programming Language Exercise
}
我不明白在编写坐标时,为什么要将thisidx除以100或10来计算

解决方案

进行坐标变换,要不然图标会显得过大。

时间: 2024-09-20 05:28:19

此程序是 程序-编写一个程序,打印输入中各个字符出现频度的直方图的相关文章

c语言-编写一个程序,打印输入中的单词长度的直方图。垂直方图。

问题描述 编写一个程序,打印输入中的单词长度的直方图.垂直方图. 直方图是如何理解????求教这道题~~ 这道题目是书上的!有没有懂的大神.给讲解啊. 解决方案 问题是怎么解决的? 我想到的就是算好格式用printf()一行行的输入,最后拼成直方图.

源代码-请求高手为我用C++编写一个程序

问题描述 请求高手为我用C++编写一个程序 要求:(1)可以秒控 (2)可以括兵营 (3)免抓数据包 (4)要全部源代码 写好以后发ilovejunhongjing@163.com 解决方案 首先把需求描述清楚,这样大家才好帮你 解决方案二: 题目要求都没,这东西得自己动手哈

c++-//编写一个程序,最多将10个donation值读入到一个double数组中。

问题描述 //编写一个程序,最多将10个donation值读入到一个double数组中. #include int main() { using namespace std; int donation; double average; int sum; int c,i; for(i=1;i<=10;i++) { while(isdigit(donation)) cout<<"Enter "< cin>>donation[i]; sum+=donati

c++-C++编写一个程序,输入一个广义表,对广义表遍历并且计算广义表的个数。

问题描述 C++编写一个程序,输入一个广义表,对广义表遍历并且计算广义表的个数. C++编写一个程序,输入一个广义表,对广义表遍历并且计算广义表的个数. 解决方案 http://blog.csdn.net/jack_wong2010/article/details/6910200

字符串四则运算-用c#编写一个程序,以最原始的方法进行两个字符串的四则运算

问题描述 用c#编写一个程序,以最原始的方法进行两个字符串的四则运算 字符串里面是数值,且不受字数限制. 如两个字符串相加"121343435"+"3453245",设计的程序是:个位与个位相加,满10进1,十位于十位相加... 如果设计的乘法,也是个位先和个位相乘...完了错开一位相加 采取最原始的方法,就像小学学习四则运算一样,一步一步进行 不能把字符串先转换为int等类型在进行运行,因为int类型储存数值长度短,这个程序设计的意义就是可以进行不受字数限制的四则

求解:编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。

问题描述 求解:编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数. #include #include #include int main(void) { int i; while(scanf("%d",i)) { for(int j=1;j<=i;j++) { for(int k=1;k<j;k++) { if(j%k==0) continue; else goto line; } line: printf("there are %d"

c语言-编写一个程序遇到的疑问

问题描述 编写一个程序遇到的疑问 #include int main() { float t = 0; float invalue; float average; char ch; float all = 0; for (;;) { printf("请输入数据:"); scanf("%f", &invalue); all = all + invalue; printf("%fn", all); t = t + 1; printf(&quo

加密-编写 一个程序vxworks下的简单程序

问题描述 编写 一个程序vxworks下的简单程序 编写 一个程序vxworks下的简单程序,可以与加密狗关联,在没有加密狗的情况下,系统无法启动. 解决方案 编写一个简单的C++程序编写一个简单的servlet小程序Vim 编写一个简单程序

怎么样编写一个程序,彻底可以从系统中隐藏调用

问题描述 怎么样编写一个程序,彻底可以从系统中隐藏调用 怎么样编写一个程序,彻底可以从系统中隐藏调用,包括文件名和进程都不被看到,但是可以执行其中的程序呢? 解决方案 http://blog.csdn.net/aohan/article/details/5035162 解决方案二: hook 系统相关进程API.来隐藏