凭空起惊雷 2023-05-19 23:27 采纳率: 76.2%
浏览 26

C++ “最长单词”结果报错

题目背景
编写一个函数,输入一行字符,将此字符串中最长的单词输出。
输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。

输入样例
I am a student

输出样例
student

说明 提示
时间限制:1.0s 内存限制:512.0MB

我的代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void MaxWord(const char *str)
{
    char *maxstr=(char *)malloc((strlen(str)+1)*sizeof(char));//存储最长单词
    char *curstr=(char *)malloc((strlen(str)+1)*sizeof(char));//存储最短单词
    int max=0;//最长单词的长度
    int cur=0;//当前单词的长度
    while(*str!='\0')
    {
        if(isalpha(*str))
        {
            curstr[cur++]=*str;
        }
        else
        {
            if(cur>max)//将新的单词,更新到maxstr中
            {
                curstr[cur]='\0';//使curstr成为字符串
                strcpy(maxstr,curstr);
                max=cur;
            }
            cur=0;//丢弃之前的单词,为新单词做准备
        }
        str++;
    }
    printf("%s\n",maxstr);
    free(curstr);
    free(maxstr);
}
int main()
{
    char *str[3]={"china","japan","england"};
    printf("%s\n",str);
    return 0;
}

我的代码感觉没问题,是哪里有错?
请将全部代码给我开一眼。我刚入门,不怎么懂!

  • 写回答

2条回答 默认 最新

  • 真相重于对错 2023-05-20 06:24
    关注

    你的逻辑有问题,因为最后一个单词你没有判断,所以出错

    评论

报告相同问题?

问题事件

  • 创建了问题 5月19日