耒阳一中 2022-12-25 16:47 采纳率: 81.3%
浏览 56
已结题

C语言输出最长的单词


#include<stdio.h>
#include<string.h>
int main()
{
int alphabetic(char);
int longest(char[]);
int i;
char line[100];

gets(line);
printf("The Longest word is: ");
for(i=longest(line);alphabetic(line[i]);i++)
printf("%c",line[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]))
if(flag)
{
point=i;
flag=0;
}
else
len++;
else
{
flag=1;
if(len>=length)
{
length=len;
place=point;
len=0;
}
}
return(place);
}
  • 写回答

5条回答 默认 最新

  • qzjhjxj 2022-12-25 21:28
    关注

    修改如下,供参考:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int alphabetic(char);
        int longest(char[]);
        int i,j,k=0,maxlen,length=0,flag=1,place=0,point;
        char line[100];
    
        gets(line);
        maxlen = longest(line);
        printf("The Longest word is: ");
        for(j=0;line[j];j++)
        {
            if(alphabetic(line[j])){
                if(flag)
                {
                    point=j;
                    flag=0;
                }
                length++;
            }
            else
            {
                flag=1;
                if(maxlen == length)
                {
                    if (k++) printf(" ");
                    for(i=point;alphabetic(line[i]);i++)
                         printf("%c",line[i]);
                }
                length=0;
            }
        }
        if(maxlen == length)
        {
            if (k++) printf(" ");
            for(i=point;alphabetic(line[i]);i++)
                printf("%c",line[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 str[])
    {
        int len=0,i=0,length=0,flag=1,place=0,point;
        for(i=0;str[i];i++)
        {
            if(alphabetic(str[i]))
            {
                if(flag)
                    flag=0;
                len++;
            }
            else
            {
                flag=1;
                if(len > length)
                    length=len;
                len=0;
            }
        }
        if (len > length)  length=len;
        return length; //return(place);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月25日
  • 已采纳回答 12月25日
  • 修改了问题 12月25日
  • 修改了问题 12月25日
  • 展开全部

悬赏问题

  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)