哪位高人会呀,帮帮忙~~
编写函数 void fun(char* str),实现将str所指的字符串中最长的单词输出(在字符串中,单词之间用若干个空格分隔)。要求在main函数中输入字符串,调用fun函数。(必须用指针实现)
程序代码:
#include <iostream> void main() { int word(char c); int longest(char str[]); int i; char str[80]; printf("输入一行字符串\n\n"); gets(str); printf("\n\n最长的单词为:\n\n"); for(i=longest(str);word(str[i]);i++) printf("%c",str[i]); printf("\n"); } int word(char c) { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return 1; else return 0; } int longest(char str[])【这个函数几乎完全看不懂 望逐句详细解释其逻辑】 { int i,flag=1,len=0,point,max_len=0,max_point; for(i=0;i<=strlen(str);i++)//解析每个字符 { if(word(str[i])) //是英文字母的话 { if(flag==1) //成立的话说明这个英文字母是单词的第一个 { point=i; //单词第一个找到后改变标志 flag=0; } else len++; //开始对这个单词长度进行累加 } else //非英文字母的话 { flag=1; //等待第一个英文字母的出现,所以flag=1(要是下一个是英文字母的话就能执行上面的if) if(len>max_len)//之前累加的单词长度是否比上一个单词更长(第一次的话max_len初始化为0,len必大于max_len) { max_len=len;//将单词长度保存下来 max_point=point;//将最长单词的第一个英文字母在字符串中的位置保存下来 } len=0; } } return (max_point); }