专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

小弟我想了很久确没有什么思路

发布时间:2011-06-28 16:18:58 文章来源:www.iduyao.cn 采编人员:星星草
我想了很久确没有什么思路!
题目:编写一个程序实现如下功能:找最长的单词。设输入的英文短文不超过一行(假设正文最后有“.”结束,以空格分隔,不出现其他符号),编程将所有单词输出,并求其中最长单词的长度,并将该单词输出。

求高手写一个给我,不要写太深奥我怕看不懂;我不懂得应该怎么样输出单词!!!!!因为不知道长度;

------解决方案--------------------
下面我用伪代码写一个思路
C/C++ code

char 短文[1000];//定义一个char数组
把短文读入到“短文”数组里

char *单词位置[100];//指针数组,专门保存单词的起始指针位置
int 单词长度[100];//这个数组专门保存单词的长度

int 单词数量=0;

char *p=短文;//把短文开头处的指针赋给p
while(*p){//如果指针p所指向的位置不是短文结尾,就一直循环
    单词位置[单词数量]=p;//保存当前单词的起始位置
    while(*p==英文字母){
        p++;//如果当前指针所指向的字符是字母,那么指针p就一直后移
    }

    //出了循环后,指针p就已经跳过一个英文单词了
    单词长度[单词数量]=p-单词位置[单词数量];//计算单词头和尾的指针距离,得出单词的长度

    单词数量++;

    while(*p){//如果指针p所指向的位置不是短文结尾,就一直循环
        if(*p==英文字母)break;//如果发现有英文字母就跳出循环,准备记录下一个单词
        p++;
    }
}

//下面你就自己找出最长的单词吧

------解决方案--------------------
C/C++ code
#include <stdio.h>

#define MAX_LINE 0x1000

int main()
{
    char buf[MAX_LINE];
    char *p0 = buf, *p1 = buf, *longest = 0;
    int len = 0;

    gets(buf);

    for (;; ++p1)
    {
        char c = *p1;

        if (c == 0)
        {
            puts("error.");

            return 0;
        }

        if (c == ' ' || c == '.')
        {
            *p1 = 0;

            if (p1 - p0 > len)
            {
                len = p1 - p0;
                longest = p0;
            }

            if (c == '.')
            {
                break;
            }

            p1 = p0 = p1 + 1;
        }
    }

    if (longest)
    {
        puts(longest);
    }
    else
    {
        puts("not found.");
    }

    return 0;
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: