HWOJ 计算字符串最后一个单词长度

HWOJ计算字符串最后一个单词长度

题目:计算字符串最后一个单词的长度,单词以空格隔开
输入样例:
hello world
输出样例:
5
题目分析:
①由于题目中输入的字符串有空格,所以我们这里不能用scanf输入,我们采用gets(s)
②我们要检测最后一个单词的长度,也就是可以说明我们可以从后面往前面循环找出第一个空格位置,之后直接求差值我们就可以知道这个字符串最后一个单词的长度
③由于我们需要循环,所以我们考虑把输入的字符串放入一个字符串数组中
④这里还需要注意一种特殊情况,如果字符串中没有空格的情况。
学习笔记:
①如果输入的字符串中含有空格,我们需要用gets(s)
例如char s[maxn];gets(s);
②如果输入的字符串中含有空格,但是我们可以选择单个单个输入处理时,我们需要用
while((c = getchar()) != EOF)
③测量字符串的长度用strlen,这里十分注意定义int len必须要放在scanf之前定义了。
④这里补充c/c++中各种输入模式的用法:
cin
1)输入一个数字
2)接受一个字符串,遇到空格、TAB、回车都结束
cin.get()
1)cin.get(ch)用来接收字符
2)cin.get(s,n)用来接收一行字符串,可以接收空格 这个类似于getline 可以输入多个单词用空格隔开
cin.getline()
接受一个字符串,可以接收空格。这个和cin(s,n)都需要注意
char m[] = jklkjilj;
cin.getline(m,5);
cout << m << endl; 这里输出结果为jklk 因为最后一个字符为‘0’
这就可以知道直接上cin.getline()有三个参数,接收字符串到m,接收个数,结束符(当省去的时候我们就默认为'\0'或者‘/n’)
gets()
接收一个字符串,可以接收空格并输出,但是需要加上头文件#include
而且需要注意不能写成m = gets();应该为gets(m)
getchar()
接收一个字符,需要有头文件#include
这几需要注意,不能写成getchar(ch);应该写成ch = getchar();

=========================================================================
参考代码:

//.c
#include 
#define maxn 1000
#include 
int main()
{
    int number = 0,i,len;
    char s[maxn];
    gets(s);
    len = strlen(s);
    for(i = len-1; i >= 0; i--)
    {
        if(s[i] == ' ')
        {
            number = len - 1 - i;
            printf("%d\n",number);
            return 1;
        }
    }
    printf("%d\n",len);
    return 0;
}
——To_捭阖_youth

你可能感兴趣的:(华为OJ算法研究篇)