一道水题坑了我~
正常来说,都知道保存为字符串处理。写的时候,发现题目没说字符串最大多长,又不相信这题如此之简单,就用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 #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; }
原文:http://blog.csdn.net/buxizhizhou530/article/details/24146483