黑马程序员技术交流社区
标题:
基础测试题分享,如有错误欢迎指正!!
[打印本页]
作者:
baihe0813
时间:
2015-1-1 08:04
标题:
基础测试题分享,如有错误欢迎指正!!
//在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
//声明一个字符串
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]);
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2