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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© YKS 中级黑马   /  2014-7-11 00:30  /  1410 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:在已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。

已查过好多资料了,但是结果都是大同小异,始终没有完全解决这个问题

3 个回复

正序浏览
  1. #include<stdio.h>
  2. #include"stdlib.h"

  3. int main(void)
  4. {
  5.   int i=0,n=0,m=0,l=0;
  6.   char *strp,str[500],strm[50]={'\0'};
  7.   strp=str;
  8.   printf("Enter a work and press return: ");
  9.   gets_s(str);

  10.   for(;str[i]!='\0';i++)
  11. {
  12.   if(((str[i]==' ')&&(m<=l))||(str[i+1]=='\0')&&(m<=l))
  13. {
  14.     m=l;
  15.     n=i;
  16.     l=0;
  17.   }
  18.   else l++;
  19.   }
  20.   for(i=0;i<m;i++) strm[i]=str[n+i-m];
  21.   strm[m]='\0';
  22.   printf("%s\n%d",strm,m);
  23.   system("pause");
  24.   return 0;
  25. }
复制代码
回复 使用道具 举报
★Joean_Zhou 发表于 2014-7-11 09:58
/*
在已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
*/

谢谢啊 能不能将最后一个单词也调出来呢?
回复 使用道具 举报
/*
在已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
*/
#include<stdio.h>
int main()
{
    //定义一个已知的字符串
    char a[] = "we need you and forever love you";
   
    //定义一个指针指向a的首元素
    char *p = a;
   
    //定义一个指针来存放最长单词的首字母地址
    char *save;
   
    //定义单词的长度,与最长单词的长度
    int length = 0, lengthMax = 0;
   
    //循环遍历数组
    for(int i = 0; a[i] != '\0'; i++)
    {
        //如果不为空格就使p指向的地址+1
        if(*p != ' ')
        {
            p++;
            
            length++;
        }
        
        //如果为空格
        else if(*p == ' ')
        {
            p++;
            //找出最长单词
            if(length > lengthMax)
            {
                lengthMax = length;
               
                save = p - length - 1;
            }
            
            length = 0;
        }
    }
    //输出最长单词
    printf("最长单词为: ");
   
    //从保存的最长单词输出
    for(int i = 0; i < lengthMax; i++)
    {
        printf("%c",*(save + i));
    }
   
   
    return  0;
}

//注:这段程序只能找出除了最后一个单词以外的最长单词,如果最长的单词最后一个程序就有点问题。。。。如果调试出来可以@我哦。。。谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马