代码:
#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,刷新缓冲区,应该也可以输出。
|
7
xiadong1994 2019-07-24 02:45:44 +08:00
使用未初始化的堆栈变量属于 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 1
while(cin>>a>>b)cout<<(a+b)<<endl;
看他的例子啊,他要求一直输入那样的吧。 |
13
easylee 2019-07-24 12:07:54 +08:00
玩算法的一定要严谨啊,#5 已经说的很清楚了,这是常识噻。
——来自多年炮灰的教训。 |