用c语言编写一个完整的程序解决下面问题 问题描述:将单项选择题考试的题目和标准答案制作成数据文件,在考试人选择答题后显示题目,在答题人答题完毕后自动与标准答案比对并给出评判结果。实现功能:1、有良好的人机交互功能提示用户下一步的操作。 2、在用户答题完毕后自动显示下一道题目 3、答题完毕后显示答题的总信息和标准答案的比对及评分结果 4、信息都需要保存在文件中

时间: 2023-04-04 09:01:49 浏览: 58
以下是一个用 C 语言编写的程序,可以解决单项选择题考试的题目和标准答案的比对及评分问题: #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_QUESTIONS 100 // 最大题目数量 #define MAX_OPTIONS 4 // 每道题目的最大选项数量 #define MAX_ANSWER_LENGTH 10 // 每个选项的最大长度 #define MAX_NAME_LENGTH 50 // 文件名的最大长度 // 定义题目结构体 typedef struct { char question[100]; // 题目 char options[MAX_OPTIONS][MAX_ANSWER_LENGTH]; // 选项 int answer; // 正确答案 } Question; // 定义考试结果结构体 typedef struct { int total; // 总题数 int correct; // 正确答案数量 int wrong; // 错误答案数量 } Result; // 读取题目和答案文件 int read_questions(Question *questions, char *filename) { FILE *fp = fopen(filename, "r"); if (fp == NULL) { printf("无法打开文件 %s\n", filename); return ; } int count = ; char line[200]; while (fgets(line, sizeof(line), fp) != NULL) { char *p = strtok(line, ","); strcpy(questions[count].question, p); for (int i = ; i < MAX_OPTIONS; i++) { p = strtok(NULL, ","); if (p == NULL) { break; } strcpy(questions[count].options[i], p); } p = strtok(NULL, ","); if (p != NULL) { questions[count].answer = atoi(p); } count++; } fclose(fp); return count; } // 显示题目 void show_question(Question *question) { printf("%s\n", question->question); for (int i = ; i < MAX_OPTIONS; i++) { if (strlen(question->options[i]) == ) { break; } printf("%c. %s\n", 'A' + i, question->options[i]); } } // 获取用户输入的答案 int get_answer() { char line[10]; fgets(line, sizeof(line), stdin); return line[] - 'A'; } // 比对答案并返回结果 int check_answer(Question *question, int answer) { return question->answer == answer; } // 显示考试结果 void show_result(Result *result) { printf("总题数:%d\n", result->total); printf("正确答案:%d\n", result->correct); printf("错误答案:%d\n", result->wrong); } // 保存考试结果到文件 void save_result(Result *result, char *filename) { FILE *fp = fopen(filename, "w"); if (fp == NULL) { printf("无法打开文件 %s\n", filename); return; } fprintf(fp, "总题数:%d\n", result->total); fprintf(fp, "正确答案:%d\n", result->correct); fprintf(fp, "错误答案:%d\n", result->wrong); fclose(fp); } int main() { Question questions[MAX_QUESTIONS]; Result result = {, , }; char filename[MAX_NAME_LENGTH]; printf("请输入题目和答案文件名:"); fgets(filename, sizeof(filename), stdin); filename[strlen(filename) - 1] = '\'; int count = read_questions(questions, filename); if (count == ) { return ; } printf("考试开始!\n"); for (int i = ; i < count; i++) { printf("第 %d 题:\n", i + 1); show_question(&questions[i]); printf("请输入答案:"); int answer = get_answer(); if (check_answer(&questions[i], answer)) { printf("回答正确!\n"); result.correct++; } else { printf("回答错误!\n"); result.wrong++; } result.total++; } printf("考试结束!\n"); show_result(&result); char result_filename[MAX_NAME_LENGTH]; printf("请输入考试结果保存文件名:"); fgets(result_filename, sizeof(result_filename), stdin); result_filename[strlen(result_filename) - 1] = '\'; save_result(&result, result_filename); return ; }

相关推荐

最新推荐

recommend-type

数据结构(C语言版)1800道题及答案[完整版].doc

数据结构(C语言)1800道题与答案,数据结构,C语言,题目与答案,可用于复习考研,可做学习用。童叟无欺
recommend-type

c语言题库问题和答案.docx

XAUT OJ刷题答案 1004 选择结构习题:奇偶数判断 65%(4810/7381) 38% 2020-4-23 1007 循环结构习题:输入两个整数,输出它们的最大公约数 66%(4379/6621) 36% 2020-4-23 1008 顺序结构习题:求三个数的平均值 63%...
recommend-type

使用C语言编写圣诞表白程序

圣诞节快到了,让我们用C语言制作一个圣诞表白程序吧,下面通过本文学习下实现代码
recommend-type

C语言使用广度优先搜索算法解决迷宫问题(队列)

主要介绍了C语言使用广度优先搜索算法解决迷宫问题,结合迷宫问题分析了C语言队列广度优先搜索算法的相关使用技巧,需要的朋友可以参考下
recommend-type

C语言:一元多项式加减法运算(链表 附答案).docx

C语言链表的入门题,里面提供了两种思路供参考,用链表来实现一元多项式的加减法,并按照一定规律输出。也是练习链表和排序算法的一道小实验,初学链表的小伙伴可以参考参考噢
recommend-type

Spring 应用开发手册

Spring 应用开发手册 本书《Spring 应用开发手册》是一本全面介绍 Spring 框架技术的开发手册。本书共分为四篇,二十章,涵盖了 Spring 框架开发环境的搭建、使用 Spring 时必须掌握的基础知识、数据持久化、事务管理、企业应用中的远程调用、JNDI 命名服务、JMail 发送电子邮件等企业级服务等内容。 **Spring 框架开发环境的搭建** 本书第一部分主要介绍了 Spring 框架开发环境的搭建,包括安装 Spring 框架、配置 Spring 框架、使用 Spring 框架开发企业应用程序等内容。 **使用 Spring 时必须掌握的基础知识** 第二部分主要介绍了使用 Spring 框架开发应用程序时必须掌握的基础知识,包括 Spring 框架的体系结构、Spring 框架的配置、Spring 框架的 IoC 容器等内容。 **数据持久化** 第三部分主要介绍了 Spring 框架中的数据持久化技术,包括使用 Hibernate 进行数据持久化、使用 JDBC 进行数据持久化、使用 iBATIS 进行数据持久化等内容。 **事务管理** 第四部分主要介绍了 Spring 框架中的事务管理技术,包括使用 Spring 框架进行事务管理、使用 JTA 进行事务管理、使用 Hibernate 进行事务管理等内容。 **企业应用中的远程调用** 第五部分主要介绍了 Spring 框架中的远程调用技术,包括使用 RMI 进行远程调用、使用 Web 服务进行远程调用、使用 EJB 进行远程调用等内容。 **JNDI 命名服务** 第六部分主要介绍了 Spring 框架中的 JNDI 命名服务技术,包括使用 JNDI 进行命名服务、使用 LDAP 进行命名服务等内容。 **JMail 发送电子邮件** 第七部分主要介绍了 Spring 框架中的电子邮件发送技术,包括使用 JMail 发送电子邮件、使用 JavaMail 发送电子邮件等内容。 **小型网站或应用程序的开发思路、方法和典型应用模块** 第八部分主要介绍了小型网站或应用程序的开发思路、方法和典型应用模块,包括使用 Spring 框架开发小型网站、使用 Struts 框架开发小型应用程序等内容。 **运用 Spring+Hibernate 开发校园管理系统** 第九部分主要介绍了使用 Spring 框架和 Hibernate 框架开发校园管理系统的技术,包括使用 Spring 框架进行系统设计、使用 Hibernate 框架进行数据持久化等内容。 **运用 Spring+Struts+Hibernate 开发企业门户网站** 第十部分主要介绍了使用 Spring 框架、Struts 框架和 Hibernate 框架开发企业门户网站的技术,包括使用 Spring 框架进行系统设计、使用 Struts 框架进行视图层开发、使用 Hibernate 框架进行数据持久化等内容。 **运用 Spring+JavaSwing 开发企业进销存管理系统** 第十一部分主要介绍了使用 Spring 框架和 JavaSwing 框架开发企业进销存管理系统的技术,包括使用 Spring 框架进行系统设计、使用 JavaSwing 框架进行视图层开发等内容。 《Spring 应用开发手册》是一本非常实用的开发手册,涵盖了 Spring 框架开发的方方面面,非常适合各级程序开发人员学习参考。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

扩展MATLAB能力:与其他编程语言集成的实用指南

![扩展MATLAB能力:与其他编程语言集成的实用指南](https://au.mathworks.com/company/technical-articles/generating-c-code-from-matlab-for-use-with-java-and-net-applications/_jcr_content/mainParsys/image_1.adapt.full.medium.jpg/1469941341391.jpg) # 1. MATLAB与其他编程语言集成的概述 MATLAB是一种广泛用于科学计算和工程领域的编程语言。它提供了强大的数学函数库和工具,使其成为解决复杂
recommend-type

引发C++软件异常的常见原因

1. 内存错误:内存溢出、野指针、内存泄漏等; 2. 数组越界:程序访问了超出数组边界的元素; 3. 逻辑错误:程序设计错误或算法错误; 4. 文件读写错误:文件不存在或无法打开、读写权限不足等; 5. 系统调用错误:系统调用返回异常或调用参数错误; 6. 硬件故障:例如硬盘损坏、内存损坏等; 7. 网络异常:网络连接中断、网络传输中断、网络超时等; 8. 程序异常终止:例如由于未知原因导致程序崩溃等。
recommend-type

Dreamweaver制作ASP动态网页与access数据库连接教程

Dreamweaver制作ASP动态网页与access数据库连接教程,doc文档,有图解有步骤,很清楚,跟着做就行!很适合初学者使用!也适合非计算机专业学生完成老师的作业---如果你不太会!