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 // 最大 ...
随机推荐
- 【Express】路由
var express = require('express'); var app = express(); app.set('port', process.env.PORT || 3000); ap ...
- URL图片预览(createObjectURL)
1.说明 1)createObjectURL 作用:创建url(creates a URL for the specified object); 语法:var url = URL.createObj ...
- HDOJ(HDU) 1994 利息计算(简单题目)
Problem Description 为自行解决学费,chx勤工俭学收入10000元以1年定期存入银行,年利率为3.7% .利率 按年计算,表示100元存1年的利息为3.7元.实际上有时提前有时推迟 ...
- Java学习日记 I/O
File类1.String[] list() 返回一个目录下文件和文件夹路径的字符串数组2.File[] listFiles() 以File类对象数组,返回目录下的所有文件和文件夹3.isDirect ...
- CloudFoundry云环境中应用的特殊设计
常规的应用,大多数可以不经过任何修改即可部署于CloudFoundry云平台之上,但是在一些特殊情况下,总是不可避免地会出现一些细小的问题,如果在应用设计之初,就考虑到针对云平台的一些特殊情况,遵守云 ...
- mysql查询最近一小时的数据
date_sub()函数: DATE_SUB(date,INTERVAL expr type) 实例: SELECT NOW(),DATE_SUB(NOW(),INTERVAL HOUR) as th ...
- Ubuntu 13.04 安装 GCC4.8.1
终于有了完整实现C++11的GCC 4.8.1. 给自己的系统升级吧. 下面的步骤可以安装GCC4.8.1, 内容来自:http://askubuntu.com/questions/312620/ho ...
- android 中如何限制 EditText 最大输入字符数
方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...
- 使用glob()查找文件(转)
大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到 glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来查找文件,请看下面的用法: ...
- Mybatis插入语句useGeneratedKeys="true"的用法
<!-- 插入新的问题件 --> <!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 --&g ...