[₽] 2023-06-08 22:50 采纳率: 86.7%
浏览 48
已结题

哪位帮我看看这个哪错了,getchar()的'\n'读到了,为什么那个else进不去呢

```

/输入一段文字
输入一段字符,检测出最长的单词,所处最长单词的字符串字符数以及该单词,以stop作为最后输入的字符串。
测试说明
样例输入:
My name is Amy
My name is Jane
stop
样例输出:
11 name
12 name
提示:
字符串长度不超过100。
/
#include<stdio.h>
#include<string.h>
int main( )
{
while(1)
{
int max=0,i;
char a[100]={0},s[100]={0};
scanf("%s",a);
if(getchar()=='\n'&&strcmp(a,"stop")!=0) {printf("%d %s\n",max,a);}
else if(strcmp(a,"stop")==0) {break;}
else
{
if(max<strlen(a))
{
max=strlen(a);
for(i=0;i<strlen(a);i++) {s[i]=a[i];}
}
}
}
return 0;
} ```

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-06-09 14:40
    关注

    这题这样写,供参考:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        int  lenw, lens, maxl;
        char str[100], word[100], * pword;
        while (1){
            lenw = lens = maxl = 0;
            gets(str);
            if (!strcmp(str, "stop")) break;
            pword = strtok(str, " ");
            while (pword) {
                lenw = strlen(pword);    
                lens += lenw;
                if (lenw > maxl) {
                    maxl = lenw;
                    strcpy(word, pword);
                }
                pword = strtok(NULL, " ");
            }
            printf("%d %s\n", lens, word);
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月23日
  • 已采纳回答 6月15日
  • 修改了问题 6月9日
  • 修改了问题 6月9日
  • 展开全部