【C语言】寻找字符串中的最长最短字符

该代码片段使用C语言实现,功能是从用户输入的一行字符中找到最长和最短的单词。它首先读取一行,然后遍历字符串,通过判断字符是否为字母来确定单词的开始和结束,进而计算出最长和最短单词的长度和起始位置,并输出结果。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <string.h>

int main(){
    char str[2000];
    gets(str); // 读入一行字符,回车结束
    int min = 2000,max = 0,min_i,max_i,len = 0;
    int i;
    str[strlen(str)] = ' '; // 数组最后加一个空格,作为最后一个单词的判断点
    for(i = 0;i <= strlen(str);i++){
        if((str[i] >= 'a' && str[i] <= 'z') || 
            (str[i] >= 'A' && str[i] <= 'Z')){
            len ++;
        } else if(len > 0) { // 表示一个单词结束,读到了逗号或者空格(反正不是字母)
            if(len < min){ // 最大最小分别判断,起始点就是当前下标-长度
                min_i = i - len;
                min = len;
            } 
            if (len > max){
                max_i = i - len;
                max = len;
            }
            len = 0; // 做好了一个单词对max和min的更新,长度计数器清零找下一个单词
        }
    }
    // 输出最长单词
    for(i = max_i;i < max_i+max;i++){ // 从下标开始,max个长度,一个字符一个字符输出
        printf("%c",str[i]);
    } 
    printf("\n");
    // 输出最短单词
    for(i = min_i;i < min_i+min;i++){
        printf("%c",str[i]);
    } 
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值