1,题目
描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:
hello nowcoder
复制
输出:
8
复制
说明:
最后一个单词为nowcoder,长度为8
2,代码
自己编写的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char buff[5000] = {0};
int num = 0;
int length;
gets(buff);
length = strlen(buff) - 1;
while (buff[length] != ' ') {
num++;
if (length == 0) {
break;
}
length--;
}
printf("%d", num);
}
思路:
获取字符串存入buff后,直接倒序查找最后一个单词,获取其长度。需要关注的是 该字符串只有一个字母的场景,所以 while 循环中的if判断必不可少。
3,目前排名第一的代码
这个排名第一的样例代码,确实经典。利用scanf函数遇到空格即停止获取字符串的特性,while循环后,该字符串str存的就是最后一个单词。
#include <stdio.h>
int main() {
char str[5000];
int a=0;
while(scanf("%s",str)!=EOF){}
a=strlen(str);
printf("%d",a);
}