#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
typedef struct Exam
{
char question[1024];
char A[100];
char B[100];
char C[100];
char D[100];
char correct;
}Exam;
Exam questions[1000];
int count;
void load_question()
{
char *p;
FILE *fp;
char buf[1024];
count=0;
if((fp=fopen("questions.txt","r"))==NULL)
{
return ;
}
while(1)
{
if(fgets(buf,1024,fp)==NULL)
{
break;
}
else
{
p=strtok(buf,"\t");
strcpy(questions[count].question, p);
p=strtok(NULL, "\t");
strcpy(questions[count],A, p);
p=strtok(NULL, "\t");
strcpy(questions[count].B, p);
p=strtok(NULL, "\t");
strcpy(questions[count].C, p);
p=strtok(NULL, "\t");
strcpy(questions[count].D, p);
p=strtok(NULL, "\t");
questions[count].correct= p[0];
count++;
}
fclose(fp);
}
void save_question()
{
FILE *fp=fopen("questions.txt", "w");
int i;
for(i=0;i<count;i++)
{
fprintf(fp,"%5\t%5\t%5\t%5\t%5\t%c\n", questions[i].question,questions[i].A,questions[i].B, questions[i].C,questions[i].D,questions[i].correct);
}
fclose(fp);
}
void input_question()
{
char buf[1024];
printf("请输入题目:");
gets(questions[count].question);
fflush(stdin);
printf("请输入选项 A:");
gets(questions[count].A);
fflush(stdin);
printf("请输入选项 B:");
gets(questions[count].B);
fflush(stdin);
printf("请输入选项 C:");
gets(questions[count].C);
fflush(stdin);
printf("请输入选项 D:");
gets(questions[count].D);
fflush(stdin);
printf("请输入正确答案:");
questions[count].correct = getchar();
fflush(stdin);
count++;
printf("录入试题成功!");
getch();
}
void start_test()
{
int n;
int k=0;
int j;
int i;
int p;
int score=0;
int index;
char q;
printf("请输入题目数:");
scanf("%d",&n);
fflush(stdin);
while(n>count)
{
printf("试题库不足%d 个题\n",n);
printf("请从新输入题目数:\n");
scanf("%d",&n);
fflush(stdin);
}
p = (int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
int index=rand()%count;
for(j=0;j<k;j++)
{
if(index==p[j])
{
i--;
break;
}
}
if(j==k)
{
p[k++]=index;
}
}
for(i=0;i<n;i++)
{
index = p[i];
printf("第%d 个题:%s\n",i+1,questions[index].question);
printf("A.%s\tB.%s\tC.%s\tD.%s\n",questions[index].A,questions[index].B,questions[index].C,questions[index].D);
printf("请输入您的答案:")
scanf("%c",&q);
fflush(stdin);
if(q==questions[index].correct)
{
score++;
}
else
{
printf("答案错误,正确答案是:%c\n",questions[index].correct);
}
}
printf("答题结束,您一共答了%d道题,其中答对了%d道\n",n,score);
getch();
return;
}
void show()
{
int i;
for(i=0;i<count;i++)
{
printf("***********************************************************************\n");
printf("第%d个题:%s\n",i+1,questions[i].question);
printf("A.%s\tB.%s\tC.%s\t%s\n",questions[i].A,questions[i].B,questions[i].C,questions[i].D);
printf("***********************************************************************\n);
}
getch();
}
int menu()
{
int s;
printf("***************************************************************************\n");
printf("* 单线选择题考试系统 *\n");
printf("* *\n");
printf("* 1.试题录入 *\n");
printf("* *\n");
printf("* 2.试题浏览 *\n");
printf("* *\n");
printf("* 3.试题追加 *\n");
printf("* *\n");
printf("* 4.试题抽取 *\n");
printf("* *\n");
printf("* 5.答 题 *\n");
printf("* *\n");
printf("* 6.退出系统 *\n");
printf("* *\n");
printf("* *\n");
printf("***************************************************************************\n");
scanf("%d",&s);
flush(stdin);
return s;
}
int main()
{
int n;
while(1)
{
system("cls");
n=menu();
switch(n)
{
case 1:load_question();break;
case 2:show();break;
case 3:input_question();break;
case 4:start_test();break;
case 5:save_question();exit;
case 6:exit(0);
default:printf("错误\n");
}
}
程序为什么不能运行,如何使其运行?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-sinJack 2022-05-26 12:15关注
把代码发一下,方便调试。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用