///*
6、 在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)
*/
#include <stdio.h>
#include <string.h>
int main()
{
char str[100] = "jdidiwdbjbidip hdiuhiewhiewhfiew ihwuihfiuew";
// printf("请输入一个字符串:");
//scanf("%s", str);
int j = 0, max = 0, maxStart = 0, maxEnd = 0;
// 遍历所有的数组元素
for ( int i = 0 ; str[i] != '\0'; i++)
{
// 遍历所有的单词
for (j = i ;str[i] != ' ';i++)
{
// 如果是数组元素是‘\0’,那么表示数组已经遍历完毕,跳出循环
if (str[i] == '\0')
{
break;
}
}
// 纪录最长单词开始的元素的下标,结束元素的下标,以及相隔距离长度
if (max <= (i - j))
{
max = i - j;
maxStart = j;
maxEnd = i;
}
}
printf("最长的单词是:");
// 用循环打印字符的方式,打印出单词。
for (;maxStart < maxEnd; maxStart++)
{
printf("%c", str[maxStart] );
}
}
这段代码运行已经的字符串的的时候,能正确输出,如果是自己输入的字符串的时候(用// 已经注释),则会出现乱码,求大神相助啊
|
|