首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-25 
我想了很久确没有什么思路!题目:编写一个程序实现如下功能:找最长的单词。设输入的英文短文不超过一行(假设

我想了很久确没有什么思路!
题目:编写一个程序实现如下功能:找最长的单词。设输入的英文短文不超过一行(假设正文最后有“.”结束,以空格分隔,不出现其他符号),编程将所有单词输出,并求其中最长单词的长度,并将该单词输出。

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

[解决办法]
下面我用伪代码写一个思路

C/C++ code
char 短文[1000];//定义一个char数组把短文读入到“短文”数组里char *单词位置[100];//指针数组,专门保存单词的起始指针位置int 单词长度[100];//这个数组专门保存单词的长度int 单词数量=0;char *p=短文;//把短文开头处的指针赋给pwhile(*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 0x1000int 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;} 

热点排行