求字符串中的连续字母字符串的最大长度。输入一个字符串,输出取连续字母字符串的最大长度。


#include
#include
int main()
{
    int alphabetic(char);
    int longest(char []);
    int i;
    char line[100];
int length=0;
    printf("input one line\n");
    scanf("%s",line);
    printf("The longest word is:");
    for(i=longest(line);alphabetic(line[i]);i++)//longest(line)最后有返回值,其返回值是最大单词的起始地址
                            //alphabetic(line[i])充当判断语句,直到最后一个字符不是字母,就跳出for循环
        printf("%d",i);
    printf("\n");
    return 0;
}

int alphabetic(char c)
{
    if((c>='a'&& c<='z')||(c>='A'&& c<='Z'))
        return(1);
    else 
        return(0);
}

int longest(char string[])
{
    int len=0,i,length=0,flag=1,place=0,point;
    for(i=0;i<=strlen(string);i++)
        if(alphabetic(string[i]))//进行判断,如果c是字母的话,则返回值为1,在if语句中表示为真,执行if语句
        {
           if(flag)//if(flag==1)表示为真,执行if语句
           {
               point=i;
               flag=0;//flag=0的作用:当下一个字符依旧是字母是,由于flag=0,则不执行本语句,而执行else语句,从而确定本单词的长度
           }
           else
               len++;//逐步确立单词的长度,直到下一个字符为非字母
        }
        else
        {
            flag=1;//当遇到空格等非字母的字符,则执行本次语句
            if(len>=length)
            {
                length=len;//如果本次单词的长度大于上次单词的长度,则替换掉原有的
                place=point;//将当前的最大单词的起始地址,所在序列赋给place
                len=0;//使得可以重新计算新单词的长度
            }
        }
        return(length);
}

要求:
输入:Ab9hjh7uyhjn8m
输出:5
结果我输出56

我帮你写了一个看合适不?仅供参考 谢谢!

img

img

img

#include<stdio.h>

int isal(int c)
{
    return c >= 'a' && c <= 'z' || (c >= 'A' && c <= 'Z') ? 1 : 0;
}

int longest(char *s)
{
    int max = 0, n = 0;
    char *p = s;
    while (*p != '\0')
    {
        if (isal(*p))
        {
            n++;
            if (n > max)
                max = n;
        }
        else
            n = 0;

        p++;
    }
    return max;
}

int main()
{
    char s[512];
    scanf("%s", s);
    printf("%d\n", longest(s));
    return 0;
}