解题思路:
输入完字符串后,为每个字符编码,不是空格的开始为1,直到再次碰到空格记为0.

那么,编码最长的便是最长的单词,而该单词开头字母所在的编码为1,其数组中的下标即为:最长编码的下标-长度+1.

然后从该单词第一个字符打印到最后一个即可。

注意事项:
1. 输入字符串中有空格,需要使用gets()函数来读取输入。

2. 末尾有可能也有空格,需要考虑完全。


参考代码:

//1536: 最长单词 

#include <stdio.h>
#include <string.h>
int main()
{
	char str[10000];
	int i, j = 0, k = 0, max, len[100000] = {0};
	
	gets(str);
	
	for(i=0; i<strlen(str); i++)
	{
		if(str[i] != ' ')
		{
			k++;
			len[j] = k;
			j++;
		}
		else
		{
			k = 0;
			j++;
		}
	}
	

	
//	遍历长度表,找到最长的单词的坐标
	j = 0;
	for(i=0; i<strlen(str); i++)
	{
//		printf("%d",len[i]);
		if(len[i] > j)
		{
			j = len[i];
		}
	}
	
	for(i=0; i<strlen(str); i++)
	{
		
		if(len[i] == j)
		{
			max = i;
			break;
		}
			
	}	
	
//	打印最长的单词
	for( i=max-j+1; i<=max; i++ )
	{
		printf("%c", str[i]);
	} 
	
	

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区