输入在第一行给出两个不超过 100 的正整数 n 和 m,分别是学生人数和判断题数量。第二行给出 m 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表
时间: 2023-05-31 17:18:03 浏览: 191
### 回答1:
“是”。接下来n行,每行给出一个学生的解答。数字间均以空格分隔。
输出在一行中输出每个学生的得分,题目间以空格分隔。题目按照输入的顺序输出。
样例输入:
5 6
3 2 1 5 4 6
1 1 1 1
1 1 1
1 1 1
1 1 1 1 1
1 1
1 1 1
样例输出:
17 9 15 19 14
解释:
第一个学生得分为:3++1+5++8=17
第二个学生得分为:++1++4+4=9
第三个学生得分为:3++1++4+7=15
第四个学生得分为:3+2+1++4+9=19
第五个学生得分为:3++++4+=14
### 回答2:
这是一道考场题目,要求我们计算每个学生的得分。首先,我们可以用一个二维数组存储每个学生对每道题的答案,数组的行数为学生人数,列数为判断题数量。然后,再用一个一维数组存储每道题的满分值。再读入每道题对应的正确答案,即可开始计算每个学生的得分。具体来说,对于每个学生,遍历每道题的答案,如果该题的答案与正确答案相同,则累加该题的满分值,否则不加分,最终输出每个学生的得分即可。需要注意的是,题目中给出的正确答案是 0 和 1,但是我们应该将其转换为 bool 或 int 类型,以方便比较。以下是示例代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int score[m];
for (int i = 0; i < m; i++) {
cin >> score[i];
}
bool answer[m];
for (int i = 0; i < m; i++) {
cin >> answer[i];
}
int totalScore = 0;
for (int i = 0; i < n; i++) {
int studentScore = 0;
for (int j = 0; j < m; j++) {
bool ans;
cin >> ans;
if (ans == answer[j]) {
studentScore += score[j];
}
}
cout << studentScore << endl;
totalScore += studentScore;
}
cout << totalScore << endl;
return 0;
}
```
### 回答3:
这道题目需要读入2个整数n和m,分别表示学生人数和题目数。接着需要读入m个不超过5的正整数,表示每道题的分值。最后读入每道题的正确答案。
为了解决该问题,我们需要首先读入学生的答案,即n行m个01字符串。对于每个学生的答案,我们需要计算他的总分数。具体来说,我们可以遍历题目(对于每个题目i),统计每个学生的第i个答案是否正确,如果正确,则累加上该题目的满分值。
最后,我们遍历所有学生的总分数,打印出“学生i的得分是j”的信息。
以下是该问题的python3实现:
n, m = map(int, input().split())
scores = list(map(int, input().split()))
answers = list(map(int, input().split()))
student_scores = []
for i in range(n):
student_answers = list(map(int, input().split()))
student_score = sum([scores[j] * (answers[j] == student_answers[j]) for j in range(m)])
student_scores.append(student_score)
for i in range(n):
print("学生%d的得分是%d" % (i+1, student_scores[i]))
上述代码中,我们先读入输入数据,然后遍历每个学生的答案,计算每个学生的总分数,并保存在student_scores数组中。最后,我们依次输出每个学生的得分。
阅读全文