黑马程序员技术交流社区
标题:
有一题,对字符串不熟悉,有思路,不会写,哈哈
[打印本页]
作者:
万里天
时间:
2015-3-2 16:04
标题:
有一题,对字符串不熟悉,有思路,不会写,哈哈
8、 在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)
思路分析
1.将字符串 单词 分别保存到数组里,通过空格辨别
2.变量lenght保存单词长度,变量word保存该单词
3.第一个单词的长度与下一个单词的长度比较大小,lenght保存大的那个长度,word保存单词
4.依次比较,最后word就是最长单词
作者:
whenorwhere
时间:
2015-3-2 17:56
#include <stdio.h>
int main()
{
//已知的字符串,由于不经常修改,所以用char *
char *str = "You are my best friend";
//最长单词的长度,初始化为0
int maxLen = 0;
//用作记录每次空格后第一个字符的位置
char *p = str;
//用于记录最长单词的起始位置
char *subStr;
//计算出字符串的长度,便于循环遍历
int strLen = strlen(str);
//用于存储最长单词的字符数组
char subs[20];
//for循环遍历已知字符串的每个字符
for(int i=0; i<=strLen; i++) {
//如果当前字符为空或者‘\0’
if(*str == ' ' || *str == '\0') {
//str-p 即为当前单词的长度,如果大于maxLen
if((str-p)>maxLen) {
//将当前单词的长度赋值给maxLen
maxLen = str-p;
//保存当前最长单词的起始位置
subStr = p;
}
//‘’字符+1,记录下一个单词的起始位置
p = str+1;
}
//指向下一个单词
str ++;
}
//for循环遍历最长单词,赋值给subs
for(int i=0; i<maxLen; i++) {
subs[i] = *(subStr + i);
}
//在末尾添加 ’\0‘结束字符
subs[maxLen] = '\0';
//输出
printf("最长单词是%s", subs);
return 0;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2