C语言做的单词背诵测试器

单词学习测试器

一个用C语言实现的单词学习测试程序,支持从文件加载单词库、随机测试、错题本等功能。

功能特点

  • 📚 文件加载:从文本文件加载英文-英文单词库
  • 🎲 随机测试:随机抽取单词进行测试
  • 📊 统计功能:记录测试次数、正确率等统计信息
  • 📝 错题本:自动保存错误次数多的单词
  • 💾 数据持久化:测试数据自动保存到文件

编译和运行

简单GCC指令(推荐)

bash 复制代码
# 编译程序
gcc word_test.c -o word_test.exe

# 运行程序
word_test.exe

其他编译选项

bash 复制代码
# 带警告标志
gcc -Wall -Wextra -std=c99 word_test.c -o word_test.exe

# 带优化
gcc -O2 word_test.c -o word_test.exe

文件说明

  • word_test.c - 主程序源代码
  • word_library.txt - 单词库文件(程序会自动创建示例)
  • wrong_words.txt - 错题本文件(程序自动生成)

单词库文件格式

单词库文件 word_library.txt 的格式如下:

复制代码
hello greeting
world earth
computer machine
programming coding

每行一个单词,英文单词和含义用空格分隔。

程序功能

1. 开始随机测试

  • 输入要测试的单词数量
  • 程序随机抽取单词进行测试
  • 显示单词和含义,然后询问回忆准确性
  • 自动记录错误次数

2. 查看统计信息

  • 显示总单词数、测试次数、正确次数
  • 计算并显示正确率
  • 显示错误次数最多的单词

3. 查看错题本

  • 显示所有错误过的单词
  • 按错误次数从高到低排序
  • 帮助重点复习薄弱单词

C语言知识点

本程序涉及以下C语言知识点:

文件操作

  • fopen() - 打开文件
  • fscanf() - 格式化读取
  • fprintf() - 格式化写入
  • fclose() - 关闭文件

随机数生成

  • srand() - 设置随机数种子
  • rand() - 生成随机数
  • time() - 获取当前时间作为种子

字符串处理

  • strcpy() - 字符串复制
  • strcmp() - 字符串比较
  • strstr() - 字符串查找
  • strcspn() - 查找字符位置

内存管理

  • malloc() - 动态内存分配
  • free() - 释放内存

结构体

  • 定义和使用结构体
  • 结构体数组

使用示例

  1. 首次运行程序会自动创建示例单词库
  2. 选择"开始随机测试",输入测试数量(如5)
  3. 记住显示的单词含义
  4. 选择回忆准确性等级(1-3)
  5. 查看测试结果和正确率
  6. 在错题本中查看错误过的单词
  7. 退出程序时数据会自动保存

注意事项

  • 程序使用自评方式判断准确性(1-3分制)
  • 错题本数据会在程序退出时自动保存
  • 可以手动编辑 word_library.txt 添加更多单词
  • 程序兼容Windows和Linux系统

扩展建议

  • 添加单词发音功能
  • 支持多种测试模式(英文到英文、含义到单词)
  • 添加学习进度跟踪
  • 支持导入/导出单词库
  • 添加图形用户界面
相关推荐
行百里er1 小时前
用 ThreadLocal + Deque 打造一个“线程专属的调用栈” —— Spring Insight 的上下文管理术
java·后端·架构
玄〤1 小时前
黑马点评中 VoucherOrderServiceImpl 实现类中的一人一单实现解析(单机部署)
java·数据库·redis·笔记·后端·mybatis·springboot
J_liaty1 小时前
Spring Boot拦截器与过滤器深度解析
java·spring boot·后端·interceptor·filter
短剑重铸之日2 小时前
《7天学会Redis》Day2 - 深入Redis数据结构与底层实现
数据结构·数据库·redis·后端
码事漫谈2 小时前
从C++到C#的转型完全指南
后端
码事漫谈2 小时前
TCP心跳机制:看不见的“生命线”
后端
lpfasd1233 小时前
Spring Boot 4.0.1 时变更清单
java·spring boot·后端
梦梦代码精3 小时前
《全栈开源智能体:终结企业AI拼图时代》
人工智能·后端·深度学习·小程序·前端框架·开源·语音识别
Victor3564 小时前
Hibernate(42)在Hibernate中如何实现分页?
后端
Victor3564 小时前
Hibernate(41)Hibernate的延迟加载和急加载的区别是什么?
后端