练习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. LeetCode(99) Recover Binary Search Tree

    题目 Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without chang ...

  2. PHP 和 AJAX MySQL

    AJAX 可用来与数据库进行交互式通信. AJAX 数据库实例 在下面的 AJAX 实例中,我们将演示网页如何使用 AJAX 技术从 MySQL 数据库中读取信息. 在下拉列表中选择一个名字 (测试说 ...

  3. 【javascript面试题】之一

    1.求y和z的值是多少?<script type="text/javascript">var x = 1;var y = 0;var z = 0;function ad ...

  4. Debian 9 更新 sourrce.list(163源)

    Debian 9 更新 sourrce.list(163源) 需求说明: 更新apt-get源 kyeup@kyeup-nas:~$ lsb_release -a No LSB modules are ...

  5. Mac 文档阅读软件Dash软件破解版

    1.Dash 破解版链接 Mac 上阅读开发文档的软件:支持java.spring.springBoot等.百度网盘下载链接和密码如下. 链接:https://pan.baidu.com/s/1RWM ...

  6. Brownie Slicing(二分枚举答案)

    描述 Bessie has baked a rectangular brownie that can be thought of as an RxC grid (1 <= R <= 500 ...

  7. POJ-1696 Space Ant 凸包版花式水过!

                                                         Space Ant 明天早上最后一科毛概了,竟然毫无复习之意,沉迷刷题无法自拔~~ 题意:说实 ...

  8. HDU——3786找出直系亲属(DFS+回溯)

    找出直系亲属 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  9. P3799 妖梦拼木棒 (组合数学)

    题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数 ...

  10. 【leetcode】lower_bound

    int binary_search(const vector<int>& stones,int val){ int sz=stones.size(); ,r=sz-; while( ...