C语言 求字符串中最长单词的长度问题?

为什么通不过?

代码文本:

#include "stdio.h"

#define N 1000

int main(int argc,char *argv[]){

char s[N+1],ch;

int k,t,n;

printf("Enter a text...\n");

for(n=0;n<N;n++){

if((ch=getchar())=='\n')

break;

s[n]=ch;

}

s[n]='\0';

for(t=k=0;n;n--){

if(s[n]>='a' && s[n]<='z' || s[n]>='A' && s[n]<='Z')

t++;

else

t>k ? k=t,t=0 : t=0;

}

if(t>k)

k=t;

printf("%d\n",k);

return 0;

}

追问

请问我的哪有问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-12-10
这题目的意思不是很明确,单词的定义是什么?是否包含字母和其它非空格字符的串也算一个单词?还有就是空输入输出的问题,图上有No Input!和No Output!字样又是什么意思?
比如我不输入任何东西直接回车,或者只输入一堆空格,这种情况下max就是0,要不要输出?
试试我这个吧,有两个假定:1、除了空格其它字符都算单词;2、输入空串直接返回,不输出。
如果不行,那就假定其它字符不算单词,把下面这部分

while ((*s != ' ') && (*s != 0)) //当非空格且字符串未结束,累加l
{
l++;
s++; //指向下一个字符
}

替换成

while ((('a' <= *s) && (*s <= 'z')) || (('A' <= *s) && (*s <= 'Z'))) //当字母且字符串未结束,累加l
{
l++;
s++; //指向下一个字符
}
if (*s)
s++; //非空格、非字母、非'\0',也跳过

再试试,反正各种假定都试一下

#include<stdio.h>
void main()
{
char a[1001];
char* s;
int l, max = 0;
gets(a);
s = a; //指针指向字符串起始位置
if (*s == 0)
return; //输入空串直接返回
while (*s) //当*s不为0,即字符串未结束
{
while (*s == ' ') //跳过所有空格
s++;
l = 0;
while ((*s != ' ') && (*s != 0)) //当非空格且字符串未结束,累加l
{
l++;
s++; //指向下一个字符
}
if (l > max)
max = l;
}
//if (max > 0) //也可以试试这个条件:输入串中没有任何单词不输出
printf("%d", max);
}本回答被提问者采纳
第2个回答  2019-12-10
是不是题目还有其他要求啊
相似回答