<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]!=' ') { 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 == ' ' || 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] != ' ') { num = 0; continue; } if (a[i] != ' '&&a[i]!=' ') num += 1; } printf("%d ",num); } return 0; }通过,问题来了
当最后一位是空格的时候 输出是0 ,竟然通过了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!