练习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. js/jquery判断浏览器 & 停止加载

    JS获取浏览器信息 复制代码代码如下: 浏览器代码名称:navigator.appCodeName浏览器名称:navigator.appName浏览器版本号:navigator.appVersion对 ...

  2. 关于springmvc返回json格式数据

    1.引入maven依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifac ...

  3. Java-列出一个类实现的所有接口

    package com.tj; public class MyClass2 { public static void main(String[] args) { Class cls = java.la ...

  4. js 获取json对象的Key、value

    <script type="text/javascript"> getJson('age'); function getJson(key){ var jsonObj={ ...

  5. vmware的vmdk格式虚拟机转换为qcow2格式

      今天应其他部门的需求,把一个笔记本里的vmware的window2008的虚拟机转换为qcow2格式,在公司服务器上运行. 第一次做,用了许多时间 首先: 虚拟机的镜像分为多个vmdk文件,所以我 ...

  6. Appium切换webview时候报chromedriver版本问题

    前言 用appium切换webview的时候报chrome和chromedriver版本的问题:session not created exception: Chrome version must b ...

  7. 第四章 vim 可视模式

    第四章  vim 可视模式 vim的可视模式允许我们选中一块文本区域并进行操作 3种不同的可视模式  分为 操作字符文本      行文本 块文本 .命令用来重复执行可视模式中的命令   只有在操作面 ...

  8. Leetcode 365.水壶问题

    水壶问题 有两个容量分别为 x升和 y升的水壶以及无限多的水.请判断能否通过使用这两个水壶,从而可以得到恰好 z升的水? 如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水. 你允许: 装满 ...

  9. Codeforces Round #415 (Div. 2) 翻车啦

    A. Straight «A» time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  10. [luoguP3159] [CQOI2012]交换棋子(最小费用最大流)

    传送门 好难的网络流啊,建图真的超难. 如果不告诉我是网络流的话,我估计就会写dfs了. 使用费用流解决本题,设点 $p[i][j]$ 的参与交换的次数上限为 $v[i][j]$ ,以下为建图方式: ...