题目:编写一个程序实现如下功能:找最长的单词。设输入的英文短文不超过一行(假设正文最后有“.”结束,以空格分隔,不出现其他符号),编程将所有单词输出,并求其中最长单词的长度,并将该单词输出。
求高手写一个给我,不要写太深奥我怕看不懂;我不懂得应该怎么样输出单词!!!!!因为不知道长度;
------解决方案--------------------
下面我用伪代码写一个思路
- 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; }