问题题目在如下图片中:
第一个(oj报错的代码)
#include<stdio.h>
#include<string.h>
int main(){
char str[200];
while(scanf("%s",str)!=EOF)
{
char a[200],b[200],c[200];
int d=0,e=0,f=0;
int len=strlen(str);
for(int i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z')
{
a[d]=str[i];
d++;
}
else if(str[i]>='0'&&str[i]<='9')
{
b[e]=str[i];
e++;
}
else
{
c[f]=str[i];
f++;
}
}
printf("%s\n%s\n%s\n",a,b,c);
}
return 0;
}
第二次(oj通过)
#include<stdio.h>
#include<string.h>
int main(){
char str[200];
while(~scanf("%s",str))
{
char a[200]={},b[200]={},c[200]={};
int d=0,e=0,f=0;
int len=strlen(str);
for(int i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z'||str[i]>='a'&&str[i]<='z')
{
a[d]=str[i];
d++;
}
else if(str[i]>='0'&&str[i]<='9')
{
b[e]=str[i];
e++;
}
else
{
c[f]=str[i];
f++;
}
}
printf("%s\n%s\n%s\n",a,b,c);
}
return 0;
}
运行结果相同,但是上传到oj上第一个报错,第二个通过。
两个唯一的区别就是定义三个数组时,如下:
char a[200],b[200],c[200];
char a[200]={},b[200]={},c[200]={};
我想找出问题所在,可是本人C入门,实在看不出来。