题解 | #字符串最后一个单词的长度#
字符串最后一个单词的长度
https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da
#include <stdio.h>
int main() {
int num = 0; //计算最后一个单词数
char arr[1000] = {0};
scanf("%[^\n]%*c", arr); //可以获取空格的scanf
char* p;
int a = 0;
a = sizeof(arr); //计算输入数组大小
p = &arr[a] - 1; //指向数组最后一个元素
while (1)
{
p--;
if (*(p - 1) == ' ' || *p == arr[0]) //当遇到最后一个单词前面的空格,或者只有一个单词时
{
while (*p != '\0') //开干,遇到字符串结束符结束
{
num++;
p++;
}
printf("%d\n", num);
return 0;
}
}
return 0;
}
试错太多,本以为是一道很简单的题,但就是找不到快速解题的诀窍,导致写了很多遍才通过。
解题思路:1、可以先用把数组的大小计算出来,接着指针指向字符串数组的最后一个元素(PS:本想一路循环到字符串结束符的,但循环到最后指向'\0'后就会找不回元素组,相当于指向空)。然后往回循环遍历,p--,直到*p指向空格' ' ,再用一个循环进行最后一个单词的计算字母数,p++,num++,直到*p指向'\0',完成,打印num值。
*/