解题思路:
输入完字符串后,为每个字符编码,不是空格的开始为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.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论