|
|
#include<stdio.h>
|
|
|
#include<stdlib.h>
|
|
|
#include<string.h>
|
|
|
#include<time.h>
|
|
|
#define M 100
|
|
|
void test()
|
|
|
{typedef struct question{
|
|
|
char mainq[500];
|
|
|
char ala[150];
|
|
|
char alb[150];
|
|
|
char alc[150];
|
|
|
char ald[150];
|
|
|
char ans;
|
|
|
}ques;
|
|
|
srand(unsigned(time(0)));//时间种子
|
|
|
FILE *fp;
|
|
|
ques que[1000];
|
|
|
int f[10000];
|
|
|
memset(f,0,sizeof(int)*10);
|
|
|
int a[1000],flak;
|
|
|
char b[1000]={0},c[1000];
|
|
|
int i,n,N,count1=0,count=0,sel,j,temp;
|
|
|
fp=fopen("question.dat","rb");
|
|
|
if(fp==NULL)
|
|
|
{
|
|
|
printf("文件处理错误\n");
|
|
|
return ;
|
|
|
}
|
|
|
for(i=0;fread(&que[i],sizeof(ques),1,fp)==1;i++);
|
|
|
N=i;
|
|
|
printf("请输入你想选择的题数(考试分数将会是你的正确题数/总题数*100,题量需小于%d):",N);
|
|
|
scanf("%d",&n);
|
|
|
while(count<n)//随机选择n个题目
|
|
|
{
|
|
|
sel=rand()%N;
|
|
|
if(f[sel]==0)
|
|
|
{
|
|
|
a[count++]=sel;
|
|
|
f[sel]=1;
|
|
|
}
|
|
|
}
|
|
|
for(i=0;i<count-1;i++)
|
|
|
{
|
|
|
for(j=0;j<count-i-1;j++)
|
|
|
{
|
|
|
if(a[j]>a[j+1])
|
|
|
{
|
|
|
temp=a[j];
|
|
|
a[j]=a[j+1];
|
|
|
a[j+1]=temp;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
count=0;
|
|
|
for(i=0;count<n;i++)//将题目按原顺序输出并记录答案
|
|
|
{
|
|
|
if(i==a[count])
|
|
|
{
|
|
|
fread(&que[i],sizeof(ques),1,fp);
|
|
|
printf("%d、%s\n",count+1,que[i].mainq);
|
|
|
printf("A.%s\n",que[i].ala);
|
|
|
printf("B.%s\n",que[i].alb);
|
|
|
printf("C.%s\n",que[i].alc);
|
|
|
printf("D.%s\n",que[i].ald);
|
|
|
b[count+1]=que[i].ans;
|
|
|
count++;
|
|
|
}
|
|
|
}
|
|
|
fclose(fp);
|
|
|
printf("开始答题(例:第一题选A,第二题选B,第三题选C,则先输入A,再输入B,在输入C,若选择不写则输入除ABCD外任意其它字符)\n");
|
|
|
do{
|
|
|
flak=0;
|
|
|
getchar();
|
|
|
for(i=1;i<=count;i++)
|
|
|
{
|
|
|
scanf("%c",&c[i]);
|
|
|
getchar();
|
|
|
}
|
|
|
for(i=1;i<=count;i++)
|
|
|
printf("%d.%c ",i,c[i]);
|
|
|
printf("\n请核对答案,如确定答案请输入0结束答题,若要重新答题请输入1:");
|
|
|
scanf("%d",&flak);
|
|
|
}while(flak);
|
|
|
count=0;
|
|
|
for(i=1;i<=n;i++)
|
|
|
{
|
|
|
if(b[i]==c[i])
|
|
|
count++;
|
|
|
}//计算得分
|
|
|
printf("\n\t\t\t\t你的得分为%.2lf",((double)count)/n*100);
|
|
|
return ;
|
|
|
}
|