求解C语言问题 第12题:最后一个单词的长度?

题目

给定由大写,小写字母和空格组成的字符串,返回最后一个单词的长度。
如果不存在最后一个单词,返回0
注意:
“单词”是指不包含空格符号的字符串
例如:
s = “hello World”, 那么返回的结果是5
格式:
第一行输入字符串s,然后输出s中最后一个单词的长度。

我的代码
#include<stdio.h>
int main(){
int i,j,k;
char c[13000];

c[1]=getchar();
i=1;
while (c[i]!='\n')
{
c[i+1]=getchar();
i++;
}
i--;

while (c[i]==' ') i--;
j=i;

while ((c[j]>='A'&&c[j]<='Z')||(c[j]>='a'&&c[j]<='z')) j--;
j++;
k=i-j+1;
if (k==0) return 0;
printf ("%d",k);
return 0;
}

我自己测试都没问题 怎么过不了。
还有 不存在最后一个单词 是什么意思能举个例子么

就这个题目本身来看的话,应该是要你写一个函数:
int lastWordSize(const char* str);
来实现计算最后一个单词的长度吧。
虽然你这个程序大体逻辑能完成,但看计算过程,i的值都让人看不懂。
建议按这方法试试吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-27
如果不存在最后一个单词,返回0,应该是指你直接输入回车时,没有数据时应该输出0

if (k==0) return 0; 去掉这一句再试试本回答被提问者采纳
第2个回答  2014-07-27
刚刚刚试了一下,全是空格的就不行,或者最后一个是空格的话应该就是输出0 了吧,改一下试一试,应该是这个问题
相似回答