
prairielearn/grader-cPrairieLearn C语言外部自动评分器镜像是PrairieLearn在线学习系统的专用组件,用于对C语言编程作业和测试进行自动化评分。该镜像集成了C语言编译环境、测试用例执行引擎和评分规则模块,可与PrairieLearn系统对接,实现C代码提交后的自动编译、运行验证及分数计算,提升C语言作业批改效率。
通过Docker Hub拉取最新版本镜像:
bashdocker pull prairielearn/prairielearn-c-autograder:latest
以下命令展示如何通过Docker运行镜像,对指定C代码进行评分(需配合测试用例和配置):
bashdocker run --rm \ -v /local/test-cases:/app/test-cases \ # 挂载测试用例目录(含输入/预期输出文件) -v /local/submitted-code:/app/submitted \ # 挂载学生提交的C代码目录(如main.c) -e SCORE_CRITERIA="test_case_pass_rate" \ # 指定评分标准为测试用例通过率 -e COMPILE_FLAGS="-Wall -Werror -std=c99" \ # 设置编译参数(开启警告并视为错误,使用C99标准) -e TIMEOUT=20 \ # 设置运行超时时间为20秒 prairielearn/prairielearn-c-autograder:latest
| 参数名 | 说明 | 默认值 |
|---|---|---|
SCORE_CRITERIA | 评分标准,可选值:test_case_pass_rate(测试用例通过率)、code_quality(代码质量)、combined(综合评分) | test_case_pass_rate |
COMPILE_FLAGS | C编译器参数,如-O2(优化)、-lm(链接数学库)等 | -std=c99 |
TIMEOUT | 程序运行超时时间(秒),超时将终止运行并记录为失败 | 30 |
OUTPUT_PRECISION | 数值输出比对精度(小数位数),仅用于浮点数结果比对 | 6 |
| 挂载路径 | 说明 | 必需性 |
|---|---|---|
/app/test-cases | 测试用例目录,需包含: - input_*.txt:输入文件(如input_1.txt)- expected_*.txt:对应预期输出文件(如expected_1.txt) | 是 |
/app/submitted | 学生提交代码目录,需包含待评分的C代码文件(默认读取main.c,可通过CODE_FILE环境变量指定文件名) | 是 |
/app/output | 评分结果输出目录,将生成score.json(评分结果)和log.txt(详细日志) | 否 |
评分完成后,镜像将生成JSON格式的评分结果(默认输出至/app/output/score.json),包含以下关键字段:
score:最终得分(0-100分)passed_tests:通过的测试用例数量total_tests:总测试用例数量compile_status:编译状态(success/failed)error_details:错误详情(如编译错误信息、运行时异常)完整技术文档及接口规范请参考PrairieLearn官方文档:[***]




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务