/*
5、 在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)
*/
#include<stdio.h>
int main()
{
//定义并初始化整形len,maxlen
int len = 0, maxlen = 0, wordnum = 0;
//以及要用到的指针和字符串数组s【】,单词的s1【】
char *p,*p1,s[1024],s1[64];
//输入字符串提示用户输入
printf("请输入一句只含字母和空格的英文");
//获取字符串
gets(s);
//利用指针遍历字符串
for(p1 = s; *p1 != '\0'; p1++)
{
//没遇到空格,单词长度len就增1
if(*p1 != ' ')
len++;
//遇到空格时
else
{
wordnum = wordnum + 1;
//取最长单词的数为maxlen,后面遇到len比maxlen大,就互换
if(len > maxlen)
{
maxlen = len;
//这是为了找出并标记最长单词在内存初位置方便后面遍历输出
p = p1 - len;
//计算下一个单词长度前len重新赋值0
len = 0;
}
}
}
if(wordnum == 0)
printf("只输入了1个单词%s,它本身就是最长的",s);
else
{
//遍历出最长的单词s1
for(int i = 0;i < maxlen;i++)
{
s1[i] = *(p + i);
}
//字符串最后是个‘0’;
s1[maxlen] = '\0';
//输出得到结果
printf("句中最长单词是:%s\n",s1);
}
return 0;
}//ps 本人的程序因为没考虑只有一个单词的情况,老师给判0分,现在补上修改代码如上,以免误导后人 |