黑马程序员技术交流社区
标题:
在一个已知的字符串中查找最长单词,假定字符串中只...
[打印本页]
作者:
baihe0813
时间:
2015-1-16 23:26
标题:
在一个已知的字符串中查找最长单词,假定字符串中只...
//声明一个字符串
char* str = "Keep on going never give up";
//声明一个数组,用来存放字符串的子字符串
char* subStr[20];
//声明一个数组,用来存放每个子字符串的长度
int length[20];
//说明子字符串的个数
int subCount = 0;
int i = 0;
//j用来表明下一个子字符串的起始位置
int j = i;
//用来指向动态分配的空间
char* temp;
//遍历大字符串的所有元素。
while (str[i] != '\0')
{
if(str[i] == ' ')
{
//如果某个元素为空格的话,则获取相应的子字符串
temp = (char*)malloc((i - j + 1) * sizeof(char));
int count = 0;
for(int k = j; k<i; k++)
{
temp[count] = str[k];
//将子字符创放到子字符串数组中
subStr[subCount] = temp;
count++;
}
//字符串结束标识
temp[count] = '\0';
//将长度放到长度数组中
length[subCount] = count;
subCount++;
//让j指向下一个子字符串的起始下标
j = i + 1;
}
i++;
}
//这是对结尾处的最后一个子串进行操作,步骤同前面一样
temp = (char*)malloc((i - j + 1) * sizeof(char));
int count = 0;
for(int k = j; k<i; k++)
{
temp[count] = str[k];
subStr[subCount] = temp;
count++;
}
temp[count] = '\0';
length[subCount] = count;
subCount++;
//计算出长度数组中至最大的元素
int maxLength = length[0];
for(int i = 0; i<subCount; i++)
{
if(maxLength < length[i])
{
maxLength = length[i];
}
//打印子字符串数组和长度数组中的每一个元素,他们是相互对应的
printf("%s, %i\n", subStr[i], length[i]);
}
//打印数组中长度最大的值
printf("maxlength: %i\n", maxLength);
//遍历子字符串数组,找到长度最长的子字符串,打印,可能是多个。。
for(int i = 0; i<subCount; i++)
{
if(strlen(subStr[i]) == maxLength)
{
printf("max long string : %s\n", subStr[i]);
}
//将对上的空间都释放掉。
free(subStr[i]);
复制代码
参考网上的代码,自己做的时候没有做出来
作者:
whymerain
时间:
2015-3-13 21:08
这是我这个程序的C语言代码,不过有个bug,当有不止一个单词最长长度时,只能输出最前面的一个。
#include <stdio.h>
#include <string.h>
int main()
{
//(BUG)此代码当最长单词有多个时,按最靠前最长单词的输出
char s[200];
char *p1, *p2; //p1用于指向字符串的各个字符,p2用于指向最长单词的首字符
int max=0, len=0;
printf("请输入字符串: ");
gets(s);
p1=s;
for (int i=0; i<=strlen(s); i++)
{
if ((s[i]==' ') || (s[i]=='\0')) // 如果当前字符为空格或结束,则比较当前单词长度是否大于最大值,再将长度复位。
{
if (len>max)
{
max=len;
p2=p1;
len=0;
}
else if (len==max)
}
else // 如果当前字符非空,如果当前长度为0,表示新单词。
{
if (len==0)
p1=&s[i];
++len;
}
}
printf("最长的英文词是:");
while (*p2 && *p2!=' ') //输出最长单词
printf("%c", *p2++);
printf("\n");
return 0;
}
复制代码
作者:
czh251
时间:
2015-4-6 22:47
最近才开始认真做C语言基础测试,各种error 各种warning,真是醉了
作者:
lidongao
时间:
2015-7-14 12:36
楼主你这个和题目要求不一样吧,你这个是数组了,题目要求就是一个字符串中
作者:
seonhiu
时间:
2015-12-23 22:20
6666666666666666
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2