C语言程序:自定义单词长度直方图
需积分: 30 54 浏览量
更新于2024-09-08
1
收藏 508B TXT 举报
在这个C语言编程练习中,你正在尝试编写一个简单的程序,用于统计输入字符串中单词的长度分布,并以直方图的形式展示。题目要求是根据给定的字符逐个判断是否为单词边界(空格、制表符或换行符),并统计每个单词长度出现的次数。以下是对这段代码的详细解释:
1. **包括头文件**:
`#include<stdio.h>`:引入了stdio库,这是标准输入输出库,提供了处理输入和输出的标准函数,如`getchar()` 和 `printf()`。
2. **宏定义**:
`#define MAXWORD 11`:这是一个预处理器指令,定义了一个名为MAXWORD的常量,其值为11。这个值可能表示程序可以处理的最大单词长度,但实际中可能需要根据需求调整。
3. **主函数**:
`main()`:程序的入口点,接下来的所有代码都在这里执行。
4. **变量声明**:
- `int n, i, j, k, c;`:声明了整型变量n用于计数单词数量,i、j和k用于遍历数组,c用于接收输入字符。
- `int wordlength[MAXWORD];`:定义了一个大小为MAXWORD的数组,用于存储每个单词长度的计数。
5. **输入处理循环**:
`while((c=getchar())!=EOF)`:通过`getchar()`函数获取输入流中的字符,当遇到文件结束符(EOF)时跳出循环。在循环内部,有以下判断:
- 如果`c`是空格、制表符或换行符,说明当前字符不是单词的一部分,因此增加`wordlength[n]`的值并将`n`重置为0,表示下一个单词开始。
- 否则,`c`被视为单词的一部分,`n`加1。
6. **直方图输出**:
- 循环遍历`wordlength`数组,对于每个单词长度`j`,打印出对应的频率(`wordlength[j]`)和星号(*),形成一个宽度固定的列。`%12.0d`是格式化字符串,其中12代表宽度,0表示左对齐,`.`表示整数格式,不保留小数。
7. **暂停程序**:
`system("pause")`:这是一个Windows系统调用,使程序在输出结束后暂停,等待用户按下任意键再继续执行。非Windows平台可能需要其他方法实现相同的功能。
8. **返回值**:
`return 0;`:表示程序正常结束,返回0给操作系统。
总体而言,这个程序的主要目的是演示如何使用C语言统计输入字符串中单词的长度分布,通过数组来存储每个长度的词频,然后以直方图形式显示。虽然功能上比参考答案简单,但对于初学者来说,这是一个很好的实践,有助于理解如何处理输入流、数据结构以及基本的控制结构。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2017-10-10 上传
2011-11-08 上传
2014-04-10 上传
2022-05-22 上传
点击了解资源详情
內閣大學士鰲拜
- 粉丝: 0
- 资源: 1
最新资源
- Leet_Code
- MyNAS-UI
- js代码-罗马数字测试
- 数据课程设计排班系统.rar
- Leaflet-based-Javascript-Mapper-App:传单地图-Mapper App
- LKC-Tools:收割者剧本
- collection-mobile-page:我做过的h5
- My-Project:美好的经典
- Miaoo朋友圈程序全开源版源码
- 最新微喜帖&微信请帖请柬网源码 手机微喜帖+微信网页版请帖+ASP_ACCESS版.zip
- 大三Java项目实践学生成绩管理系统 .zip
- mysql代码-学习sql笔记
- anavi-play-phat:简单的开源硬件键盘,可在Raspberry Pi上玩游戏
- R软件代码转换为matlab-piano-emulator:一个简单的GUI钢琴模拟器,带有Matlab
- kpexec:kpexec是一个kubernetes cli,它以高特权在容器中运行命令
- phaser-ads:一个Phaser插件,用于在phaser.io游戏中提供良好的广告集成