想不懂了,这个怎么做啊

想不懂了,这个怎么做啊
感觉好麻烦,不知道有没有什么好的方法
希望有人可以解答

img

img


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

#define MAX_LEN 500

int main()
{
char str[MAX_LEN+1]; //+1是为了留一个位置给字符串结尾的'\0'
char longest_word[MAX_LEN+1]; //最长单词
int longest_len = 0; //最长单词长度
int len = 0; //当前单词长度
int i; //循环计数器
int start_pos = 0; //最长单词在字符串中的起始位置
int end_pos = 0; //最长单词在字符串中的结束位置
int word_start_pos = 0; //当前单词在字符串中的起始位置
int word_end_pos = 0; //当前单词在字符串中的结束位置

printf("请输入一行字符(不超过500个):\n");
fgets(str, MAX_LEN+1, stdin); //从标准输入读入一行字符

for(i=0; i<=strlen(str); i++) //循环遍历字符串,包括最后一个'\0'
{
    if(isalpha(str[i]) || str[i]=='\'') //如果是字母或',说明是单词中的一部分
    {
        if(len==0) //如果当前没有单词在处理中,说明当前是一个新单词的开始
        {
            word_start_pos = i;
        }
        len++; //单词长度加1
    }
    else //否则说明当前字符不是单词中的一部分
    {
        word_end_pos = i-1; //当前单词的结束位置是前一个字符
        if(len>longest_len) //如果当前单词比最长单词还长,更新最长单词
        {
            longest_len = len;
            start_pos = word_start_pos;
            end_pos = word_end_pos;
        }
        len = 0; //重置当前单词长度
    }
}

//输出最长单词
for(i=start_pos; i<=end_pos; i++)
{
    printf("%c", str[i]);
}
printf(" ");

//查找是否有其他与最长单词长度相同的单词
len = 0;
for(i=0; i<=strlen(str); i++)
{
    if(isalpha(str[i]) || str[i]=='\'')
    {
        if(len==0)
        {
            word_start_pos = i;
        }
        len++;
    }
    else
    {
        word_end_pos = i-1;
        if(len==longest_len && word_start_pos!=start_pos) //如果当前单词长度和最长单词一样,并且不是最长单词本身
        {
            for(i=word_start_pos; i<=word_end_pos; i++)
            {
                printf("%c", str[i]);
            }
            printf(" ");
        }
        len = 0;
    }
}

return 0;
}
#include <stdio.h>
#include <string.h>

int main() {
    char str[1000];
    int max_count = 0;
    char max_word[1000] = {0};
    int i, j, k, count, len;
    gets(str);
    len = strlen(str);
    i = 0;
    while (i < len) {
        count = 0;
        j = i;
        while (str[j] != ' ' && j < len) {
            if (str[j] >= 'a' && str[j] <= 'z') {
                count++;
            }
            j++;
        }
        if (count > max_count) {
            max_count = count;
            strncpy(max_word, &str[i], j-i);
            max_word[j-i] = '\0';
        }
        i = j + 1;
    }
    printf("%s\n", max_word);
    return 0;
}