华为oj 字符串最后一个单词的长度

<img alt="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" src="http://img.bbs.csdn.net/upload/201508/06/1438867109_670158.jpg" />
很简单的一道题 不过作者比较笨 调了几次也只通过第一个测试 代码见楼下
#include <iostream>
#include <string> int main()
{
char a[130];
fgets(a, sizeof(a), stdin);
int len = strlen(a);
int num = 0;
for (int i = 0;i < len - 1;i++) {
if (a[i] == ' '&&a[i+1]!=' '&&a[i+1]!='\n') {
num = 0;
continue;
}
if (a[i] != ' ')
num += 1;
}
std::cout << num;
return 0;
}

分析一下为什么会出错想了想,可能是因为没有写循环的原因,不过楼下的代码过了三道测试

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string input;
while (1)
{
cin >> input;
char ch = getchar();
if (ch == '\n' || ch == EOF)
break;
}
cout << input.length() << endl; }

华为oj 字符串最后一个单词的长度

发现这里出现了一些问题,就是当最后一位是空格的时候输入没有关闭

华为oj 字符串最后一个单词的长度

得到启发,又写了一个c语言的程序

#include <stdio.h>
#include <string.h> int main()
{
    char a[130];
    while(gets(a)){
        int len = strlen(a);
        int num = 0;
        for (int i = 0;i < len;i++) {
            if (a[i] == ' '&&a[i + 1] != ' '&&a[i + 1] != '\n') {
                num = 0;
                continue;
            }
            if (a[i] != ' '&&a[i]!='\t')
                num += 1;
        }
        printf("%d\n",num);
    }
    return 0;
}

通过,问题来了

华为oj 字符串最后一个单词的长度

当最后一位是空格的时候 输出是0 ,竟然通过了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

上一篇:打包成war包之后如何读取配置文件


下一篇:MyEclipse10破解后将工程导成war包时报错