鱼C论坛

 找回密码
 立即注册
查看: 3342|回复: 4

如何用C++输出一句中最长的单词

[复制链接]
发表于 2018-4-3 23:36:58 | 显示全部楼层 |阅读模式
20鱼币
题目要求输入一句英文语句, 以句号结尾(.), 不包含任何其他符号(除空格之外)。 然后直接输出最长的一个单词。 以下是我的代码, 不知道问题到底出在哪里还求各位指教。
  1. #include <iostream>

  2. using namespace std;

  3. int main()
  4. {
  5.     char s[80];
  6.     cin.getline(s,80);
  7.     int maxlen = 0;
  8.     int tmplen = 0;
  9.     int last = 0;
  10.     for (int i = 0; s[i] != '\0'; i++)
  11.     {
  12.         if (s[i] == '.')
  13.         {
  14.             if (maxlen < tmplen)
  15.             {
  16.                 maxlen = tmplen;
  17.                 tmplen = 0;
  18.                 last = i;
  19.             }
  20.         break;
  21.         }
  22.         else if (s[i] == ' ')
  23.         {
  24.             if (maxlen < tmplen)
  25.             {
  26.                 maxlen = tmplen;
  27.                 tmplen = 0;
  28.                 last = i;
  29.             }
  30.         }
  31.         else
  32.             tmplen++;
  33.     }
  34.     for (int i = last - maxlen-1; i < last - 3; i++)
  35.         cout << s[i];
  36.     return 0;

  37. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-4 08:56:25 | 显示全部楼层
最后的for循环的判断条件修改为
i<last
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-4-6 16:21:11 | 显示全部楼层
BngThea 发表于 2018-4-4 08:56
最后的for循环的判断条件修改为
i

我试过了还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-6 16:59:16 | 显示全部楼层
这样是否是你想要的?

  1. #include <iostream>

  2. using namespace std;

  3. int main(void)
  4. {
  5.         char s[80];
  6.         cin.getline(s, 80);
  7.         int maxlen = 0;
  8.         int tmplen = 0;
  9.         int last = 0;
  10.         for(int i = 0; s[i] != '\0'; i++)
  11.         {
  12.                 if(s[i] == '.')
  13.                 {
  14.                         if(maxlen < tmplen)
  15.                         {
  16.                                 maxlen = tmplen;
  17.                                 tmplen = 0;
  18.                                 last = i;
  19.                         }
  20.                         break;
  21.                 }
  22.                 else if(s[i] == ' ')
  23.                 {
  24.                         if(maxlen < tmplen)
  25.                         {
  26.                                 maxlen = tmplen;
  27.                                 tmplen = 0;
  28.                                 last = i;
  29.                         }
  30.                 }
  31.                 else
  32.                         tmplen++;
  33.         }
  34.         //for(int i = last - maxlen - 1; i < last - 3; i++)
  35.         for(int i = last - maxlen; i < last; i++)
  36.                 cout << s[i];
  37.         return 0;

  38. }
复制代码

  1. 0 01 012 0123.
  2. 0123请按任意键继续. . .
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-7 22:58:53 | 显示全部楼层
将i<last-3改为i<last就行了啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 02:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表