A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 庞佳星 中级黑马   /  2015-8-2 11:16  /  655 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)
#include<stdio.h>
#include<string.h>
int main()
{
        //定义i用于循环for,len字符串的总长度,count计算一个单词的长度,max保存最大字符串的长度。frist保存最大字符串第一个字母的位置
        int i = 0,len = 0,count = 0,max = 0,frist = 0;
        //定义一个一位数组用于保存输入的字符串
        char a[100] ;
        //实现输入一句话
        printf("请输入一句话,开头不空格\n");
        gets(a);
        //计算字符串的长度
        len=strlen(a);
        //遍历字符串
        for(i=0;i<=len;i++)
        {
                //当字符串中没有遇到' '和'\0'就计数1,如果遇到则,判断是否最长字符串。
                if(a[i]!=' '&&a[i]!='\0')
                {
                        count++;
                }
                else
                {
                        if(count>max)
                        {               
                                max=count;
                        }
                        else
                        {
                                max=max;
                        }
                    //重置count保证下次计数。
            count = 0;
                }
               
        }
        printf("max = %d",max);
       
        return 0;
}
问题是,我只能找出最长单词的长度,但是不知道如何定位最长单词的 第一个字母,所以打印不出来最长单词,求解答,谢谢

7 个回复

倒序浏览
最长单词的之后的空格的坐标减去最长长度就是最长单词第一个字母的坐标·
回复 使用道具 举报
刘彦麟 发表于 2015-8-2 11:22
最长单词的之后的空格的坐标减去最长长度就是最长单词第一个字母的坐标· ...

怎么找啊,已经找不到了。
回复 使用道具 举报
我顶顶顶
回复 使用道具 举报
多定义几个变量,分别存放结果下标的开头结尾,和你当前单词的下标的开头和结尾,一旦你的count>max,更换结果的下标值就可以了。
回复 使用道具 举报
Eil.tea 发表于 2015-8-2 15:41
多定义几个变量,分别存放结果下标的开头结尾,和你当前单词的下标的开头和结尾,一旦你的count>max,更换 ...

恩,谢谢啊!我再尝试下。
回复 使用道具 举报
no我的天  啊
回复 使用道具 举报
已解决,谢谢楼上各位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马