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系统

扩展建议

  • 添加单词发音功能
  • 支持多种测试模式(英文到英文、含义到单词)
  • 添加学习进度跟踪
  • 支持导入/导出单词库
  • 添加图形用户界面
相关推荐
Java猿_8 分钟前
Spring Boot 集成 Sa-Token 实现登录认证与 RBAC 权限控制(实战)
android·spring boot·后端
小王师傅6629 分钟前
【轻松入门SpringBoot】actuator健康检查(上)
java·spring boot·后端
superman超哥1 小时前
仓颉语言中元组的使用:深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
码事漫谈1 小时前
C++高并发编程核心技能解析
后端
码事漫谈1 小时前
C++与浏览器交织-从Chrome插件到WebAssembly,开启性能之门
后端
源代码•宸2 小时前
goframe框架签到系统项目(BITFIELD 命令详解、Redis Key 设计、goframe 框架教程、安装MySQL)
开发语言·数据库·经验分享·redis·后端·mysql·golang
⑩-2 小时前
SpringCloud-Nacos 配置中心实战
后端·spring·spring cloud
charlie1145141913 小时前
现代嵌入式C++教程:C++98——从C向C++的演化(2)
c语言·开发语言·c++·学习·嵌入式·教程·现代c++
雨季余静3 小时前
c语言 gb2312转utf-8,带码表,直接使用。
c语言·c语言utf8·c语言gb2312·c语言gbk·c语言gb18030·gb2312转utf8·gbk转utf8
2401_890443023 小时前
Linux 基础IO
linux·c语言