PAT 1073 多选题常见计分法(测试点3,4分析)

2024-04-02 06:38

本文主要是介绍PAT 1073 多选题常见计分法(测试点3,4分析),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:请点击
分析:与1058相似
1 错误选项应包含以下2种情形:其一,是选错的;其二,是正确选项但是未选的
2 哪些题算是“错的多的题目” 这里是在所有选项中找出最多错误选项。而不是先找最多错误的题目,再找该题目中寻找最大错误选项
这也是测点3与4错误原因。(第一次测点3与4未过,参考1)

AC代码

#include<iostream>
using namespace std;
struct Que{int score;//每道题的分值int optNum;//选项个数int rigOptNum;//正确选项个数int rigOpts[5]={0};//(0错误1正确)下标分别对应a、b... int errNum=0;//错误数量int errOpts[5]={0};//错误选项数量 下标对应a... 
};
int main(){int N,M,maxErr=0;//maxErr是最大选项错误数量 cin>>N>>M;Que que[M];//que输入题目信息for(int i=0;i<M;i++){cin>>que[i].score>>que[i].optNum>>que[i].rigOptNum;for(int j=0;j<que[i].rigOptNum;j++){char opt; cin>>opt;que[i].rigOpts[opt-'a']=1; }} for(int i=0;i<N;i++){scanf("\n");float stuScore=0;//第i个学生分数 for(int j=0;j<M;j++){int num,flag=1;//分别为第i个学生第j题的选项数与此题是否正确 scanf("(%d",&num);int opts[5]={0};//记录漏选的选项 for(int k=0;k<num;k++){char opt;scanf(" %c",&opt); opts[opt-'a']=1; if(que[j].rigOpts[opt-'a']==0){//错选que[j].errOpts[opt-'a']+=1;//第j题第(a..)选项错误数量++ flag=0; } } scanf(")");if(j!=M-1) scanf(" ");//吸收空格 注意最后一个选项后无空格 for(int k=0;k<5;k++){//记录是正确选项但却未选的 if(que[j].rigOpts[k]==1&&opts[k]==0) que[j].errOpts[k]++;if(i==N-1&&maxErr<que[j].errOpts[k]) maxErr=que[j].errOpts[k];} if(flag){if(num==que[j].rigOptNum) stuScore+=que[j].score;//全对 else stuScore+=que[j].score*1.0/2;//半对} else que[j].errNum++;//第j题错误数量++ }printf("%.1f\n",stuScore); } if(maxErr==0){cout<<"Too simple"<<endl;return 0;}for(int i=0;i<M;i++){for(int j=0;j<5;j++){if(que[i].errOpts[j]==maxErr) cout<<maxErr<<" "<<i+1<<"-"<<(char)(j+'a')<<endl;}}return 0;
}

这篇关于PAT 1073 多选题常见计分法(测试点3,4分析)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869242

相关文章

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹