| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 532 人关注过本帖
标题:T1 不知错哪儿!
只看楼主 加入收藏
编程20123165
Rank: 2
等 级:论坛游民
帖 子:11
专家分:26
注 册:2013-5-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
T1 不知错哪儿!
T1

Time 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);

}
搜索更多相关主题的帖子: 密码 字符串 打印机 Memory 
2013-06-05 16:21
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:14 
你提交的结果是什么

Maybe
2013-06-05 16:47
编程20123165
Rank: 2
等 级:论坛游民
帖 子:11
专家分:26
注 册:2013-5-18
收藏
得分:0 
回复 楼主 编程20123165
wrong answer
2013-06-05 20:40
编程20123165
Rank: 2
等 级:论坛游民
帖 子:11
专家分:26
注 册:2013-5-18
收藏
得分:0 
经过仔细思索,做对了
#include<stdio.h>
#include<string.h>
int n=0;
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[4]={"END"};
 char a1,b1;
 int i,p=0,len,j,k;
 scanf("%s",s);
 
 while(p==0)
 {  memset(s1,0,sizeof(s1));
     gets(s1);
     len=strlen(s);
     if(s1[0]=='A')
     { n=0;
     a1=s1[2];
     f(s1);
     n=n-1;
     if(n>=len)
     { s[len]=a1;
       len++;
       s[len]='\0';
     }
     else if(n<len)
     {
         for(j=len;j>n;j--)
         {
             s[j]=s[j-1];
         }
         s[n]=a1;
         len++;
         s[len]='\0';
    }   
     }
     else if(s1[0]=='B')
     { k=0;
         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);

}
2013-06-05 22:06
快速回复:T1 不知错哪儿!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037088 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved