楼主看看我当年的思路- /*
- 5、 在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)
- */
- #include<stdio.h>
- int main()
- {
- //定义并初始化整形len,maxlen
- int len = 0, maxlen = 0;
- //以及要用到的指针和字符串数组s【】,单词的s1【】
- char *p,*p1,str[1024],s[1024],s1[64];
- //输入字符串提示用户输入
- printf("请输入一句只含字母和空格的英文");
- //获取字符串
- gets(str);
-
- // 给字符串最后加个空格
- for (int i = 0; i <= strlen(str); i++)
- {
- s[i] = str[i];
- s[strlen(str)] = ' ';
- }
-
- //利用指针遍历字符串
- for(p1 = s; *p1 != '\0'; p1++)
- {
- //没遇到空格,单词长度len就增1
- if(*p1 != ' ' && *p1 != '\0')
- len++;
- //遇到空格时
- else
- {
- //取最长单词的数为maxlen,后面遇到len比maxlen大,就互换
- if(len > maxlen)
- {
- maxlen = len;
- //这是为了找出并标记最长单词在内存初位置方便后面遍历输出
- p = p1 - len;
- //计算下一个单词长度前len重新赋值0
- len = 0;
- }
- }
- }
- //遍历出最长的单词s1
- for(int i = 0;i < maxlen;i++)
- {
- s1[i] = *(p + i);
- }
- //字符串最后是个‘0’;
- s1[maxlen] = '\0';
- //输出得到结果
- printf("句中最长单词是:%s\n",s1);
- return 0;
- }
复制代码 |