diff --git a/exam-module-judgement/exam-module-judgement-biz/pom.xml b/exam-module-judgement/exam-module-judgement-biz/pom.xml
index 8aec2df8..fc44e4c2 100644
--- a/exam-module-judgement/exam-module-judgement-biz/pom.xml
+++ b/exam-module-judgement/exam-module-judgement-biz/pom.xml
@@ -127,6 +127,12 @@
gson
2.10
+
+ pc.exam.gg
+ exam-module-exam-biz
+ 2.4.2-SNAPSHOT
+ compile
+
diff --git a/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/c_programming/JudgementService.java b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/c_programming/JudgementService.java
new file mode 100644
index 00000000..f4f195bf
--- /dev/null
+++ b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/c_programming/JudgementService.java
@@ -0,0 +1,29 @@
+package pc.exam.pp.module.judgement.service.c_programming;
+
+import pc.exam.pp.module.exam.dal.dataobject.ExamQuestion;
+
+/**
+ * 判分逻辑集合
+ *
+ * @author rwb
+ */
+public interface JudgementService {
+
+ /**
+ * 程序设计判分
+ * @param examQuestion 程序设计题内容
+ * @param path 文件路径
+ * @param score 分数
+ * @return 返回判分
+ */
+ public double ProgrammingC(double score, String path, ExamQuestion examQuestion);
+
+
+ /**
+ * 出题时测试运行C语言代码
+ * @param code 源码
+ * @return 运行结果
+ */
+ public String run_test_result(String code);
+
+}
diff --git a/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/c_programming/JudgementServiceImpl.java b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/c_programming/JudgementServiceImpl.java
new file mode 100644
index 00000000..1da72d73
--- /dev/null
+++ b/exam-module-judgement/exam-module-judgement-biz/src/main/java/pc/exam/pp/module/judgement/service/c_programming/JudgementServiceImpl.java
@@ -0,0 +1,207 @@
+package pc.exam.pp.module.judgement.service.c_programming;
+
+import org.springframework.stereotype.Service;
+import pc.exam.pp.module.exam.dal.dataobject.ExamQuestion;
+import pc.exam.pp.module.exam.dal.dataobject.ExamQuestionAnswer;
+import pc.exam.pp.module.exam.dal.dataobject.ExamQuestionKeyword;
+import pc.exam.pp.module.exam.utils.file.LogFileUtils;
+import pc.exam.pp.module.judgement.utils.JudgementCUtils;
+
+import java.util.*;
+
+/**
+ * 判分逻辑集合
+ *
+ * @author rwb
+ */
+@Service
+public class JudgementServiceImpl implements JudgementService
+{
+
+ /**
+ * 程序设计判分
+ * @param examQuestion 程序设计题内容
+ * @param path 文件路径
+ * @param score 分数
+ * @return 返回判分
+ */
+ public double ProgrammingC(double score, String path, ExamQuestion examQuestion) {
+
+ // 关键字比对,超过权重-测试用例/运行(测试用例全对,直接满分-不全对)-结果,不超过权重只给关键字几个的分
+ // 获取该题有多少分
+ // TODO 测试分数15,该程序设计题为15分
+ // double score = 15;
+ // 总分
+ double totalScore = 0;
+ // 测试用例结果分数
+ double compile_score = 0;
+ // 关键字分数
+ double key_score = 0;
+ // 关键字分数
+ double result_score = 0;
+
+ // 先获取题的组成部分
+ // 是否需要程序编译 (0:true;1:false)
+ boolean is_pass = Objects.equals(examQuestion.getQuestionScores().getIsPass(), "0");
+ // 是否需要程序结果 (0:true;1:false)
+ boolean is_result = Objects.equals(examQuestion.getQuestionScores().getIsResult(), "0");
+ // 是否需要关键字 (0:true;1:false)
+ boolean is_keyword = Objects.equals(examQuestion.getQuestionScores().getIsKeyword(), "0");
+ // 是否需要测试用例 (0:true;1:false)
+ boolean is_compile = Objects.equals(examQuestion.getQuestionScores().getIsCompile(), "0");
+
+ // 占比百分比
+ double is_pass_score = Integer.parseInt(examQuestion.getQuestionScores().getIsPassScore()) / 100.0;
+ double is_result_score = Integer.parseInt(examQuestion.getQuestionScores().getIsResultScore()) / 100.0;
+ double is_keyword_score = Integer.parseInt(examQuestion.getQuestionScores().getIsKeywordScore()) / 100.0;
+ double is_compile_score = Integer.parseInt(examQuestion.getQuestionScores().getIsCompileScore()) / 100.0;
+
+ // 关键字分数占比
+ double keyword_score = score * is_keyword_score;
+ // 编译分数分数占比
+ double pass_score = score * is_pass_score;
+
+ // 试卷其中有C语言的试题
+ String path_c = path + "/" + examQuestion.getQuBankName();
+ // 创建log文件txt,用于记录
+ LogFileUtils.createFile(path_c + "/log.txt");
+ String code = JudgementCUtils.readFile(path_c, examQuestion.getQuId()+".txt");
+ LogFileUtils.writeLine("✅ 系统开始读取文件:" + code);
+ if (code == null) {
+ // 如果没有读到源码
+ LogFileUtils.writeLine("❌ 系统没有读取到文件。");
+ LogFileUtils.close();
+ // 该题不得分,直接算成0分
+ return 0;
+ }
+ int true_number = 0;
+ // 关键字分数
+ if (is_keyword) {
+ // 总权重值
+ int weight = 0;
+ List