题目描述
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
输入
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
输出
删除输入的短字符串(不区分大小写)并去掉空格,输出。
样例输入
in
#include
int main()
{
printf(" Hi ");
}
样例输出
#clude
tma()
{
prtf(“Hi”);
}
提示
注:将字符串中的In、IN、iN、in删除。
这题错了好多次。
最后AC代码
#include<stdio.h>
#include<string.h>
int main()
{
int k=0;
char a[10000],ans[10000];
char temp[10000];
gets(temp);
for(int i=0; i<strlen(temp);i++)
{//A 65 a 97
if(temp[i]>='A'&&temp[i]<='Z')
temp[i]+=32;
}
int len = strlen(temp);
while(scanf("%c",&a[k])!=EOF)
{
ans[k] = a[k];
if(a[k]>='A'&&a[k]<='Z')
a[k]+=32;
if(a[k]==temp[len-1])
{
int i=0,t=0;
for(i=k-len+1; i<=k; i++)
{
if(temp[t++]!=a[i])
break;
}
if(i==k+1)
k = k-len+1;
else
k++;
}
else
k++;
}
for(int i=0; i<k; i++)
{
if(ans[i]!=' ')
printf("%c",ans[i]);
}
printf("\n");
}
至今找不出错误的代码
#include<stdio.h>
#include<string.h>
int main()
{
int k=0;
char a[10000];
char temp[10000];
gets(temp);
for(int i=0; i<strlen(temp);i++)
{//A 65 a 97
if(temp[i]>='A'&&temp[i]<='Z')
temp[i]+=32;
}
int len = strlen(temp);
while(scanf("%c",&a[k])!=EOF)
{
if(a[k]==temp[len-1]||a[k]==temp[len-1]-32)
{
int i=0,t=0;
for(i=k-len+1; i<=k; i++)
{
if(temp[t++]!=(a[i])&&temp[t++]!=(a[i]-32))
break;
}
if(i==k+1)
k = k-len+1;
else
k++;
}
else
k++;
}
for(int i=0; i<k; i++)
{
if(a[i]!=' ')
printf("%c",a[i]);
}
printf("\n");
}
已找到错误处
#include<stdio.h>
#include<string.h>
int main()
{
int k=0;
char a[10000];
char temp[10000];
gets(temp);
for(int i=0; i<strlen(temp);i++)
{//A 65 a 97
if(temp[i]>='A'&&temp[i]<='Z')//全部转换为小写
temp[i]+=32;
}
int len = strlen(temp);
while(scanf("%c",&a[k])!=EOF)//有大写也有小写
{
// a[k]为小写 a[k]为大写
if(a[k]==temp[len-1]||a[k]==(temp[len-1]-32))
{
int i=0,t=0;
for(i=k-len+1; i<=k; i++)
{
if(a[i]!=temp[t]&&a[i]!=temp[t]-32)
break;
t++;
}
if(i==k+1)
k = k-len+1;
else
k++;
}
else
k++;
}
for(int i=0; i<k; i++)
{
if(a[i]!=' ')
printf("%c",a[i]);
}
printf("\n");
}