统计一行文本的单词个数

统计一行文本的单词个数

习题6-8 统计一行文本的单词个数 (15 分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。

输入格式:
输入给出一行字符。

输出格式:
在一行中输出单词个数。

输入样例:
Let’s go to room 209.
输出样例:
5

分析与代码

这个题需要考虑多种情况

  1. 有标点,词间空1格
  2. 开头、中间有多个空格,长、短字符串
  3. 空格结尾
  4. 1个最短单词,前有空格
  5. 全空格

首先来看一个部分正确的代码。
我考虑找空格,如果说遇到空格,意味着现在程序处于读空格这个过程中,如果说这个过程是新发生的,那么处于空格过程的次数加1。
如果说遇到单词,而且之前处于读空格状态,那么把读空格的状态修改掉,以表示现在处于读单词状态。
由于两个单词中间加了一个空格,所以最后的单词数就是空格数加一。
这个解法对于首尾没有空格而言是可行的,但是首尾出现空格的情况,最终结果就多加了1。

/*此代码不能满足所有样例*/
#include<stdio.h>
int main(){char a;int sum=0;int flag=0;//0表示没有遇到空格 while(scanf("%c",&a)&&a!='\n'){if(a==' '&&flag==0){sum++;flag=1; }else if(a!=' '&&flag==1){flag=0;}}printf("%d",sum+1);
}

下面是一个完全正确的代码,思路是直接找单词数。
如果说当前不遇到空格,那么意味着现在程序处于读单词的过程,如果说这个过程是头一次发生,那么处于读单词过程的次数加1。
如果说遇到空格,意味着现在程序处于读空格这个过程中,如果说上一个过程是读单词,那么flag=0表示目前不处于读单词状态。

#include<stdio.h>int main(void)
{int flag = 0;  //flag=0表示目前没有接触到单词字符 char ch;int word_count = 0;while(scanf("%c",&ch)&&ch!='\n')   {if(ch!=' '&&flag==0)    {word_count++;  flag = 1;//接触到单词字符后,停止记录单词数 }if(ch==' '&&flag==1){flag = 0;}}printf("%d", word_count);return 0;
}

思路不同,导致flag的含义不同,可见思路决定了最终的结果。

下面这个是更简单的一种思路,所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔。

就两种情况,单词后面跟了一个空格,或者单词后面没有字符了。
根据这两种情况判断单词个数。

#include <stdio.h>int main() {char a[1000];//初始化数组gets(a);//赋值int n,num=0,i;for (i=0;a[i] != '\0';i++);//获取数组个数n=i;for (i=0;i<n;i++){if (a[i] != ' ' && a[i+1] == ' ') num++;if (a[i] != ' ' && a[i+1] == '\0') num++;} printf("%d\n",num);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

戴尔计算机windows未能启动,戴尔电脑windows7无法启动安装过程怎么办

windows7无法启动安装过程怎么办&#xff1f;暗黄win7系统的时候经常遇见这种问题可能是硬件问题导致的&#xff0c;还有可能是系统设置问题导致的&#xff0c;我们具体原因具体分析&#xff0c;一起来看看解决方法&#xff0c;动手实践起来吧&#xff01;1、方法一&#xff1a…

c语言 数据结构 list、queue、tree抽象数据类型的定义与实现 详尽代码和注释

本文使用c语言定义并实现list、queue、tree抽象数据类型&#xff0c;代码有详尽注释&#xff0c;可以通过代码熟悉原理并运用数据结构。 0.ADT基础知识 类型包括两类信息&#xff0c;属性和操作。在编程时&#xff0c;根据编程问题匹配合适的数据类型。 定义一个新的数据类型…

局域网服务器没显示,无法登录服务器 局域网也不显示连接

什么情况啊 论坛上很多这种情况 客服快来远程帮我解决一下&#xff01;&#xff01;&#xff01;&#xff01;********************************************************************************[星际争霸重置版]客户端到服务器Ping测试&#xff1a;服务器&#xff0c;223.25…

css 回到首页按钮,js+css实现回到顶部按钮(back to top)

本文实例介绍了jscss实现回到顶部按钮的方法&#xff0c;分享给大家供大家参考&#xff0c;具体内容如下效果htmlcssp#back-to-top{position:fixed;bottom:100px;right:80px;}p#back-to-top a{text-align:center;text-decoration:none;color:#d1d1d1;display:block;width:30px;…

Java Set基础知识

Set集合中不包含重复对象。 HashSet&#xff1a; HashSet的底层用哈希散列表来存储对象。其中的散列码是由关键字的信息内容确定的。关键字到散列码的转换是自动执行的。 存储元素时底层要做的判断:1.调用元素的hashCode()方法,直接访问对应的数组元素,有没有这个哈希值,没有就…

c语言基础练习题 字符串输入scanf/gets 字符串赋值、比大小

PTA上C语言程序设计练习题&#xff0c;包含查找书籍、字符串排序。主要用到字符串输入scanf/gets 字符串赋值、比大小等知识。 1.查找书籍 习题9-4 查找书籍 (20 分) 给定n本书的名称和定价&#xff0c;本题要求编写程序&#xff0c;查找并输出其中定价最高和最低的书的名称和…

ajax搜索思路,jquery创建一个ajax关键词数据搜索实现思路

在web开发过程当中&#xff0c;我们经常需要在前台页面输入关键词进行数据的搜索&#xff0c;我们通常使用的搜索方式是将搜索结果用另一个页面显示&#xff0c;这样的方式对于搭建高性能网站来说不是最合适的&#xff0c;今天给大家分享一下如何使用 jquery&#xff0c;MySQL …

esxi 修改服务器配置失败,R720服务器安装 ESXI 5.5update1后出现XXX错误

R720服务器&#xff0c;安装ESXI5.5UPDATE1 (DELL 的版本)后&#xff0c;安装了几个WIN2003及CENTOS的虚拟机。启用了一台2003和一台CENTOS6.5没有安装vCenter Server从vSphere Client端连接到esxi5.5服务器&#xff0c;发现每次重新启动ESXI&#xff0c;启动事件里面有很多类似…

(哈希)两数之和(leetcode 1)

1.题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意…

丢失的数字

给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为有 3 个数字&#xff0c;所以所有的数字都在范围 [0,3…

ftp服务器收集文件,ftp服务器收集文件

ftp服务器收集文件 内容精选换一换为了对源端服务器进行迁移可行性评估以及为后续目的端服务器的选择和配置提供必要性数据&#xff0c;迁移Agent会收集源端服务器的相关信息并上报到主机迁移服务。收集的Windows操作系统的具体数据如表1所示。收集的Linux操作系统的具体数据如…

STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本

一、stm32跑马灯实验 a.GPIO general purpose input output 通用输入输出端口&#xff0c;可以做输入也可做输出&#xff0c;GPIO端口可通过程序配置成输入或输出。 STM32FXXXIGT6一共9组IO&#xff1a;PA~ PI&#xff0c;其中PA~ PH每组16个IO&#xff0c;PI只有PI0~PI11。…

STM32-时钟-时钟树-时钟初始化配置

1.STM32时钟 STM32有5个时钟源&#xff1a;HSI、HSE、LSI、LSE、PLL HSI是高速内部时钟&#xff0c;RC振荡器&#xff0c;频率为16MHz&#xff0c;精度不高。可以直接作为系统时钟或者用作PLL时钟输入。 HSE是高速外部时钟&#xff0c;可接石英/陶瓷谐振器&#xff0c;或者接…

pe系统 服务器维护,FirPE 维护系统

前言年更项目更新啦~~~&#xff0c;这次修复了一些BUG&#xff0c;此外还增加了亿点特性。首次使用WinRE注册表&#xff0c;使得WinPE速度更快了。系统简介FirPE 是一款系统预安装环境(Windows PE)&#xff0c;它具有简约、易操作等特点&#xff0c;使用起来十分人性化。以U盘作…

STM32-Systick滴答定时器-延时函数

1.STM32-Systick滴答定时器 Systick定时器&#xff0c;是一个简单的定时器&#xff0c;对于ST的CM3,CM4,CM7内核芯片&#xff0c;都有Systick定时器。 Systick定时器常用来做延时&#xff0c;或者实时系统的心跳时钟。这样可以节省MCU资源&#xff0c;不用浪费一个定时器。比如…

华为服务器更改从系统盘启动不了,华为服务器设置启动项

华为服务器设置启动项 内容精选换一换对于已安装Cloud-Init/Cloudbase-Init的云服务器&#xff0c;首次执行切换/故障切换操作&#xff0c;或者创建容灾演练后&#xff0c;系统第一次启动时会运行Cloud-Init/Cloudbase-Init&#xff0c;为云服务器重新注入初始化数据&#xff0…

STM32-NVIC中断优先级分组-中断优先级设置

STM32-中断优先级管理NVIC 1.NVIC中断优先级分组 NVIC的全称是Nested vectoredinterrupt controller&#xff0c;即嵌套向量中断控制器。STM32F中文参考手册中搜索向量表可以找到相应的中断说明。 CM4/CM7 内核支持256个中断&#xff0c;其中包含了16个内核中断和240个外部中…

hyper-v虚拟服务器内存满了,在Hyper-V Dynamic Memory里设置虚拟内存

Hyper-V R2 SP1版中加入了动态内存技术&#xff0c;关于内存分配的猜想也随之结束。当VMware可以自动进行虚拟内存分配的时候&#xff0c;Hyper-V通过动态内存让用户可以调整虚拟内存的设置。这种灵活性为主机内存分配方式提供了参考&#xff0c;有效提高了精确度和降低难度。通…

STM32-IO引脚复用-原理和使用

1.什么是端口复用&#xff1f; STM32有很多的内置外设(把一些功能ADC\看门狗…集中到芯片里面)&#xff0c;这些外设的外部引脚都是与GPIO复用的。也就是说&#xff0c;一个GPIO如果可以复用为内置外设的功能引脚&#xff0c;那么当这个GPIO作为内置外设使用的时候&#xff0c…

泰拉瑞亚服务器config修改,泰拉瑞亚配置怎么修改_泰拉瑞亚配置修改方法介绍...

泰拉瑞亚配置怎么修改呢&#xff0c;还有很多玩家还不知道的&#xff0c;下面小编为玩家们带来了泰拉瑞亚配置修改方法介绍&#xff0c;一起来看看吧。泰拉瑞亚配置修改方法介绍Config文件(1)Wiki链接http://terraria.gamepedia.com/Config.json_settings(2)关于Configconfig文…