练习1.13编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直
方向的直方图则要困难些

 #include <stdio.h>
#include <stdlib.h>
#define MAXHIST 15//定义直方图的最大值
#define MAXWORD 11//定义单词的最大字符数
#define IN 1
#define OUT 0
int main()
{
int nc;//单词所含的字符数
int maxvalue=;//记录单词所含字符的最大值
int c;
int i;
int len;//记录直方图所需打印的*数目
int overflow=;//记录越界单词的数目
int state=OUT;
int wc[MAXWORD];//记录不同长度单词的数目
//初始或数组
for(i=;i<MAXWORD;i++)
{
wc[i]=;
}
while((c=getchar())!=EOF)
{
if(c==' '||c=='\t'||c=='\n')
{
state=OUT;
if(nc>&&nc<MAXWORD)
{
++wc[nc];
}
else
{
++overflow;
}
nc=;
}
else
{
if(state==OUT)
{
state=IN;
nc=;//记录每个单词的开始
}
else
{
nc++;
}
}
}
//求出单词所含字符数的最大值
for(i=;i<MAXWORD;i++)
{
if(wc[i]>maxvalue)
{
maxvalue=wc[i];
}
}
for(i=;i<MAXWORD;i++)
{
printf("%3d-%3d:",i,wc[i]);
if(wc[i]>)
{
len=wc[i]*MAXHIST/maxvalue;//此部分用来同比例放大数值
}
else
{
len=;
}
while(len>)
{
putchar('*');
len--;
}
putchar('\n');
}
printf("%3d word(s) overflow!",overflow);
return ;
}

运行结果:

 #include <stdio.h>
#include <stdlib.h>
#define MAXHIST 15//定义直方图的最大值
#define MAXWORD 11//定义单词的最大字符数
#define IN 1
#define OUT 0
int main()
{
int nc;//单词所含的字符数
int maxvalue=;//记录单词所含字符的最大值
int c;
int i,j;
// int len;//记录直方图所需打印的*数目
int overflow=;//记录越界单词的数目
int state=OUT;
int wc[MAXWORD];//记录不同长度单词的数目
//初始或数组
for(i=;i<MAXWORD;i++)
{
wc[i]=;
}
while((c=getchar())!=EOF)
{
if(c==' '||c=='\t'||c=='\n')
{
state=OUT;
if(nc>&&nc<MAXWORD)
{
++wc[nc];
}
else
{
++overflow;
}
nc=;
}
else
{
if(state==OUT)
{
state=IN;
nc=;//记录每个单词的开始
}
else
{
nc++;
}
}
}
//求出单词所含字符数的最大值
for(i=;i<MAXWORD;i++)
{
if(wc[i]>maxvalue)
{
maxvalue=wc[i];
}
}
for(i=MAXHIST;i>;i--)
{
for(j=;j<MAXWORD;j++)
{
if((wc[j]*MAXHIST/maxvalue)>=i)
{
printf(" *");
}
else
{
printf(" ");
}
}
putchar('\n');
}
for(i=;i<MAXWORD;i++)
{
printf("%3d",wc[i]);
}
putchar('\n');
for(i=;i<MAXWORD;i++)
{
printf("%3d",i);
}
printf("%3d word(s) overflow!",overflow);
return ;
}

运行结果:

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

 #include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXCHAR 121
#define MAXHIST 15
int main()
{
int c;
int i;
int maxvalue=;//记录单词所含字符的最大值
int len;//记录直方图所需打印的*数目
int wc[MAXCHAR];//记录不同长度单词的数目
//初始或数组
for(i=;i<MAXCHAR;i++)
{
wc[i]=;
}
while((c=getchar())!=EOF)
{
if(c<MAXCHAR)
++wc[c];
}
//求出单词所含字符数的最大值
for(i=;i<MAXCHAR;i++)
{
if(wc[i]>maxvalue)
{
maxvalue=wc[i];
}
}
for(i=;i<MAXCHAR;i++)
{
if(isprint(i))
{
printf("%3d-%c-%d ",i,i,wc[i]);
}
else
{
printf("%3d- -%d ",i,wc[i]);
}
if(wc[i]>)
{
len=wc[i]*MAXHIST/maxvalue;//此部分用来同比例放大数值
}
else
{
len=;
}
while(len>)
{
putchar('*');
len--;
}
putchar('\n');
} return ;
}

运行结果:

c程序设计语言第一章2的更多相关文章

  1. c程序设计语言第一章3

    字符数组是C语言中最常用的数组类型.下面我们通过编写一个程序,来说明字符数组以反操作字符数组的函数的用法.该程序读入一组文本行,并把最长的文水行打印出来.该算法的基本框架非常简单: while (还有 ...

  2. c程序设计语言第一章1

    1,c程序都是由函数和变量组成的. 练习1.6验证布尔表达式getchar()!= EOF的取值是0还是1 答: #include <stdio.h> #include <stdli ...

  3. c程序设计语言第一章5

    练习1.20请编写程序d e t a b

  4. c程序设计语言第一章4

    (昨天网络出现了问题,导致这篇没来得及上传,再次补上,今晚照常上传笔记) 练习1.19编写函数r e v e r s e ( s )将字符串s中的字符顺序颠倒过来.使用该函数编写一个程序,每次颠倒一个 ...

  5. C语言——第一章,程序设计和C语言

    第一章,程序设计和C语言 一,程序和程序语言 程序:完成某项事物所预设的活动方式和活动过程 程序设计:人们描述(指程序)计算机要做的工作 程序设计语言及发展 1,机器语言    2,汇编语言    3 ...

  6. Intel汇编语言程序设计学习-第一章 基本概念

    第一章基本概念 1.1  简单介绍 本书着重讲述MS-Windows平台上IA-32(Intel Architecture 32bit,英特尔32位体系架构)兼容微处理器的汇编语言程序设计,可以使用I ...

  7. c语言第一章第一节 认识变量

    声明:本人大一新生,闲着无聊..写写c语言教程..菜鸟一枚..大神勿喷!!! 接下来我们都用dev来进行编译..vc++太古老了,没提示功能,不好上手,并且老是出毛病..vs太大了,编个c不至于,运行 ...

  8. 《JavaScript高级程序设计》——第一章JavaScript简介

    第一章主要讲了JavaScript的诞生和发展.刚刚接触JavaScript的我,似乎对这些内容并不感兴趣,快速看了一遍就开始去看第二章了. 看完第一章,收获也就是了解到JavaScript由ECMA ...

  9. C#语言————第一章 第一个C#程序

    第一章    第一个C#程序 ******************C#程序***************     ①:建立项目:文件-->新建-->项目-->c#-->控制台程 ...

随机推荐

  1. Java面试——从JVM角度比较equals和==的区别

    1.  Java中数据类型分类 1.1    基本数据类型 又称为原始数据类型,byte,short,char,int,long,float,double,boolean,他们之间的比较应该使用(== ...

  2. BZOJ 2295: [POJ Challenge]我爱你啊

    由于是子序列,那么难度就在于读入 #include<cstdio> #include<algorithm> #include<cstring> using name ...

  3. python基础学习笔记——包

    包的简介 你们听到的包,可不是女同胞疯狂喜欢的那个包,我们来看看这个是啥包 官方解释: 1 2 3 4 5 6 7 8 9 Packages are a way of structuring Pyth ...

  4. 【Spring和SpringMVC】自动扫描注解类的问题

    尊重原创原文链接:http://blog.csdn.net/u014277445/article/details/52282697 Spring MVC项目中通常会有二个配置文件,spring-ser ...

  5. xfce-OpenVAS

    OpenVAS开源风险评估系统部署方案   OpenVAS,即开放式漏洞评估系统,是一个用于评估目标漏洞的杰出框架.功能十分强大,最重要的是,它是“开源”的——就是免费的意思啦- 它与著名的Nessu ...

  6. Matplotlib基本图形之条形图2

    Matplotlib基本图形之条形图2 1.绘制多条条形图 示例代码: import time import numpy as np import matplotlib.pyplot as plt b ...

  7. Laya Timer原理 & 源码解析

    Laya Timer原理 & 源码解析 @author ixenos 2019-03-18 16:26:38 一.原理 1.将所有Handler注册到池中 1.普通Handler在handle ...

  8. poj2104&&poj2761 (主席树&&划分树)主席树静态区间第k大模板

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 43315   Accepted: 14296 Ca ...

  9. 【Luogu】P1013进制位(搜索)

    题目链接在这里 这题和虫食算比较类似.做完这道题可以去做虫食算.都是搜索一类的题. 这样 我们分析题目可以发现进制只可能是字母的个数,也就是n-1.为什么? 因为题目要求完整的加法表才算数.如果进制低 ...

  10. [洛谷P2580]于是他错误的点名开始了(Trie树)

    传送门 洛谷P2580的一个水题,用啥都能过,不过为了练习一下刚刚学会的字典树,还是认真做一下吧. #include <cstdio> #include <cstring> u ...