c语言求字符串中最长单词并输出

19950 2013-12-23 07:24:47
...全文
523 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2013-12-24
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。
回复
yjz_uestc 2013-12-23

#include <stdio.h>

void longest(char* str)
{
	int i = 0;
	int j = 0;
	int len = 0;
	int d = 0;
	int length = strlen(str);

	for (i = 0; i < length; i++)
	{
		j = 0;
		while ((str[i + j] != ' ') &&  (i + j <= length - 1))
		{
			j++;
		}

		if(len < j)
		{
			len = j;
			d = i;
		}

		if( i + j > length - 1)
		{
			break;
		}
	}
	for (i = d; i < d + len; i++ )
	{
			printf("%c", str[i]);
	}
	printf("\n");
	
}

int main()
{

	char test[80];
	gets(test);
	longest(test);
	system("pause");
}
按你的思路,是这样的吧
回复
pokerlee 2013-12-23
longest()里循环的k值有什么用~~没看懂~~
回复
yjz_uestc 2013-12-23
我刚才试了一下你的代码,漏洞百出啊
回复
zj_linux 2013-12-23
#include <stdio.h>
#include <stdlib.h>


void longest(char *a)
{
    int i=0,pos = 0,len=0,len_max=0;
    
    for(i=0;i<strlen(a);i++)
    {
        if(a[i] != ' ')
            len++;
        else
        {
            if(len > len_max)
            {
                len_max = len;
                pos = i-len;
            }
            len=0;
        }
    }
	
    for(i=pos;i<pos+len_max;i++)
	printf("%c",a[i]);
    printf("\n");
}

void main()
{
    char *haha = "wo cao ni tamade da sao bi";
    longest(haha);
}
回复
19950 2013-12-23
while循环中加个限制条件 if (i + j > strlen(s) - 1) break; 在做修改if的括号后,还是得不到正确的单词
回复
zj_linux 2013-12-23
while(a[i]!=' ') j++; 这不是一个死循环吗?
回复
19950 2013-12-23
为什么总是出现烫字
回复
19950 2013-12-23
也不是!!!
回复
yjz_uestc 2013-12-23
额,strlen(a)。
回复
19950 2013-12-23
不对呀!!!
回复
yjz_uestc 2013-12-23
while循环中加个限制条件 if (i + j > strlen(s) - 1) break; 试试 我觉得根本用不了这么多变量
回复
19950 2013-12-23
就是输不出来单词,怎么解呀!!!
回复
yjz_uestc 2013-12-23
是不是死循环?最后一个单词的时候怎么终止循环?
回复
19950 2013-12-23
c语言字符串输出最长的单词为什么输不出来(单词之间以空格表示)
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.4w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-12-23 07:24
社区公告
暂无公告