资源简介
1.用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)
2.试题录入:可随时增加试题到试题库中
3.试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)
4.答题:用户可实现输入自己的答案
5.自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
代码片段和文件信息
#include
#include//应用动态存储分配函数//
#include
# define LEN sizeof(struct question)
struct question
{
char ask[200];//选择题题目//
char answer[4][80];//选择题选项每个答案的长度//
int right;//正确答案//
struct question *next;//next是指针类型的成员,
//它指向struct question类型数据(即next所在的结构体类型)
//使用指针类型成员存放下一个结点的地址
//此步骤实现了问题的连续输入输入
};
int menu(void);//声明菜单选择函数
struct question *seek(struct question *seeklong lenlong max);//寻找读取答案的位置
struct question *insert(struct question *fstconst struct question *ad);//插入试题
void getquestion(struct question *s);//获取问题,选项,以及正确答案
void savefile(const struct question *aFILE *sf);//保存最佳答案在文件中//
struct question *loadfile(struct question *bFILE *lf);//读取题目,将题目添加到列表中
int getanswer(void);//得到答案
int getyouranswer(void);//得到考生答案
void explainquestion(const struct question *qint n);//统计答对题目数,显示得分
//选择菜单//
int menu(void)
{
int v;
printf(“1—添加选择题\n2—回答选择题\n3—退出\n“);
scanf(“%d“&v);
return v;
}
//seek函数确定一个读取答案的位置,len代表要读取的答案数,max代表列表的长度//
struct question *seek(struct question *seeklong lenlong max)
{
int i;
srand(time(NULL));
while(i=rand()%max+len while(i--)
seek=seek->next;//找到指定的位置//
return seek;
}
//向列表中插入试题//
struct question *insert(struct question *fstconst struct question *ad)
{
struct question *newptr=(struct question *)malloc(LEN);//分配新的内存空间//
if (newptr==NULL)
exit(0);
*newptr=*ad;
newptr->next=fst;
return newptr;
}
//获取问题,选项,以及正确答案//
void getquestion(struct question *s)
{
int i=0;
printf(“请输入选择题题目:\n“);
scanf(“%s“s->ask);//指向结构体中的成员//
while(i<4)
{
printf(“请输入选项%c的答案:\n“i+‘A‘);
scanf(“%s“s->answer[i++]);
}
s->right=getanswer();
}
//试题保存//
void savefile(const struct question *aFILE *sf)//使用const说明成员函数//
{
fclose(sf);
if((sf=fopen(“kstm.dat““w“))==NULL)//以写的方式重新打开文件//
return
- 上一篇:c语言实现json的创建及解析
- 下一篇:利用HDF4库读取*.hdf文件
评论
共有 条评论