当前位置: 首页 > news >正文

【时时三省】(C语言基础)字符数组应用举例

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

例题

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

解题思路:

问题的关键是怎样确定“出现一个新单词了”。可以采取这样的方法:从第1个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量num的值加1(用变量num统计单词数),最后得到的num的值就是单词总数。

判断是否出现新单词,可以由是否有空格出现来决定(连续的若十个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时使num(单词数)累加1。如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1。用变量word作为判别当前是否开始了一个新单词的标志,若word = 0表示未出现新单词,如出了新单词,就把word置成1。

前面一个字符是否为空格可以从word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格。

以输入" I am a boy .”为例,说明在对每个字符作检查时的有关参数状态,见下图所示。

编写程序:

运行结果:

程序分析:

循环的条件表达式为“( c = string [ i ] ) ! = '\0 '”,先执行括号内的赋值表达式“c = string [i]”,将字符数组string [ i ](是一个字符)赋给字符变量c。此时赋值表达式的值就是该字符。然后再判定它是否为结束符(' \0 ' )。如果该条件表达式为真(字符不是' \0 ' ),则继续执行循环体,检查此字符是否空格字符,如果是,表示新单词没有开始,word置0。如果不是空格字符而且word原值为0,表示新单词开始了,word置1,num加1。请分析当下一个字符仍是非空格字符的情况。

相关文章:

  • 深度学习框架---TensorFlow概览
  • C#中Action的用法
  • mac docker弹窗提示Docker 启动没有响应
  • 【docker】--数据卷挂载
  • Redis学习打卡-Day2-缓存更新策略、主动更新策略、缓存穿透、缓存雪崩、缓存击穿
  • 数据科学和机器学习的“看家兵器”——pandas模块 之五
  • 用户安全架构设计
  • 【unity游戏开发——编辑器扩展】使用Selection类获取到选择的对象,并对选中对象进行一些处理
  • 【微信小程序】webp资源上传失败
  • 『已解决』Python virtualenv_ error_ unrecognized arguments_--wheel-bundle
  • Codeforces Round 1023 (Div.2)
  • JAVA学习-练习试用Java实现“语音识别的基础 :如使用MFCC特征提取和简单的分类器”
  • 【AI论文】对抗性后期训练快速文本到音频生成
  • stm32使用freertos时延时时间间隔不对,可能是晶振频率没设置
  • 【Redis】压缩列表
  • Oracle统计信息收集时的锁持有阶段
  • UDP 多点通信
  • 高频交直流电流测量技术:射频PA与MEMS测试的简单解决方案
  • Buildroot 移植MiniGUI
  • Python高级进阶:Vim与Vi使用指南
  • 杨文庄当选中国人口学会会长,曾任国家卫健委人口家庭司司长
  • 佩斯科夫:俄方代表团15日将在伊斯坦布尔等候乌克兰代表团
  • 中保协发布《保险机构适老服务规范》,全面规范保险机构面向老年人提供服务的统一标准
  • 极限拉扯上任巴西,安切洛蒂开启夏窗主帅大挪移?
  • 事关心脏健康安全,经导管植入式人工心脏瓣膜国家标准发布
  • 比特币挖矿公司GRYP股价涨超171%:将与特朗普儿子创设的公司合并