原帖及讨论:http://bbs.bccn.net/thread-160732-1-1.html 创作背景是同学习控制管理器(http://bbs.bccn.net/thread-160281-1-1.html)一样的,为了家中的一个表弟做的,在家中实施得到了很好的效果.
配合游戏控制,学习控制,通过测试可以获得游戏点数
/*test.ini(可自行添加修改试题,根据注释中的格式增加即可)*/
;================================================================== ;================================================================== ;记录方式:注释→ “;”后 ;测试文件夹 D:/TEST/ ;总测试数 2 ;测试记录 ;格式: ;原题 ;标准输出数据 请计算:已知:Q=1*2*3*4*5*6*7*8*9*10,P=1+2+3+4+5+6+7+8+9+10,M=Q/P,SUM=Q+P+M,请输出SUM. 3694833 请计算:(90+91+92....+99+100)*52.8+PI+MAX,并输出结果. 10055179.140000 ;==================================================================
/*test 记录试题是否通过的情况*/
1 1
/*test.c 主程序,请用gcc编译(例如DEV-CPP环境下)*/ #include<stdio.h> #include<string.h> typedef struct { char describe[1000]; char answer[100]; } DATA; DATA s[20]; char path[100]; int testnum; char s_p[20]; char password[20]; int points; int copy(char *infile,char *outfile) { FILE *input,*output; char temp; if(strcmp(infile,outfile)!=0 && ((input=fopen(infile,"rb"))!=NULL) && ((output=fopen(outfile,"wb"))!=NULL)) { while(!feof(input)) { fread(&temp,1,1,input); fwrite(&temp,1,1,output); } fclose(input); fclose(output); return 0; } else return 1; } int inittest() { FILE *input,*output; int i; char temp[80]; input=fopen("test.ini","r"); output=fopen("test.tmp","w"); while(!feof(input)) { fgets(temp,80,input); if(temp[0]!=';') fputs(temp,output); } fclose(input); fclose(output); input=fopen("test.tmp","r"); fscanf(input,"%s",path); fscanf(input,"%d",&testnum); for(i=0;i<testnum;i++) fscanf(input,"%s%s",s[i].describe,s[i].answer); fclose(input); input=fopen("test","r"); for(i=0;i<testnum;i++) fscanf(input,"%d",&s_p[i]); fclose(input); } int main(void) { int n; int x,i; FILE *input,*output; char temp[100]; inittest(); printf("程序测试 SK-CHINA 2007-2008/n"); re: printf("目前有%d道测试题,请输入希望做的题:",testnum); scanf("%d",&n); if(n<=testnum && n>0) { n--; if(s_p[n]) { printf("/n题目叙述:%s/n/n",s[n].describe); printf("/n请进入test文件夹,对test.c文件进行添加修改/n"); printf("/n如果你已经写完,那么请输入1,本程序将进行测试;否则输入0,本程序将退出并新建一个新的程序文件;或输入2,本程序将直接退出,不建立新的程序文件。/n"); scanf("%d",&x); if(x==1) { sprintf(temp,"%sout.txt",path); input=fopen(temp,"r"); fgets(temp,100,input); fclose(input); if(strcmp(temp,s[n].answer)==0) { input=fopen("control","r"); fscanf(input,"%d%s",&points,password); points=points+50; fclose(input); output=fopen("control","w"); fprintf(output,"%d/n%s",points,password); fclose(output); s_p[n]=0; output=fopen("test","w"); for(i=0;i<testnum;i++) fprintf(output,"%d ",s_p[i]); fclose(output); printf("恭喜你,测试正确 !你的游戏点数已增加50"); getch(); return 0; } else printf("测试错误,不要气馁,检查一下重新提交!"); } else if(x==0) { sprintf(temp,"%stest.c",path); copy("Normal.c",temp); return 0; } else return 0; } else { printf("本题你已经通过!请重新选择"); goto re; } } else { printf("题号输入错误,请重新输入"); goto re; } return 0; } /*标准文件 normal.c 不用编译,放于同一目录即可*/ #include<stdio.h> #include<conio.h> #define PI 3.14 #define MAX 10000000 int test_int; long test_long; float test_float; double test_double; int my() { /*这里写你的代码*/ } int main(void) { my(); freopen("out.txt","w",stdout); my(); getch(); return 0; }
本程序完成了一个基本的程序测试程序,不过其中的答案没有加密,测试程序过于简单等还待改进 编译后的程序以及完整代码下载: 点击下载该文件 本套程序(学习控制,游戏控制,程序测试控制 )完整编译后以及完整代码下载: 点击下载该文件 |