【题目链接】

ybt 1149:最长单词2
OpenJudge NOI 1.13 16:最长单词2

【题目考点】

1. 字符串遍历

2. 处理多个字符串

3. while(cin >> …)读入字符串

适合于读入多个由空格分开的字符串

string s;
while(cin >> s)
{//...
}

调试时,输入Ctrl+z,按回车,即可结束输入,观察输出。

【题解代码】

解法1:遍历字符串

用一个字符数组保存当前查看的单词、最长单词,用变量保存最长单词长度。

#include<bits/stdc++.h>
using namespace std;
int main()
{char s[505], word[505], mxWord[505];//s:完整字符串 word:当前查看的单词 mxWord:最长单词 cin.get(s, 505);int ct = 0, ctMax = 0, wi = 0, len;//ct:单词中字母计数 ctMax:最大单词长度 word_sp:最长单词开始的位置 len = strlen(s);for(int i = 0; i < len; ++i){if(s[i] == ' ' || s[i] == '.'){word[wi] = '\0';//单词末尾加'\0',构成字符串 wi = 0;//wi还原,等待下次向word字符数组赋值 if(ct > ctMax)//如果该单词长度比已知最长的单词长度更长 {ctMax = ct;//ctMax记录最长单词长度 strcpy(mxWord, word);//mxWord保存最长的单词 }ct = 0;}else{ct++;//单词长度计数 word[wi++] = s[i];//将当前查看的字符s[i]填入word字符串中 }}cout<<mxWord;return 0;
}

解法2:将该句子分解为多个单词,然后找各单词中的最长单词。

分解出的多个单词可以保存在二维字符数组或string类数组中。该解法用string类数组。

#include<bits/stdc++.h>
using namespace std;
int main()
{string s, word[505];getline(cin, s);//输入带空格的字符串int ws, wi = 0, mxi = 0;//ws:单词首字母下标 , wi:word数组下标, mxi:最长单词下标 for(int i = 0; i < s.length(); ++i)//遍历字符串{if(s[i] == ' ' || s[i] == '.')//当i位置是空格{word[wi++] = s.substr(ws, i - ws);//从ws位置开始,截取i-ws长度,即为一个单词ws = i + 1;//截取后,下个单词首字母位置为i + 1}} for(int i = 0; i < wi; ++i)//求最长单词{if(word[i].length() > word[mxi].length())mxi = i;}cout<<word[mxi];return 0;
}

解法3:使用while(cin >>…)

适合于读入多个用空格分开的字符串

#include<bits/stdc++.h>
using namespace std;
int main()
{string s, s_mx;while(cin >> s){if(s[s.length()-1] == '.')//如果末尾是句号'.' s.pop_back();//删去末尾字符if(s.length() > s_mx.length())s_mx = s;}cout << s_mx;return 0;
}

信息学奥赛一本通 1149:最长单词2 | OpenJudge NOI 1.13 16相关推荐

  1. 信息学奥赛一本通 1141:删除单词后缀 | OpenJudge NOI 1.7 20

    [题目链接] ybt 1141:删除单词后缀 OpenJudge NOI 1.7 20:删除单词后缀 [题目考点] 1. 字符串处理 2. string类成员函数 取子串:substr(起始位置, 子 ...

  2. 信息学奥赛一本通 1413:确定进制 | OpenJudge NOI 1.13 34:确定进制 | OpenJudge NOI 2.1 1973:确定进制

    [题目链接] ybt 1413:确定进制 OpenJudge NOI 1.13 34:确定进制 OpenJudge NOI 2.1 1973:确定进制 注意:两OJ平台上题目条件不同,ybt中:2≤b ...

  3. 信息学奥赛一本通 1033:计算线段长度 | OpenJudge NOI 1.3 16

    [题目链接] ybt 1033:计算线段长度 OpenJudge NOI 1.3 16:计算线段长度 [题目考点] 1. < cmath >数学库函数调用 开方函数:double sqrt ...

  4. 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命

    [题目链接] ybt 1229:电池的寿命 OpenJudge NOI 4.6 2469:电池的寿命 [题目考点] 1. 贪心 [解题思路] 1. 贪心选择性质的证明 电池分配主要有两步, 第一步:将 ...

  5. 信息学奥赛一本通 1227:Ride to Office | OpenJudge NOI 4.6 2404:Ride to Office

    [题目链接] ybt 1227:Ride to Office OpenJudge NOI 4.6 2404:Ride to Office 原题是英文题,虽说两题题意相同,但一本通网站没有对该问题进行直 ...

  6. 信息学奥赛一本通 1132:石头剪子布 | OpenJudge NOI 1.7 04

    [题目链接] ybt 1132:石头剪子布 OpenJudge NOI 1.7 04:石头剪子布 [题目考点] 1. 字符串处理 2. 判断字符串相同 s1,s2是字符数组,判断二者是否相同:strc ...

  7. 信息学奥赛一本通 1404:我家的门牌号 | OpenJudge NOI 2.1 7649:我家的门牌号 | 小学奥数 7649

    [题目链接] ybt 1404:我家的门牌号 OpenJudge NOI 2.1 7649:我家的门牌号 OpenJudge NOI 小学奥数 7649:我家的门牌号 注意:一本通OJ和OpenJud ...

  8. 信息学奥赛一本通 1181:整数奇偶排序 | OpenJudge NOI 1.10 06:整数奇偶排序

    [题目链接] ybt 1181:整数奇偶排序 OpenJudge NOI 1.10 06:整数奇偶排序 [题目考点] 1. 排序 [君义精讲]排序算法 [解题思路] 解法1:将奇数和偶数分开,分别排序 ...

  9. 信息学奥赛一本通 1223:An Easy Problem | OpenJudge NOI 4.6 1455:An Easy Problem

    [题目链接] ybt 1223:An Easy Problem OpenJudge NOI 4.6 1455:An Easy Problem [题目考点] 1. 数制 2. 枚举 [解题思路] 解法1 ...

最新文章

  1. JZOJ #4722 跳楼机 (最短路模型的完美转化)
  2. 环形熔断器设计与gobreaker源码分析
  3. myeclipse + tomcat 项目自动部署
  4. html 文件上传框 input标签
  5. iPhone 13 Pro原型机曝光:全新玫瑰金配色,女性首选
  6. NumPy 统计方法
  7. 蹲下突然站起来总是会头晕,是什么原因?
  8. keras可视化模型
  9. 温故知新----css基础
  10. 手机连接蓝牙扫码枪_扫码枪蓝牙连接电脑 蓝牙扫码枪
  11. 易语言禁用计算机指令大全,易语言电脑屏幕锁定工具源码
  12. 2022-2028全球汽车后置摄像头模组行业调研及趋势分析报告
  13. 命令行查看基金实时涨跌(附完整代码)
  14. hello heaven
  15. 自定义拍照时 拍照界面_拍照时图片比例怎么选?比构图还要提前一步的摄影攻略要做好...
  16. 项管行知04--项目章程
  17. unity tilemap
  18. ♠♦♣TypeScript
  19. 搜索引擎优化(SEO)之 前端性能优化技巧
  20. 跨域解决方式——JSONP,CORS

热门文章

  1. 被新基建点名的大数据,有哪些书最值得读?
  2. 企业文化、业务架构与中台:移植阿里的中台战略能成功吗?
  3. 2021年度最佳开源软件榜单出炉!
  4. 深入理解RocketMQ是如何做到高性能的?
  5. 装了这几个插件后,我不得不给 IDEA 上个防沉迷
  6. Github中国区Star超过1W的大佬和他们的公众号,太强了!
  7. IntelliJ IDEA 从入门到上瘾教程,2019图文版!
  8. 律师坚称技术无罪:“钉钉打卡神器”开发者二审被改判四年
  9. 吴孟达肝癌逝世:肝被透支的全过程曝光!
  10. 微信开发实现一键拨号出现屏蔽问题的解决方案