C语言-输出一个句子中最长的单词

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main()
{
int longest_i(char * p);

char str[1000];
gets(str);//输入

int max_i,i;
max_i = longest_i(str);//获取最长单词的首字母下标
//输出这个最长的单词
for (i = max_i; isalpha(str[i]); i++)
printf("%c", str[i]);
puts("");//输出一个换行

return 0;
}

//找到字符串中最长单词的起始下标
int longest_i(char * p){

int maxs_index=0,i,count=0,maxl=0,dqs_index=0;
int flag=0;//1在一个单词内 0未在单词内
for (i = 0; i <= strlen(p); i++){
if(isalpha(*(p+i))){
//当前字符是字母
if(!flag){ //如果是单词的第一个字母
flag=1; //标记进入一个单词
dqs_index = i; //这个单词的起始下标是i
}
count++;
}else{
//当前字符不是字母
//如果最大长度有值且当前单词的长度大于之前的最大长度,或者最大长度还没有值(当前是第一个单词)
if((maxl && count>maxl) || !maxl){
maxl = count;
maxs_index = dqs_index;
}
flag = 0;//标记为非单词状态
count=0;//单词长度计数变量赋0
}
}
return maxs_index;
}
posted @ 2022-04-11 17:58  帅哥才  阅读(458)  评论(0编辑  收藏  举报