JDFZOJ的SPJ模板
#include <cstdio> #include <cstring> #include <cmath> #define OJ_AC 0 #define OJ_WA 1 bool dcmp(double x, double y) { return fabs(x-y) <= fabs(y*0.05); } char *daStr; void diff(double R, double Wa) { FILE *out = fopen("diff.out", "a+");//错误详情文件,a+是append追加方式 fprintf(out, "====================%s\n", daStr); fprintf(out, "Right : %lf\n", R); fprintf(out, "--------------------\n"); fprintf(out, "Your : %lf\n", Wa); fprintf(out, "====================\n"); fclose(out); } int main(int argc, char* argv[]){ FILE *fo, *fu, *fi; double a, b; daStr = strrchr(argv[1], '/');//测试点文件名 fi = fopen(argv[1], "r");//测试点输入文件 in fo = fopen(argv[2], "r");//测试点输出文件 out fu = fopen(argv[3], "r");//用户答案文件 user int N, S1, S2; fscanf(fi, "%d", &N); fclose(fi); for(int i=0; i<N; ++i) { S1 = fscanf(fo, "%lf", &a); S2 = fscanf(fu, "%lf", &b); if(S1 != 1 || S2 != 1 || !dcmp(b, a)) { diff(a, b);//显示可查看的错误信息 fclose(fo); fclose(fu); return OJ_WA; } } fclose(fo); fclose(fu); return OJ_AC; }