一道C语言编程题:编写的程序在Dev-C可以正常运行,但网上提交时出现了RE,求教问题出现在了哪?

背景:输入一个长度不超过100的字符串,删除串中的重复字符。输入:输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。输出:删除重复字符后的字... 背景:

输入一个长度不超过 100 的字符串,删除串中的重复字符。

输入:

输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。

输出:

删除重复字符后的字符串。例如:abced。

代码:
#include <stdio.h>
int main ()
{
char a[100]={0};
char s;
int i=0,j=0,k=0,l=0,m=0,o=0;

for(o=0;o<1000;o++)
{
scanf("%c",&s);
if(s=='\n') break;
else
{
a[i]=s;
i++;
}
}

i=i-1;

for(j=0;j<i;j++)
{
for(m=j;m<i;m++)
{
if(a[j]==a[m+1])
{
for(k=m+1;k<i;k++)
{
a[k]=a[k+1];
}
i--;
j--;
}
else continue;
}
}

for(l=0;l<i+1;l++)
{
printf("%c",a[l]);
}
printf("\n");
return 0;
}
展开
 我来答
风若远去何人留
2018-01-09 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450096
专业C/C++软件开发

向TA提问 私信TA
展开全部

有可能系统测试时没有换行, 而是用的EOF.

输入部分 改成

for(o=0;o<1000;o++) 

    if(scanf("%c",&s)==EOF || s=='\n') break; 
    a[i++]=s; 
}
更多追问追答
追问
换了之后还是RE,应该不是输入的问题吧。
追答
那把数组扩大一些呢,比如定义到200
My_Persistence
2018-01-09 · TA获得超过3465个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:409万
展开全部
//修改下你的代码,现在应该没问题了,你的有些代码我注释掉了
#include <stdio.h>
int main () 

char a[101]={0};  //不超过100的字符串至少需要101个字节的内存空间,字符串的结束符'\0'需要一个字节的存储空间
char s; 
int i=0,j=0,k=0,l=0,m=0,o=0; 
/*for(o=0;o<1000;o++) 

scanf("%c",&s); 
if(s=='\n') break; 
else 

a[i]=s; 
i++; 

}*/
//输入字符串
while((s=getchar())!='\n' && i<=100){
a[i++]=s;
}
/*for(j=0;j<i;j++)

for(m=j;m<i;m++) 

if(a[j]==a[m+1]) 

for(k=m+1;k<i;k++) 

a[k]=a[k+1]; 

i--; 
j--; 

else continue; 

}*/
//输出重复字符,遍历字符数组元素
i=0;
while(a[i]!='\0'){
//如果后面有字符与s[i]字符相同,则该字符的位置后面的所有字符全部左移一位
for(j=i+1;a[j]!='\0';){
if(a[j] == a[i]){
for(k=j+1;a[k]!='\0';k++)
a[k-1]=a[k];
a[k-1]='\0';
}
else
j++;
}
i++;
}

/*for(l=0;l<i+1;l++) 

printf("%c",a[l]); 
}*/
printf("%s\n",a); 
return 0; 
}

//示例运行结果
F:\c_work>a.exe
abacaeedabcdcd
abced
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式