#includeint questionNumber; //题库中题目的数量
int score = 0; //答对的题数
//显示菜单
void showMenu() {
printf("1.回答问题\n");
printf("2.查看分数\n");
printf("3.添加新问题和答案\n");
printf("4.查看问题库里的题目和答案\n");
printf("5.退出系统\n");
printf("请选择:");
}
//读取问题, isAnswer = 1 表示在回答问题, isAnswer = 0 表示在显示题库
void question(int isAnswer) {
//打开题库
FILE * f = fopen("question.data", "r");
if(f == 0) {
printf("\n\n问题不存在,请先添加问题!");
return;
}
long length;
//读取文件长度
fseek(f, 0, 2);
length = ftell(f);
rewind(f);
char line[1000], tag;
line[0] = 0;
questionNumber = 0;
while(ftell(f) < length) {
//显示问题
fgets(line, 1000, f);
printf("\n\n问题 %d :%s\n", ++questionNumber, line);
//显示四个选项
for(tag = 'A'; tag <= 'D'; tag++) {
fgets(line, 1000, f);
printf("%c :%s\n", tag, line);
}
//取得答案
fscanf(f, "%c\n", &tag);
if(isAnswer) { //如果在回答问题,就要求输入答案
for( ; ; ) {
printf("请选择答案(A,B,C,D):");
switch(getche()) {
case 'A' :
case 'a' : if(tag == 'A') score++; break;
case 'B' :
case 'b' : if(tag == 'B') score++; break;
case 'C' :
case 'c' : if(tag == 'C') score++; break;
case 'D' :
case 'd' : if(tag == 'D') score++; break;
default : printf("\n"); continue;
}
break;
}
} else { //如果在显示题库,就直接显示答案
printf("答案:%c", tag);
}
}
fclose(f);
}
//添加题目
void addQuestion() {
//打开题库
FILE * f = fopen("question.data", "a");
char line[1000], tag;
//输入问题
line[0] = 0;
while(line[0] == 0) {
printf("请输入问题:");
gets(line);
}
fprintf(f, "%s\n", line);
//输入四个选项
for(tag = 'A'; tag <= 'D'; tag++) {
line[0] = 0;
while(line[0] == 0) {
printf("请输入选项 %c :", tag);
gets(line);
}
fprintf(f, "%s\n", line);
}
//输入答案
for( ; ; ) {
printf("请输入答案(A,B,C,D):");
switch(tag = getche()) {
case 'A' :
case 'B' :
case 'C' :
case 'D' :
case 'a' :
case 'b' :
case 'c' :
case 'd' : fprintf(f, "%c\n", tag >= 97 ? tag - 32 : tag); break;
default : printf("\n"); continue;
}
break;
}
fclose(f);
}
int main(int argc, char * argv[]) {
showMenu();
for( ; ; ) { //循环操作直到用户退出系统
switch(getche()) {
case '1' : score = 0; question(1); break;
case '2' : printf("\n\n你的分数为:%d分", score == 0 ? 0 : score * 100 / questionNumber); break;
case '3' : printf("\n\n"); addQuestion(); break;
case '4' : question(0); break;
case '5' : exit(0); break;
default : printf("\n\n输入错误,请重新输入:"); continue;
}
printf("\n\n");
showMenu();
}
}