#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <time.h>\n\n// \u5B9A\u4E49\u6700\u5927\u8BD5\u9898\u6570\u91CF\n#define MAX_QUESTIONS 100\n\n// \u5B9A\u4E49\u8BD5\u9898\u7ED3\u6784\u4F53\ntypedef struct {\n char question[100]; // \u8BD5\u9898\u5185\u5BB9\n char options[4][50]; // \u9009\u9879\n int answer; // \u6B63\u786E\u7B54\u6848\u7684\u9009\u9879\u5E8F\u53F7\n} Question;\n\n// \u5B9A\u4E49\u7528\u6237\u7ED3\u6784\u4F53\ntypedef struct {\n char name[50]; // \u7528\u6237\u540D\n int score; // \u5206\u6570\n time_t timestamp; // \u7B54\u9898\u65F6\u95F4\n} User;\n\n// \u5168\u5C40\u53D8\u91CF\nQuestion questions[MAX_QUESTIONS]; // \u8BD5\u9898\u6570\u7EC4\nint numQuestions = 0; // \u5F53\u524D\u8BD5\u9898\u6570\u91CF\n\n// \u51FD\u6570\u5BA3\u660E\nvoid addQuestion();\nvoid modifyQuestion();\nvoid deleteQuestion();\nQuestion extractQuestion();\nvoid displayScore(User user);\n\nint main() {\n int choice;\n User user;\n strcpy(user.name, "John"); // \u8BBE\u7F6E\u7528\u6237\u540D\n\n do {\n printf("======= \u5355\u9879\u9009\u62E9\u9898\u6807\u51C6\u5316\u8003\u8BD5\u7CFB\u7EDF =======");\n printf("1. \u6DFB\u52A0\u8BD5\u9898");\n printf("2. \u4FEE\u6539\u8BD5\u9898");\n printf("3. \u5220\u9664\u8BD5\u9898");\n printf("4. \u62BD\u53D6\u8BD5\u9898");\n printf("5. \u5F00\u59CB\u8003\u8BD5");\n printf("6. \u9000\u51FA");\n printf("\u8BF7\u8F93\u5165\u60A8\u7684\u9009\u62E9\uFF1A");\n scanf("%d", &choice);\n\n switch (choice) {\n case 1:\n addQuestion();\n break;\n case 2:\n modifyQuestion();\n break;\n case 3:\n deleteQuestion();\n break;\n case 4:\n extractQuestion();\n break;\n case 5:\n // \u5F00\u59CB\u8003\u8BD5\n user.score = 0;\n user.timestamp = time(NULL);\n // \u5728\u6B64\u5904\u5199\u4F5C\u8003\u8BD5\u903B\u8F91\n printf("\u8003\u8BD5\u7ED3\u675F\uFF01");\n displayScore(user);\n break;\n case 6:\n printf("\u611F\u8C22\u4F7F\u7528\uFF01");\n break;\n default:\n printf("\u65E0\u6548\u7684\u9009\u62E9\uFF01");\n break;\n }\n\n printf("\n");\n } while (choice != 6);\n\n return 0;\n}\n\nvoid addQuestion() {\n if (numQuestions == MAX_QUESTIONS) {\n printf("\u8BD5\u9898\u6570\u91CF\u5DF2\u8FBE\u5230\u4E0A\u9650\uFF0C\u65E0\u6CD5\u6DFB\u52A0\u66F4\u591A\u8BD5\u9898\uFF01");\n return;\n }\n\n Question newQuestion;\n getchar(); // \u6E05\u9664\u8F93\u5165\u7F13\u51B5\u533A\u57DF\u4E2D\u7684\u6362\u884C\u7B26\n\n printf("\u8BF7\u8F93\u5165\u8BD5\u9898\u5185\u5BB9\uFF1A");\n fgets(newQuestion.question, sizeof(newQuestion.question), stdin);\n newQuestion.question[strlen(newQuestion.question) - 1] = '\0'; // \u53BB\u9664\u672B\u5C3E\u7684\u6362\u884C\u7B26\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879A\uFF1A");\n fgets(newQuestion.options[0], sizeof(newQuestion.options[0]), stdin);\n newQuestion.options[0][strlen(newQuestion.options[0]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879B\uFF1A");\n fgets(newQuestion.options[1], sizeof(newQuestion.options[1]), stdin);\n newQuestion.options[1][strlen(newQuestion.options[1]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879C\uFF1A");\n fgets(newQuestion.options[2], sizeof(newQuestion.options[2]), stdin);\n newQuestion.options[2][strlen(newQuestion.options[2]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879D\uFF1A");\n fgets(newQuestion.options[3], sizeof(newQuestion.options[3]), stdin);\n newQuestion.options[3][strlen(newQuestion.options[3]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u6B63\u786E\u7B54\u6848\u7684\u9009\u9879\u5E8F\u53F7\uff081-4\uff09\uFF1A");\n scanf("%d", &newQuestion.answer);\n\n questions[numQuestions++] = newQuestion;\n printf("\u8BD5\u9898\u6DFB\u52A0\u6210\u529F\uFF01");\n}\n\nvoid modifyQuestion() {\n if (numQuestions == 0) {\n printf("\u5F53\u524D\u6CA1\u6709\u8BD5\u9898\u53EF\u4EE5\u4FEE\u6539\uFF01");\n return;\n }\n\n int idx;\n printf("\u8BF7\u8F93\u5165\u8981\u4FEE\u6539\u7684\u8BD5\u9898\u5E8F\u53F7\uff081-%d\uff09\uFF1A", numQuestions);\n scanf("%d", &idx);\n\n if (idx < 1 || idx > numQuestions) {\n printf("\u65E0\u6548\u7684\u8BD5\u9898\u5E8F\u53F7\uFF01");\n return;\n }\n\n Question modifiedQuestion;\n getchar(); // \u6E05\u9664\u8F93\u5165\u7F13\u51B5\u533A\u57DF\u4E2D\u7684\u6362\u884C\u7B26\n\n printf("\u8BF7\u8F93\u5165\u8BD5\u9898\u5185\u5BB9\uFF1A");\n fgets(modifiedQuestion.question, sizeof(modifiedQuestion.question), stdin);\n modifiedQuestion.question[strlen(modifiedQuestion.question) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879A\uFF1A");\n fgets(modifiedQuestion.options[0], sizeof(modifiedQuestion.options[0]), stdin);\n modifiedQuestion.options[0][strlen(modifiedQuestion.options[0]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879B\uFF1A");\n fgets(modifiedQuestion.options[1], sizeof(modifiedQuestion.options[1]), stdin);\n modifiedQuestion.options[1][strlen(modifiedQuestion.options[1]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879C\uFF1A");\n fgets(modifiedQuestion.options[2], sizeof(modifiedQuestion.options[2]), stdin);\n modifiedQuestion.options[2][strlen(modifiedQuestion.options[2]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u9009\u9879D\uFF1A");\n fgets(modifiedQuestion.options[3], sizeof(modifiedQuestion.options[3]), stdin);\n modifiedQuestion.options[3][strlen(modifiedQuestion.options[3]) - 1] = '\0';\n\n printf("\u8BF7\u8F93\u5165\u6B63\u786E\u7B54\u6848\u7684\u9009\u9879\u5E8F\u53F7\uff081-4\uff09\uFF1A");\n scanf("%d", &modifiedQuestion.answer);\n\n questions[idx - 1] = modifiedQuestion;\n printf("\u8BD5\u9898\u4FEE\u6539\u6210\u529F\uFF01");\n}\n\nvoid deleteQuestion() {\n if (numQuestions == 0) {\n printf("\u5F53\u524D\u6CA1\u6709\u8BD5\u9898\u53EF\u4EE5\u5220\u9664\uFF01");\n return;\n }\n\n int idx;\n printf("\u8BF7\u8F93\u5165\u8981\u5220\u9664\u7684\u8BD5\u9898\u5E8F\u53F7\uff081-%d\uff09\uFF1A", numQuestions);\n scanf("%d", &idx);\n\n if (idx < 1 || idx > numQuestions) {\n printf("\u65E0\u6548\u7684\u8BD5\u9898\u5E8F\u53F7\uFF01");\n return;\n }\n\n for (int i = idx - 1; i < numQuestions - 1; i++) {\n questions[i] = questions[i + 1];\n }\n\n numQuestions--;\n printf("\u8BD5\u9898\u5220\u9664\u6210\u529F\uFF01");\n}\n\nQuestion extractQuestion() {\n if (numQuestions == 0) {\n printf("\u5F53\u524D\u6CA1\u6709\u8BD5\u9898\u53EF\u4EE5\u62BD\u53D6\uFF01");\n return;\n }\n\n srand(time(NULL)); // \u6839\u636E\u5F53\u524D\u65F6\u95F4\u79CD\u5B50\u8BBE\u7F6E\u968F\u673A\u6570\u751F\u6210\u5668\n\n int idx = rand() % numQuestions; // \u751F\u6210\u4E00\u4E2A\u968F\u673A\u7684\u8BD5\u9898\u5E8F\u53F7\n\n Question extractedQuestion = questions[idx];\n\n // \u62BD\u53D6\u6210\u529F\u540E\u4ECE\u8BD5\u9898\u6570\u7EC4\u4E2D\u5220\u9664\u8BE5\u8BD5\u9898\n for (int i = idx; i < numQuestions - 1; i++) {\n questions[i] = questions[i + 1];\n }\n\n numQuestions--;\n\n printf("\u62BD\u53D6\u7684\u8BD5\u9898\u5185\u5BB9\u4E3A\uFF1A");\n printf("\u9898\u76EE\uFF1A%s", extractedQuestion.question);\n printf("\u9009\u9879A\uFF1A%s", extractedQuestion.options[0]);\n printf("\u9009\u9879B\uFF1A%s", extractedQuestion.options[1]);\n printf("\u9009\u9879C\uFF1A%s", extractedQuestion.options[2]);\n printf("\u9009\u9879D\uFF1A%s", extractedQuestion.options[3]);\n\n return extractedQuestion;\n}\n\nvoid displayScore(User user) {\n printf("\u7528\u6237\uFF1A%s", user.name);\n printf("\u5206\u6570\uFF1A%d", user.score);\n printf("\u7B54\u9898\u65F6\u95F4\uFF1A%s", ctime(&user.timestamp));\n

C语言单项选择题考试系统:试题管理、自动评分

原文地址: https://www.cveoy.top/t/topic/pyY6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录