这段程序哪有问题,输出一段字符串里面以标点符号或者空格隔开的个数最长...
发布网友
发布时间:2024-03-13 02:13
我来回答
共1个回答
热心网友
时间:2024-03-14 22:22
一个小问题
你的程序中:
char s1[20000],s2[2000],s3[2000];
数组s1,s2,s3声明时没有初始化,
导致最后输出结果时,
将s3中没有被赋值的成员中的那些随机值也作为有效值输出了。
这么改就可以了:
char s1[20000]={NULL},s2[2000]={NULL},s3[2000]={NULL};
改过以后的代码:
#include<stdio.h>
#include<string.h>
void main()
{
char s1[20000]={NULL},s2[2000]={NULL},s3[2000]={NULL};
int i,l,l2,l3,j,s=0;
gets(s1);
fflush(stdin);
l=strlen(s1);
for(i=0;i<l-1;i++)
{
l2=0;
if(s1[i]!=' '&&s1[i]!=','&&s1[i]!='.')
{
s2[s++]=s1[i];
l2++;
}
else
for(j=0;j<(l2-1)/2;j++)
{
if(s2[j]!=s2[l2-1-j])
{
s=0;
break;
}
}
l3=strlen(s3);
if(j==(l2-1)/2&&(l2+1)>l3)
{
s2[s++]=s1[i];
s2[s]='\0';
strcpy(s3,s2);
s=0;
continue;
}
else {
i++;
s=0;
continue;
}
}
printf("%s",s3);
}