<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; }
发现这里出现了一些问题,就是当最后一位是空格的时候输入没有关闭
得到启发,又写了一个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;
}
通过,问题来了
当最后一位是空格的时候 输出是0 ,竟然通过了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!