#2513: 第四點的測資


s0928571036 (123)

學校 : 國立花蓮高級中學
編號 : 3725
來源 : [59.115.210.77]
最後登入時間 :
2014-11-21 21:14:11
d252. 94北縣賽-4-字串處理問題 (String) -- 94學年度北基區資訊學科能力競賽 | From: [210.62.247.243] | 發表日期 : 2009-10-19 13:43

*** 第 4 點 (20%):WA
與正確輸出不相符(line:1)
您的答案為: god..
正確答案為: ood.g

陷阱在哪裡?

 
#2527: Re:第四點的測資


s0928571036 (123)

學校 : 國立花蓮高級中學
編號 : 3725
來源 : [59.115.210.77]
最後登入時間 :
2014-11-21 21:14:11
d252. 94北縣賽-4-字串處理問題 (String) -- 94學年度北基區資訊學科能力競賽 | From: [210.62.247.243] | 發表日期 : 2009-10-22 09:54

*** 第 4 點 (20%):WA
與正確輸出不相符(line:1)
您的答案為: god..
正確答案為: ood.g

陷阱在哪裡?


程式碼

#include<stdlib.h>     
#include<stdio.h>     
#include<string.h>     
int main()     
{     
 int a,b,c,time=0;     
 char s[300],h[300];     
  gets(s);     
  while(scanf("%s",h)==1)     
  {     
  time++;     
  int flag=0;     
  char temp;      
 
  int x=strlen(s),y=strlen(h);       
  for(a=0;a<y;a++)     
  {     
   if(h[a]=='0'&&h[a-1]!='i') flag=0;     
   if(h[a]=='$'&&h[a-1]!='i') flag=x;     
   if(h[a]=='x'&&h[a-1]!='i') /*刪完一個字元 長度-1*/      
    if(flag!=x)      
    {     
     for(b=flag;b<x-1;b++)     
     {     
      s[b]=s[b+1];      
     }          
     x--;     
    }     
   if(h[a]=='s'&&h[a-1]!='i')      
    if(flag!=0&&flag!=x) {temp=s[flag+1];s[flag+1]=s[flag]; s[flag]=temp;}     
   if(h[a]=='i'&&h[a-1]!='i') /*增加一個字元 長度+1*/      
    {     
     s[flag+1]=s[flag];s[flag]=h[a+1];           
     flag++; x++;     
    }      
   if(h[a]=='u'&&h[a-1]!='i')      
    {     
    if(s[flag]>=97&&s[flag]<=122) s[flag]=s[flag]-32;     
     flag++;     
    }     
   if(h[a]=='+'&&h[a-1]!='i') flag++;     
   if(h[a]=='-'&&h[a-1]!='i') flag--;     
  }      
  for(a=0;a<x;a++)     
   {     
   printf("%c",s[a]);     
   }      
 }     
 return 0;     
}   

 
#2529: Re:第四點的測資


asas (向諸神與地雷醬獻上祈禱)

學校 : 不指定學校
編號 : 5185
來源 : [36.228.104.72]
最後登入時間 :
2024-03-06 23:29:54
d252. 94北縣賽-4-字串處理問題 (String) -- 94學年度北基區資訊學科能力競賽 | From: [122.126.65.163] | 發表日期 : 2009-10-22 18:53

*** 第 4 點 (20%):WA
與正確輸出不相符(line:1)
您的答案為: god..
正確答案為: ood.g

陷阱在哪裡?


程式碼

#include     
#include     
#include     
int main()     
{     
 int a,b,c,time=0;     
 char s[300],h[300];     
  gets(s);     
  while(scanf("%s",h)==1)     
  {     
  time++;     
  int flag=0;     
  char temp;      
 
  int x=strlen(s),y=strlen(h);       
  for(a=0;a  {     
   if(h[a]=='0'&&h[a-1]!='i') flag=0;     
   if(h[a]=='$'&&h[a-1]!='i') flag=x;     
   if(h[a]=='x'&&h[a-1]!='i') /*刪完一個字元 長度-1*/      
    if(flag!=x)      
    {     
     for(b=flag;b     {     
      s[b]=s[b+1];      
     }          
     x--;     
    }     
   if(h[a]=='s'&&h[a-1]!='i')      
    if(flag!=0&&flag!=x) {temp=s[flag+1];s[flag+1]=s[flag]; s[flag]=temp;}     
   if(h[a]=='i'&&h[a-1]!='i') /*增加一個字元 長度+1*/      
    {     
     s[flag+1]=s[flag];s[flag]=h[a+1];           
     flag++; x++;     
    }      
   if(h[a]=='u'&&h[a-1]!='i')      
    {     
    if(s[flag]>=97&&s[flag]<=122) s[flag]=s[flag]-32;     
     flag++;     
    }     
   if(h[a]=='+'&&h[a-1]!='i') flag++;     
   if(h[a]=='-'&&h[a-1]!='i') flag--;     
  }      
  for(a=0;a   {     
   printf("%c",s[a]);     
   }      
 }     
 return 0;     
}   

沒有陷阱,是你寫錯罷了....以下是我根據你的程式碼所做的修改,我將所有不同的地方變色了

我的code:

302171asas d252. 94北縣賽-4-字串處理問題 (String)AC (4ms, 225KB)  重測 C 2009-10-22 18:42

 

#include<stdlib.h>     
#include<stdio.h>     
#include<string.h>     
int main()     
{     
 int a,b,c,time=0;     
 char s[300],h[300];     
  gets(s);     
  while(scanf("%s",h)==1)     
  {     
  time++;     
  int flag=0;     
  char temp;      
 
  int x=strlen(s),y=strlen(h);       
  for(a=0;a<y;a++)     
  {     
   if(h[a]=='0') flag=0;     
   if(h[a]=='$') flag=x;     
   if(h[a]=='x') /*刪完一個字元 長度-1*/      
    if(flag!=x)      
    {     
     for(b=flag;b<x;b++)     
     {     
      s[b]=s[b+1];      
     }          
     x--;     
    }     
   if(h[a]=='s')      
    if(flag!=x-1&&flag!=x) {temp=s[flag+1];s[flag+1]=s[flag]; s[flag]=temp;}     
   if(h[a]=='i') /*增加一個字元 長度+1*/      
    {  
     for (b=x;b>flag-1;b--)
         s[b]=s[b-1];  
     s[flag]=h[a+1];           
     flag++; x++;a++;  //因為有了a++;所以就不用判斷前一個指令是否是 ' i ' 了   
    }      
   if(h[a]=='u')      
    {     
    if(s[flag]>=97&&s[flag]<=122) s[flag]=s[flag]-32;     
     flag++;     
    }     
   if(h[a]=='+') flag++;     
   if(h[a]=='-') flag--;     
  }      
  for(a=0;a<x;a++)     
   {     
   printf("%c",s[a]);     
   }      
 }     
 return 0;     
}

 
#2530: Re:第四點的測資


s0928571036 (123)

學校 : 國立花蓮高級中學
編號 : 3725
來源 : [59.115.210.77]
最後登入時間 :
2014-11-21 21:14:11
d252. 94北縣賽-4-字串處理問題 (String) -- 94學年度北基區資訊學科能力競賽 | From: [59.115.211.78] | 發表日期 : 2009-10-22 21:33

*** 第 4 點 (20%):WA
與正確輸出不相符(line:1)
您的答案為: god..
正確答案為: ood.g

陷阱在哪裡?


程式碼

#include     
#include     
#include     
int main()     
{     
 int a,b,c,time=0;     
 char s[300],h[300];     
  gets(s);     
  while(scanf("%s",h)==1)     
  {     
  time++;     
  int flag=0;     
  char temp;      
 
  int x=strlen(s),y=strlen(h);       
  for(a=0;a  {     
   if(h[a]=='0'&&h[a-1]!='i') flag=0;     
   if(h[a]=='$'&&h[a-1]!='i') flag=x;     
   if(h[a]=='x'&&h[a-1]!='i') /*刪完一個字元 長度-1*/      
    if(flag!=x)      
    {     
     for(b=flag;b     {     
      s[b]=s[b+1];      
     }          
     x--;     
    }     
   if(h[a]=='s'&&h[a-1]!='i')      
    if(flag!=0&&flag!=x) {temp=s[flag+1];s[flag+1]=s[flag]; s[flag]=temp;}     
   if(h[a]=='i'&&h[a-1]!='i') /*增加一個字元 長度+1*/      
    {     
     s[flag+1]=s[flag];s[flag]=h[a+1];           
     flag++; x++;     
    }      
   if(h[a]=='u'&&h[a-1]!='i')      
    {     
    if(s[flag]>=97&&s[flag]<=122) s[flag]=s[flag]-32;     
     flag++;     
    }     
   if(h[a]=='+'&&h[a-1]!='i') flag++;     
   if(h[a]=='-'&&h[a-1]!='i') flag--;     
  }      
  for(a=0;a   {     
   printf("%c",s[a]);     
   }      
 }     
 return 0;     
}   

沒有陷阱,是你寫錯罷了....以下是我根據你的程式碼所做的修改,我將所有不同的地方變色了

我的code:

302171asas d252. 94北縣賽-4-字串處理問題 (String)AC (4ms, 225KB)  重測 C 2009-10-22 18:42

 

#include     
#include     
#include     
int main()     
{     
 int a,b,c,time=0;     
 char s[300],h[300];     
  gets(s);     
  while(scanf("%s",h)==1)     
  {     
  time++;     
  int flag=0;     
  char temp;      
 
  int x=strlen(s),y=strlen(h);       
  for(a=0;a  {     
   if(h[a]=='0') flag=0;     
   if(h[a]=='$') flag=x;     
   if(h[a]=='x') /*刪完一個字元 長度-1*/      
    if(flag!=x)      
    {     
     for(b=flag;b  
     {     
      s[b]=s[b+1];      
     }          
     x--;     
    }     
   if(h[a]=='s')      
    if(flag!=x-1&&flag!=x) {temp=s[flag+1];s[flag+1]=s[flag]; s[flag]=temp;}     
   if(h[a]=='i') /*增加一個字元 長度+1*/      
    {  
     for (b=x;b>flag-1;b--)
         s[b]=s[b-1];  
     s[flag]=h[a+1];           
     flag++; x++;a++;  //因為有了a++;所以就不用判斷前一個指令是否是 ' i ' 了   
    }      
   if(h[a]=='u')      
    {     
    if(s[flag]>=97&&s[flag]<=122) s[flag]=s[flag]-32;     
     flag++;     
    }     
   if(h[a]=='+') flag++;     
   if(h[a]=='-') flag--;     
  }      
  for(a=0;a   {     
   printf("%c",s[a]);     
   }      
 }     
 return 0;     
}

 

原來如此

謝謝^_^

 
ZeroJudge Forum