隐括_黯淡 隐括_黯淡
关注数: 4 粉丝数: 9 发帖数: 476 关注贴吧数: 6
求助 关于Cena下 Special Judge的问题 自己写的SpecialJudge后在第10个点测试完毕后,Cena会莫名崩溃。 Cena版本0.8.2 系统win7家庭普通版64位 以前用SJ的时候一切正常 附SJ源代码C++: #include <cstdio> #include <cstdlib> FILE *fscore,*freport,*fstd,*fin,*fout; int Judge() { double x,y,dif; bool StdDone=0,YourDone=0; if (fscanf(fstd,"%lf",&x)==EOF) StdDone=1;//标准输出是否读入完毕 if (fscanf(fout,"%lf",&y)==EOF) YourDone=1;//用户输出是否读入完毕 if (StdDone&&YourDone) return(2);//读入完毕返回2 if (StdDone&&(!YourDone)) {fprintf(freport,"Your Output Is Too Long.");return(0);}//输出过长 if ((!StdDone)&&YourDone) {fprintf(freport,"Your Output Is Too Short.");return(0);}//输出过短 dif=(x>y)?(x-y):(y-x);//校验 fprintf(freport,"Std Output:%.10lf\nYour Output:%.10lf\nDiff:%.10lf\n",x,y,dif); return dif<=0.001; } int main(int argc,char *argv[]) { fscore=fopen("score.log","w");//打开得分文件 freport=fopen("report.log","w");//打开报告文件 fstd=fopen(argv[2],"r");//打开测试点标准输出文件 int score=atoi(argv[1]);//取得测试点的分数 fin=fopen("tree.in","r");//打开测试点标准输入文件 fout=fopen("tree.out","r");//打开用户的数据输出文件 if (!fout) { fprintf(fscore,"%d",0);//返回0分 fprintf(freport,"No Output.");//报告Judge结果为no output return 0; } else { int Res; while (1) { Res=Judge();//Res=0 -> 输出结果不匹配 , Res=1 -> 答案正确 , Res=2 -> 文件读入完毕 if (Res==2) { fprintf(fscore,"%d",score);//返回满分 fprintf(freport,"Right!\n");//报告Judge结果为right return 0; } if (!Res)//Judge后结果为假 { fprintf(fscore,"%d",0);//返回0分 fprintf(freport,"Wrong Answer.\n");//报告Judge结果为wrong return 0; } } } fclose(fscore);//关闭得分文件 fclose(freport);//关闭报告文件 fclose(fstd); fclose(fin); fclose(fout); return 0; } 望大神们不吝赐教,感激不尽
1 下一页