这代码怎么 AC 不了

2019-07-24 00:25:31 +08:00
 kirara

原题

代码:

#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;
}
3156 次点击
所在节点    程序员
13 条回复
kidtest
2019-07-24 00:30:02 +08:00
num 的值需要手动初始化为 0,这种局部变量编译器是不会帮你初始化的。
kirara
2019-07-24 01:12:16 +08:00
说来也奇怪,大多数时候它会帮你初始化为 0,偶尔会出错,但这应该不是问题的关键。
kirara
2019-07-24 01:13:05 +08:00
@kidtest 说来也奇怪,大多数时候它会帮你初始化为 0,偶尔会出错,但这应该不是问题的关键。
Aoerz
2019-07-24 01:58:52 +08:00
oj 会有多组测试数据的
doowzs
2019-07-24 02:06:52 +08:00
@kirara 堆栈了解过吗?🤔 非常简单的说全局变量会初始化 0 的,局部变量不会
wyfyw
2019-07-24 02:15:17 +08:00
局部变量 C++标准没有要求初始化。另外如果没有<<endl,刷新缓冲区,应该也可以输出。
xiadong1994
2019-07-24 02:45:44 +08:00
使用未初始化的堆栈变量属于 undefined behavior
Aoerz
2019-07-24 06:41:26 +08:00
#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;
}

手机上打的...
andyhuzhill
2019-07-24 10:14:22 +08:00
@kirara #2 都已经说出问题所在了,还觉得不是问题的关键
kdashl
2019-07-24 11:18:09 +08:00
9 成的时候,都是少换行啊,特殊条件不满足的错误...oj 上的测试数据有很变态的
ytmsdy
2019-07-24 11:54:22 +08:00
1:输入输出肯定有问题,一般 oj 会有多组数据,你这程序,算完一组就 exit 了
2:num 没有初始化,安全起见还是初始化一下比较稳妥。
w516322644
2019-07-24 12:01:18 +08:00
while(cin>>a>>b)cout<<(a+b)<<endl;
看他的例子啊,他要求一直输入那样的吧。
easylee
2019-07-24 12:07:54 +08:00
玩算法的一定要严谨啊,#5 已经说的很清楚了,这是常识噻。

——来自多年炮灰的教训。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/585610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX