您的位置:首页 > 其它

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

2014-07-07 00:45 211 查看


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<string>

而且需要注意不能写成m = gets();应该为gets(m)
getchar()

接收一个字符,需要有头文件#include<string>

这几需要注意,不能写成getchar(ch);应该写成ch = getchar();

=========================================================================
参考代码:
//.c#include <stdio.h>#define maxn 1000#include <string.h>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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: