PAT乙级真题1061 || 判断题(详解,C/C++示例,测试点分析)

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

判断题

题目描述:

判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。

输入格式:

输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。

输出格式:

按照输入的顺序输出每个学生的得分,每个分数占一行。

输入样例:

3 6
2 1 3 3 4 5
0 0 1 0 1 1
0 1 1 0 0 1
1 0 1 0 1 0
1 1 0 0 1 1

输出样例:

13
11
12

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

问题解决:

解题思想

简单的逻辑题,按要求统计处理输出即可。判断某同学的答案是否正确时,可以用下方代码的==

if(a == ans[j])

也可用异或运算符^

if(!(a ^ ans[j]))

代码示例(C/C++)

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

#include 
using namespace std;
int main()
{
     
    int n,m,tc[100],ans[100];   //数组tc为满分值,ans为正确答案
    scanf("%d%d",&n,&m);
    for(int i = 0; i < m; i++) {
     
        scanf("%d",&tc[i]);
    }
    for(int i = 0; i < m; i++) {
     
        scanf("%d",&ans[i]);
    }
    for(int i = 0; i < n; i++) {
     
        int sum = 0,a;  //sum统计每个学生的得分,a临时存入选择
        for(int j = 0; j < m; j++) {
     
            scanf("%d",&a);
            if(a == ans[j]){
     
                sum += tc[j];
            }
        }
        printf("%d\n",sum);
    }
    return 0;
}

微信号:aiyoutao76

你可能感兴趣的:(PAT乙级真题详解)