每日一题——第一百四十一题

题目:编写函数, 再一行英文短文中找到最长的单词并求其长度, 再主函数中输出英文短文并输出结果。(短文长度不超过100, 单词长度不超过20), 短文最后以. 结尾。单词之间以, 或者空格分隔,不出现其他字符。

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

#define MAX_ESSAY_LENGTH 100
#define MAX_WORD_LENGTH 20

void findLargestWord(const char* essay, char* largestWord, int* maxLength);

int main() {
    char essay[MAX_ESSAY_LENGTH + 1];
    char largestWord[MAX_WORD_LENGTH + 1];
    int maxLength = 0;

    // 输入短文
    printf("请输入一行英文短文(短文长度不超过100,单词长度不超过20),短文最后以. 结尾:\n");
    fgets(essay, sizeof(essay), stdin);

    essay[strcspn(essay, "\n")] = 0;

    // 找到最长的单词
    findLargestWord(essay, largestWord, &maxLength);

    // 输出结果
    printf("原文短文: %s\n", essay);
    printf("最长单词: %s\n", largestWord);
    printf("最长单词长度: %d\n", maxLength);

    return 0;
}

/// <summary>
/// 找到最长的单词并求其长度
/// </summary>
/// <param name="essay"></param>
/// <param name="largestWord">最长单词</param>
/// <param name="maxLength">最大长度</param>
void findLargestWord(const char* essay, char* largestWord, int* maxLength) {
    int currentLength = 0;
    char currentWord[MAX_WORD_LENGTH + 1] = { 0 };

    // 遍历短文中的每个字符
    for (int i = 0; essay[i] != '\0'; i++) {
        char c = essay[i];

        // 如果遇到逗号或空格,检查当前单词的长度
        if (c == ',' || c == ' ') {
            if (currentLength > *maxLength) {
                *maxLength = currentLength;
                strcpy(largestWord, currentWord);
            }
            currentLength = 0;
        }
        else if (c == '.') {
            // 如果遇到句号,检查最后一个单词的长度
            if (currentLength > *maxLength) {
                *maxLength = currentLength;
                strcpy(largestWord, currentWord);
            }
            break;
        }
        else {
            // 如果是字母,添加到当前单词
            currentWord[currentLength++] = c;
            currentWord[currentLength] = '\0'; //添加字符串结束符
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值