模拟测试题软件-用C语言解决自己问题!
考试将近,班上找不许多的资料题,资料题是有答案的,于是就想做个象考试软件的测试软件,来看看自己把资料题背得怎么样了,那些还没有记到!先前发帖求助大概该怎么做,没有得到满意的答复,我就记起论坛一人说的话,求人不如求己,
就这样探索的写了这个小程序,想与大家分享!
功能:测试背题的情况,并查漏补缺!
由于多方面考虑!只有填空题和选择题,应为有些其他题是需要用图片的,黑白界面输出图片,这....还没看到过!
Release.zip
(4.8 KB)
配套试题放在软件同目录下程序代码:
#include<stdio.h> #include<string.h> #include <conio.h> void tk(char *wj); void xz(char *wj); void main(int argc,char *argv[]) { char c,name[10][200],tkt[10][200],xzt[10][200],temp[200],index[125]; int k,x; FILE *fp; for(int ii=strlen(argv[0]);ii>=0;ii--)//修改文件全地址 { c=argv[0][ii]; if(c=='\\')//查找“\”字符在数据组的位置 { argv[0][ii+1]='\0';//删除最后字符“\”后面的字符 break; } } strcpy(index,"\0"); strcat(index,argv[0]); strcat(index,"index.txt"); if((fp=fopen(index,"rb+"))==NULL) { printf("打开index.txt失败"); } for(int i=0;!feof(fp);i++) { fgets(name[i],100,fp); k=strlen(name[i]); name[i][k-2]='\0'; fgets(tkt[i],100,fp); k=strlen(tkt[i]); tkt[i][k-2]='\0'; strcpy(temp,"\0"); strcat(temp,argv[0]); strcat(temp,tkt[i]); strcpy(tkt[i],"\0"); strcat(tkt[i],temp); fgets(xzt[i],100,fp); k=strlen(tkt[i]); xzt[i][k-2]='\0'; strcpy(temp,"\0"); strcat(temp,argv[0]); strcat(temp,xzt[i]); strcpy(xzt[i],"\0"); strcat(xzt[i],temp); printf("\t第%d套:%s\n",i+1,name[i]); } printf("\t\t输入数字,选择测试题"); scanf("%d",&x); if(0<x&&x<=i) { tk(tkt[x-1]); xz(xzt[x-1]); } } void tk(char *wj) { FILE *fp; int k,n,j; char bh[5],tm[200],tk[5][100],cda[100]; if((fp=fopen(wj,"rb+"))==NULL) { printf("打开失败!\n"); } printf("\n\t填空题:\n"); for(int i=0;!feof(fp);i++) { fgets(bh,200,fp); k=strlen(bh); bh[k-2]='\0'; fgets(tm,200,fp); k=strlen(tm); tm[k-2]='\0'; printf("\n第%s题:%s\n",bh,tm); j=0; fgets(tk[j],200,fp); k=strlen(tk[j]); tk[j][k-2]='\0'; do { printf("\t第%d个空:",j+1); scanf("%s",cda); fflush(stdin); if(strcmp(tk[j],cda)) { printf("回答错误:正确答案:%s (按回车键继续测试..)\n",tk[j]); getchar(); fflush(stdin); } j++; fgets(tk[j],100,fp); k=strlen(tk[j]); tk[j][k-2]='\0'; }while(tk[j][0]!='@'); } fclose(fp); } void xz(char *wj) { FILE *fp; int k; char bh[5],tm[200],xa[100],xb[100],xc[100],xd[100],cda0[100],cda; if((fp=fopen(wj,"rb+"))==NULL) { printf("打开失败!\n"); } fgets(cda0,100,fp); printf("\n\t选择题:\n\n"); for(int i=0;!feof(fp);i++) { fgets(bh,200,fp); k=strlen(bh); bh[k-2]='\0'; fgets(tm,200,fp); k=strlen(tm); tm[k-2]='\0'; fgets(xa,200,fp); k=strlen(xa); xa[k-2]='\0'; fgets(xb,200,fp); k=strlen(xb); xb[k-2]='\0'; fgets(xc,100,fp); k=strlen(xc); xc[k-2]='\0'; fgets(xd,200,fp); k=strlen(xd); xd[k-2]='\0'; printf("第%s题:%s\n\tA:%s B:%s C:%s D:%s\n",bh,tm,xa,xb,xc,xd); printf("填写答案:"); scanf("%c",&cda); fflush(stdin); while(68<cda||cda<65) { printf("\t请输入A—D(大写):"); scanf("%c",&cda); fflush(stdin); } if(cda0[i]!=cda) { printf("回答错误,正确答案是:%c (按回车继续测试..)\n",cda0[i]); getchar(); } printf("\n"); } fclose(fp); }
[ 本帖最后由 啊C 于 2011-6-10 21:17 编辑 ]