一道水题坑了我~
正常来说,都知道保存为字符串处理。写的时候,发现题目没说字符串最大多长,又不相信这题如此之简单,就用getchar写了,结果就可想而知了。。不知道哪里出了问题~
AC代码把最后一个else if的条件去掉改为else,还是能AC,说明输入中每个串都是能对应一个种类的。这样的话,就暂时不知道getchar()版本错在哪了,有时间再改吧,真是不作死不会死啊~
Code:
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d",&n);
char s[1000];
for(int i=0;i<n;++i)
{
scanf("%s",s);
int len=strlen(s);
if(strcmp(s,"1")==0||strcmp(s,"4")==0||strcmp(s,"78")==0)
printf("+\n");
else if(s[len-1]=='5' && s[len-2]=='3')
printf("-\n");
else if(s[0]=='9' && s[len-1]=='4')
printf("*\n");
else if(s[0]=='1' && s[1]=='9' && s[2]=='0')
printf("?\n");
}
return 0;
}
没AC的:
//有误,没AC
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
getchar();
for(int i=0;i<n;++i)
{
char c=getchar();
if(c=='1')
{
c=getchar();
if(c=='\n') printf("+\n");
else if(c=='9' && getchar()=='0')
{
int flag=0;
while((c=getchar())!='\n')
{
if(flag==0)
{
if(c=='3') flag=1;
}
else if(flag==1)
{ if(c=='5') flag=2;}
else flag=0;
}
if(flag==2) printf("-\n");
else printf("?\n");
}
else { while(getchar()!='\n'); printf("-\n");}
}
else if(c=='4')
{
if(getchar()=='\n') printf("+\n");
else { while(getchar()!='\n'); printf("-\n");}
}
else if(c=='7')
{
if(getchar()=='8' && getchar()=='\n') printf("+\n");
else { while(getchar()!='\n'); printf("-\n");}
}
else if(c=='9')
{
bool flag=0;
while((c=getchar())!='\n')
{
if(c=='4') flag=1;
else flag=0;
}
if(flag) printf("*\n");
else printf("-\n");
}
else
{
while(getchar()!='\n'); printf("-\n");
}
}
return 0;
}
上面的getcha()版本经修改后AC的:
//修改后AC了
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
getchar();
for(int i=0;i<n;++i)
{
char c=getchar();
if(c=='1')
{
c=getchar();
if(c=='\n') printf("+\n");
else if(c=='9' && getchar()=='0')
{
int flag=0;
while((c=getchar())!='\n')
{
if(flag==0)
{
if(c=='3') flag=1;
}
else if(flag==1)
{ if(c=='5') flag=2;
else flag=0;
}
//else flag=0;
}
if(flag==2) printf("-\n");
else printf("?\n");
}
else { while(getchar()!='\n'); printf("-\n");}
}//ifc
else if(c=='4')
{
if(getchar()=='\n') printf("+\n");
else { while(getchar()!='\n'); printf("-\n");}
}
else if(c=='7')
{
if(getchar()=='8' && getchar()=='\n') printf("+\n");
else { while(getchar()!='\n'); printf("-\n");}
}
else if(c=='9')
{
bool flag=0;
while((c=getchar())!='\n')
{
if(c=='4') flag=1;
else flag=0;
}
if(flag) printf("*\n");
else printf("-\n");
}
else
{
while(getchar()!='\n'); printf("-\n");
}
}
return 0;
}