
代码:
#include <iostream> #include <ctype.h> using namespace std; int main() { string s; int num; cin>>s; for(int i=0; i<s.length(); i++) if(isalpha(s[i])) num++; cout<<num; return 0; } 1 kidtest 2019-07-24 00:30:02 +08:00 num 的值需要手动初始化为 0,这种局部变量编译器是不会帮你初始化的。 |
2 kirara OP 说来也奇怪,大多数时候它会帮你初始化为 0,偶尔会出错,但这应该不是问题的关键。 |
3 kirara OP @kidtest 说来也奇怪,大多数时候它会帮你初始化为 0,偶尔会出错,但这应该不是问题的关键。 |
4 Aoerz 2019-07-24 01:58:52 +08:00 via Android oj 会有多组测试数据的 |
6 wyfyw 2019-07-24 02:15:17 +08:00 局部变量 C++标准没有要求初始化。另外如果没有<<endl,刷新缓冲区,应该也可以输出。 |
使用未初始化的堆栈变量属于 undefined behavior |
8 Aoerz 2019-07-24 06:41:26 +08:00 via Android #include <iostream> #include <ctype.h> using namespace std; int main() { string s; int num=0; while(cin>>s){ for(int i=0; i<s.length(); i++) if(isalpha(s[i])) num++; cout<<num<<endl; } return 0; } 手机上打的... |
9 andyhuzhill 2019-07-24 10:14:22 +08:00 @kirara #2 都已经说出问题所在了,还觉得不是问题的关键 |
10 kdashl 2019-07-24 11:18:09 +08:00 9 成的时候,都是少换行啊,特殊条件不满足的错误...oj 上的测试数据有很变态的 |
11 ytmsdy 2019-07-24 11:54:22 +08:00 1:输入输出肯定有问题,一般 oj 会有多组数据,你这程序,算完一组就 exit 了 2:num 没有初始化,安全起见还是初始化一下比较稳妥。 |
12 w516322644 2019-07-24 12:01:18 +08:00 while(cin>>a>>b)cout<<(a+b)<<endl; 看他的例子啊,他要求一直输入那样的吧。 |
13 easylee 2019-07-24 12:07:54 +08:00 玩算法的一定要严谨啊,#5 已经说的很清楚了,这是常识噻。 来自多年炮灰的教训。 |