A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 人生充满期待 中级黑马   /  2015-4-26 12:36  /  598 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)

1 个回复

倒序浏览
  1. #include <stdio.h>
  2.         #include <string.h>

  3.         int main()
  4.         {
  5.                 //定义一个已知的字符串
  6.                 char s[128] = "asdf dd chen chenfeichenfei chchchchch";
  7.                 //定义两个指针 p1指向整条字符串向右移动  p2指向最长的串
  8.                 char *p1, *p2;
  9.                 //max为最大长度,初始化为0,len是查找的字符串长度,初始为0
  10.                 int max=0, len=0;
  11.                 p1=s;
  12.                 for (int i=0; i<=strlen(s); i++)
  13.                 {
  14.                         // 如果当前字符为空格或结束,则比较当前单词长度是否大于最大值,再将长度复位。
  15.                         if ((s[i]==' ') || (s[i]=='\0'))   
  16.                         {
  17.                                 //如果在后续的查询中长度大于max,p2指向p1查询时指定的这一段字符串
  18.                                 if (len>max)
  19.                                 {
  20.                                         max=len;
  21.                                         p2=p1;
  22.                                 }
  23.                                 len=0;
  24.                         }
  25.                         else        // 如果当前字符非空,如果当前长度为0,则表示新单词。
  26.                         {
  27.                                 if (len==0)
  28.                                 p1=&s[i];
  29.                                 ++len;
  30.                         }
  31.                 }
  32.                 //最长的字符串是指针p2所指的
  33.                 printf("最长的字符串是:");
  34.                 while (*p2 && *p2!=' ')
  35.                         //循环打印p2所指
  36.                         printf("%c", *p2++);
  37.                 printf("\n");
  38.                 return 0;
  39.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马