C 语言实现错题记录功能
时间: 2023-06-15 12:08:04 浏览: 145
实现错题记录功能可以考虑使用文件操作来存储和读取错题信息。以下是一个简单的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NUM 100 // 最大题目数量
struct Question { // 题目结构体
char content[100]; // 题目内容
char answer[100]; // 题目答案
int is_correct; // 是否正确
};
int main() {
struct Question questions[MAX_NUM]; // 存储题目的数组
int num = 0; // 题目数量
char filename[] = "questions.txt"; // 存储题目的文件名
// 从文件中读取题目
FILE *fp;
fp = fopen(filename, "r");
if (fp != NULL) {
while (fgets(questions[num].content, 100, fp) != NULL) {
fgets(questions[num].answer, 100, fp);
strtok(questions[num].content, "\n"); // 去掉换行符
strtok(questions[num].answer, "\n");
questions[num].is_correct = 0; // 初始时都为错误
num++;
}
fclose(fp);
}
// 模拟答题过程
int i;
for (i = 0; i < num; i++) {
printf("%s\n", questions[i].content);
char answer[100];
scanf("%s", answer);
if (strcmp(answer, questions[i].answer) == 0) { // 答案正确
questions[i].is_correct = 1;
}
}
// 将错题信息写入文件
fp = fopen(filename, "w");
if (fp != NULL) {
for (i = 0; i < num; i++) {
fprintf(fp, "%s\n%s\n%d\n", questions[i].content, questions[i].answer, questions[i].is_correct);
}
fclose(fp);
}
// 输出错题信息
printf("错题列表:\n");
for (i = 0; i < num; i++) {
if (questions[i].is_correct == 0) {
printf("%s\n", questions[i].content);
}
}
return 0;
}
```
以上代码中,题目信息存储在一个题目结构体数组中,包括题目内容、答案和是否正确。程序运行时,先从文件中读取题目信息,并进行答题模拟,判断答案是否正确,然后将错题信息重新写入文件中。最后输出错题列表。
需要注意的是,题目信息存储在文件中时,可以按照一定的格式进行存储,例如每个题目以及对应的答案和是否正确,都占据三行,每行以换行符分隔。在读取文件时,使用fgets函数逐行读取信息,并去掉换行符。在写入文件时,使用fprintf函数按照一定的格式写入信息。