描述
计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述:
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述:
输出一个整数,表示输入字符串最后一个单词的长度。
示例1
输入:
hello nowcoder
复制
输出:
8
复制
说明:
最后一个单词为nowcoder,长度为8
从前往后遍历法
从字符串的开头开始遍历,如果字符串不为空格就将长度依次递增,如果遇见空格字符就将长度置0,直到字符串结束
#include <stdio.h>
#include <string.h>
int main()
{
int i=0,len=0,count=0;
char s[5000];
gets(s);
count=strlen(s);
for(i=0;i<count;i++)
{
if(s[i]==' ')
{
len=0;
}
else{
len++;
}
}
printf("%d\n",len);
return 0;
}
从后往前遍历法
从字符串的最后一个字符往前,每一次遇到一个字符长度就加1,遇到空格就结束遍历,返回长度
#include <string.h>
#include <stdio.h>
int main () {
char word[5000] = {0};
int length = 0;
scanf("%[^\n]", word);
for (int i = strlen(word)-1; i >= 0; i--) {
if (word[i] == ' ') {
break;
}
length++;
}
printf("%d\n", length);
return 0;
}
EOF的方法
利用scanf输入不能接受空格,EOF语言标准函数库中表示文件结束符,直接判断到EOF的长度就是最后一个单词的长度
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000];
int a=0,i=0;
while(scanf("%s",str) != EOF)
{}
a=strlen(str);
printf("%d",a);
}