You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
1.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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 ;
}