T1 不知错哪儿!
T1Time Limit: 1000MS Memory Limit: 65535KB
Submissions: 528 Accepted: 102
Description
小兰把打印机的密码又忘了,于是哭着脸去找杨老师,杨老师为了让她长记性,决定考考她。
首先给出一个字符串,通过杨老师的提示,A操作和B操作,把它变回正确的密码,数据保证最后密码长度大于0。
A d 3 表示把字符d插入第3个位置(若大于字符串长度了就放在末尾)
B e 表示把字符e删去
她发现这个问题过于复杂,于是请来了大牛的你来帮忙,请你告诉她正确密码是什么吧。
Input
第一行: 一个字符串,字符串长度小于100
后面每行是A,B操作,最后以END结束输入
Output
输出正确的密码
Sample Input
zxt##88
A 8 8
B #
END
Sample Output
zxt888
以下是我的代码,不晓得哪儿错了,有兴趣的大神可以看看。oj网址:http://acm.swust.,编号860
#include<stdio.h>
int n=0;
char a1,b1;
void f(char s2[])
{
int len,i,a[300],k=0,j;
len=strlen(s2);
for(i=4;i<len;i++)
{
if(s2[i]==48) {a[k]=0;k++;}
else if(s2[i]==49)
{a[k]=1;k++;}
else if(s2[i]==50)
{a[k]=2;k++;}
else if(s2[i]==51)
{a[k]=3;k++;}
else if(s2[i]==52)
{a[k]=4;k++;}
else if(s2[i]==53)
{a[k]=5;k++;}
else if(s2[i]==54)
{a[k]=6;k++;}
else if(s2[i]==55)
{a[k]=7;k++;}
else if(s2[i]==56)
{a[k]=8;k++;}
else if(s2[i]==57)
{a[k]=9;k++;}
}
for(i=0;i<k;i++)
{
for(j=k-1-i;j>0;j--)
a[i]=a[i]*10;
n=n+a[i];
}
}
void main()
{ void f(char s2[]);
char s[1000],t[1000],s1[1000],s3[5]={"END"};
int i,p=0,len,j,k;
scanf("%s",s);
len=strlen(s);
while(p==0)
{ memset(s1,0,sizeof(s1));
gets(s1);
if(s1[0]=='A')
{ n=0;
a1=s1[2];
f(s1);
if(n>=len)
{ s[len]=a1;
s[len+1]='\0';
}
else if(n<len)
{
for(j=len;j>n;j--)
{
s[j]=s[j-1];
}
s[n]=a1;
s[len+1]='\0';
}
len++;
}
else if(s1[0]=='B')
{
b1=s1[2];
for(i=0;i<=len;i++)
{
if(s[i]!=b1)
{
t[k]=s[i];k++;
}
}
memset(s,0,sizeof(s));
strcpy(s,t);
memset(t,0,sizeof(t));
}
else if(strcmp(s1,s3)==0) break;
}
printf("%s\n",s);
}