【欢迎关注微信公众号:计算机黑科学大全,对话框回复:PAT乙级真题】获取全部真题详解及代码示例
个人博客地址:https://mzwang.top

选择题

题目描述:

批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多。

输入格式:

输入在第一行给出两个正整数 N(≤ 1000)和 M(≤ 100),分别是学生人数和多选题的个数。随后 M 行,每行顺次给出一道题的满分值(不超过 5 的正整数)、选项个数(不少于 2 且不超过 5 的正整数)、正确选项个数(不超过选项个数的正整数)、所有正确选项。注意每题的选项从小写英文字母 a 开始顺次排列。各项间以 1 个空格分隔。最后 N 行,每行给出一个学生的答题情况,其每题答案格式为 (选中的选项个数 选项1 ……),按题目顺序给出。注意:题目保证学生的答题情况是合法的,即不存在选中的选项数超过实际选项数的情况。

输出格式:

按照输入的顺序给出每个学生的得分,每个分数占一行。注意判题时只有选择全部正确才能得到该题的分数。最后一行输出错得最多的题目的错误次数和编号(题目按照输入的顺序从 1 开始编号)。如果有并列,则按编号递增顺序输出。数字间用空格分隔,行首尾不得有多余空格。如果所有题目都没有人错,则在最后一行输出 Too simple

输入样例:

3 4
3 4 2 a c
2 5 1 b
5 3 2 b c
1 5 4 a b d e
(2 a c) (2 b d) (2 a c) (3 a b e)
(2 a c) (1 b) (2 a b) (4 a b d e)
(2 b d) (1 e) (2 b c) (4 a b c d)

输出样例:

3
6
5
2 2 3 4

题目来源:PAT乙级1058
作者:CHEN, Yue
单位:浙江大学

问题解决:

解题思想

从描述来看,该题看似很复杂但其实处理过程并不复杂。其中,有一些信息是无用干扰信息,比如选项个数(不少于 2 且不超过 5 的正整数)、正确选项个数(不超过选项个数的正整数)以及学生的答题情况中选中的选项个数等都是用不到的。

读入每个题的信息时可用%*d过滤掉不需要的信息,将正确选项以字符串形式存入,某同学的对该题的选项也以字符串的形式读入,之后判断某同学对该题的选择是否正确时,只需用strcmp()函数即可,还要设置一个变量统计最大错误次数,以便对最后一行输出的处理。

代码示例(C/C++)

小提示:请将以下代码保存为.cpp格式(C++程序)左右滑动代码以查看完整代码(复制本文链接到电脑端浏览效果更佳)

#include <cstdio>
#include <cstring>
using namespace std;
struct mc   //多选题的信息
{int ts,ernum = 0;   //ts为该题的满分分数,ernum为该题错误次数char str[6];    //选项
}mc[101];
char ans[101][6];  //每个学生答题情况
int main()
{int n,m;char c;scanf("%d%d",&n,&m);for(int i = 0; i < m; i++){scanf("%d%*d%*d",&mc[i].ts);    //只需存入满分分数int j = 0;while((c = getchar()) != '\n'){ //正确选项以字符串形式存入if(c >= 'a'&&c <= 'e'){mc[i].str[j++] = c;}}mc[i].str[j] = '\0';}int maxe = 0;   //最大错误次数for(int i = 0; i < n; i++){int s = 0;for(int k = 0; k < m; k++){int j = 0;while((c = getchar()) != ')'){  //提取出该同学对某题的选项if(c >= 'a'&&c <= 'e'){ans[k][j++] = c;}}ans[k][j] = '\0';if(!strcmp(ans[k],mc[k].str)){  //判断选项是否正确s += mc[k].ts;}else{mc[k].ernum++;  //错误时累积该题的错误次数if(mc[k].ernum > maxe){maxe = mc[k].ernum; //更新最大错误次数}}}printf("%d\n",s);}if(maxe == 0){printf("Too simple");}else{printf("%d",maxe);for(int i = 0; i < m; i++){if(mc[i].ernum == maxe){printf(" %d",i + 1);    //注意格式}}}return 0;
}

PAT乙级真题1058 || 选择题(详解,C/C++示例,测试点分析)相关推荐

  1. 「PAT乙级真题解析」Basic Level 1072 开学寄语 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1072 开学寄语 问题分析 题设要求查找学 ...

  2. 「PAT乙级真题解析」Basic Level 1031 查验身份证 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT乙级BasicLevelPractice 1031 问题分析 我们看到题目详细地描述了 ...

  3. 「PAT乙级真题解析」Basic Level 1082 射击比赛 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1082 射击比赛 问题分析 题设给定 ...

  4. PAT乙级真题 1075 链表元素分类 C++实现(测试点5:用map会超时)

    题目 给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而 [0, K] 区间内的元素都排在大于 K 的元素前面.但每一类内部元素的顺序是不能改变的.例如:给定 ...

  5. PAT乙级真题1089 || 狼人杀-简单版(详解,C/C++示例,测试点分析)

    [欢迎关注微信公众号:计算机黑科学大全,在对话框回复:PAT乙级真题]获取全部真题详解及代码示例,邀请大家加入PAT算法刷题交流qq群:821388108 个人博客:https://mzwang.to ...

  6. 【PTA】 PAT乙级真题,95题(C++,AC代码)

    PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...

  7. 1085 PAT单位排行 (25分)-PAT乙级真题-C++实现

    1085 PAT单位排行 (25分)-PAT乙级真题-C++实现 题目描述: 每次 PAT 考试结束后,考试中心都会发布一个考生单位排行榜.本题就请你实现这个功能. 输入格式: 输入第一行给出一个正整 ...

  8. 2022年Java面试总结,200多页真题笔记和详解(核心考点、6家大厂)

    为了进大厂,花了很多时间和精力在面试准备上,也刷了很多题.但题刷多了有点怀疑人生,不知道刷的这些题在之后的工作中能不能用到,如果只是为面试而刷题是不是在浪费人生呢? 如果你想进大厂,或者去一个更大.更 ...

  9. 【Java】PAT乙级真题全记录(三)41到60题

    PAT乙级41到60题练习代码全纪录 1041 考试座位号 1042 字符统计 1043 输出PATest 1044 火星数字 1045 快速排序(1.3.4.5测试点运行超时) 1046 划拳 10 ...

最新文章

  1. swift 简单风格的Toaster
  2. 解决PHP下载文件名中文乱码
  3. 稳扎稳打Silverlight(33) - 3.0控件之AutoCompleteBox, DataPager
  4. c++实现时间轴,时间管理器
  5. 移动计算机怎么开机密码,win7忘记开机密码解决办法
  6. JavaScript进阶学习(二)—— 基于原型链继承的js工具库的实现方法
  7. 华为平板wps语音朗读_打工人必备的手机端WPS小技巧
  8. 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...
  9. 深度学习进阶NLP:word2vec的高速化
  10. mysql front连接_mysql server连接mysql-front方法
  11. #EDA(电子设计自动化)
  12. Element el-input-number 计数器详解
  13. 高速公路超速处罚:按照规定,在高速公路上行驶的机动车,超出本车道限速的10%则处200元的罚款;若超出50%,就要吊销驾驶证。请编写
  14. python 气泡图 聚类_R可视化 | 气泡图
  15. 用迭代算法实现扭蛋机例子
  16. H263、H264和3GPP、MPEG4是什么关系
  17. 新版MinGW-w64(12.2.0)安装
  18. 学习笔记1 - ResNet网络学习
  19. SQLalchemy 转载学习(学习了中间relationship内部cascade参数的部分)
  20. 890-git安装教程github创建仓库

热门文章

  1. 从张小平这样登月人才的离职事件,看团队期望管理的重要性
  2. 苹果手机怎么编辑word文档_Word文档怎么转化为pdf格式?办公必备方法!
  3. Anaconda + tensorflow + win10 安装
  4. App Store审核指南中文版
  5. 对面积的曲面积分中dS与dxdy的转换
  6. kali系统升级(包含软件信息、所有软件、整个系统)
  7. 虚拟化 半虚拟化 全虚拟化_我的虚拟实习经历
  8. 2.18 haas506 2.0开发教程 - 阿里云M2M设备间通信 - 规则引擎/Topic消息路由(仅支持2.2以上版本)
  9. Halcon高斯背景估计--estimate_background_illumination
  10. 毕节一中2021高考成绩查询,毕节第一中学2021年招生录取分数线