C程序设计语言练习题1-13
练习1-13 编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。
代码如下:
#include <stdio.h> // 包含标准库的信息。 #define MAXWORD 10 // 输入单词的最大数。
#define IN 1 // 在单词内。
#define OUT 0 // 在单词外。 int main() // 定义名为main的函数,它不接受参数值。
{
printf("======打印输入单词长度的直方图======\n");
printf("======只统计前10个单词的长度======\n");
int ws_len[MAXWORD];
int c, count, i, state; // 单词,单词长度,单词个数,是否输入了多个\t或空格。
c = count = i = state = ; while ((c = getchar()) != EOF)
{
if (c == '\t' || c == '\n' || c == ' ') // 如果输入完了一个单词。
{
// 把单词长度放入长度数组。
if (state == IN)
{
state = OUT;
// 将长度放入长度数组。
ws_len[i] = count;
// 清空单词长度。
count = ;
// 数组下表+1;
++i;
}
}
else
{
// 如果输入的不是\t,\n和空格,记录单词长度。
++count;
state = IN;
}
}
int j; printf("单词长度水平直方图如下:\n");
for (i = ;i < ;i++)
{
printf("%2d |", i+);
for (j = ;j < ws_len[i];j++)
{
printf("*");
}
printf("\n");
} printf("\n单词长度垂直直方图如下:\n");
int maxvalue = ;
// 获得最长的单词长度。
for (i = ;i < ;i++)
{
if (ws_len[i] > maxvalue)
{
maxvalue = ws_len[i];
}
} // 从最上排向下打印。
for (i = maxvalue; i > ; --i)
{
for (j = ; j < ; j++)
if (ws_len[j] >= i) {
printf(" * ");
}
else
printf(" ");
printf("\n");
}
for (i = ; i < ; i++)
printf(" %d ", i); getchar(); // 防止控制台一闪而过,需要接受任意字符后在关闭控制台。
return ; // 向执行环境返回一个整形,0代表执行成功。
}
个人理解:
使用之前的计数器功能记录单词的长度,然后在运用循环功能对数组中记录的单词长度进行排版打印。
C程序设计语言练习题1-13的更多相关文章
- C程序设计语言练习题1-3
练习1-3 修改温度转换程序,使之能在转换表的顶部打印一个标题. 代码如下: #include <stdio.h> // 包含标准库的信息. int main() // 定义名为main的 ...
- C程序设计语言练习题1-10
练习1-10 编写一个将输入复制到输出的程序,并将起重的制表符替换为\t,把回退符替换成\b,把反斜杠替换为\\.这样可以将制表符和回退符以可见的方式显示出来. 代码如下: #include < ...
- C程序设计语言练习题1-23
练习1-23 编写一个删除C语言程序中所有的注释语句.要正确处理带引号的字符串与字符常量.在C语言中,注释不能嵌套. 代码如下: #include <stdio.h> // 包含标准库的信 ...
- C程序设计语言练习题1-16
练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多地打印文本. 代码如下: #include <stdio.h> // 包含标准库的信息 ...
- C程序设计语言练习题1-22
练习1-22 编写一个程序,把较长的输入行”折“成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后.要保证程序能够智能地处理输入行很长以及在制定的列前没有空格或制表符时的情况. ...
- C程序设计语言练习题1-21
练习1-21 编写程序entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变.假设制表符终止的位置与练习1-20的detab程序的情况相同.当使用一个制表符或者一个空格都可以打到 ...
- C程序设计语言练习题1-20
练习1-20 编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方.假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位.n应该是变量还是符号 ...
- C程序设计语言练习题1-19
练习1-19 编写函数reverse(s),将字符串s中的字符顺序颠倒过来.使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序.代码如下: #include <stdio.h> // ...
- C程序设计语言练习题1-18
练习1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行. 代码如下: #include <stdio.h> // 包含标准库的信息. #define MAXLI ...
- C程序设计语言练习题1-17
练习1-17 编写一个程序,打印长度大于80个字符的所有输入行. 代码如下: #include <stdio.h> // 包含标准库的信息. #define MAXROW 10 // 最大 ...
随机推荐
- POJ2503 Babelfish
题目链接. 分析: 应当用字典树,但stl的map做很简单. #include <iostream> #include <cstdio> #include <cstdli ...
- Fork 一个仓库并同步
Fork 一个示例仓库 Fork 是对一个仓库的克隆.克隆一个仓库允许你自由试验各种改变,而不影响原始的项目. 一般来说,forks 被用于去更改别人的项目(贡献代码给已经开源的项目)或者使用别人的项 ...
- OBJ-C
1.直接赋值 NSString *name = @"Starain"; 2.用已经存在的字符串进行初始化 NSString *name2 = [NSString stringWit ...
- FSharp.Data 程序集之 Http
FSharp.Data 程序集之 Http (** # F# Data: HTTP Utilities .NET 库提供了强大的 API,产生和发送 HTTP WEB 请求,有两个类型,一个简单,`W ...
- jQuery表单验证以及将表单序列化为json对象小练习
jquery表单验证(非实时验证),同时,将表单序列化为json对象提交表单. <!DOCTYPE html> <html lang="en"> <h ...
- maven + selenium + jenkins 教程收集
maven + selenium + jenkins 教程收集 Complete Guide for Selenium integration with jenkins Maven http://le ...
- 点击按钮弹出div,留用
<input type="button" onclick="document.getElementById('div').style.display=(docume ...
- Heritrix的安装与配置 (最新版 已测试通过)
本教程,结合本人亲身实践,不仅适合于最新版本Heritrix 1.14.4,更适合其他任何版本.Heritrix具体下载地址如下: http://sourceforge.net/projec ...
- C++读写文件并排序
比如一条记录是 1987 9 2 1988 8 26 代表公司员工生日 然后需要读入到系统 现在需要放入容器,并且排序 最后输出到新的文件中,按照年龄由大到小. #include "stda ...
- myeclipse快捷键收集整理
Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt ...