华为在线笔试题 计算字符串最后一个单词的长度,单词以空格隔开

计算字符串最后一个单词的长度,单词以空格隔开。

输入描述:
一行字符串,非空,长度小于5000。

输出描述:
整数N,最后一个单词的长度。

示例1:

输入
hello world
输出
5

//示例代码  
#include 
#include 
int main()
{
    char arr[5000];
    fgets(arr,5000,stdin);//使用标准输入,使用scanf的话会认为空格是结束符
    //例如 abc d这里只能获取到abc
    int a = 0;//统计输入的字符个数
    int b = 0;//最后一个字符的长度
    char *p  = arr;//这里使用指针循环来确定字符串的长度,strlen的原理就是它
    while(*p != '\0')
    {
        a++;
        p++;
    }//确定字符串长度,切记在输入时,回车换行符也会被获取
    //因此a必须减一,因为数组的下标是从0开始所以直接减2
    a = a-2;
    if(a == 0)//这里其实无需判断
    {
        printf("0");
        return 0;
    }
    while(arr[a] != ' ')//从最后的字母向前减,遇到空格即结束
    {
        if(a == 0)
        {
            b++;
            break;
        }
        b++;
        a--;
        
    }
    printf("%d\r\n",b);
    return 0;
}

总体来说,这道题难度不高,主要是细节的问题,望大家仔细思考,若代码有不适地方,忘批评指正。

你可能感兴趣的:(c语言)