个不超过 100 的正整数,表示每道判断题的正确答案,其中 1 表示正确, 表示错误。随后 n 行,每行给出一个学生的解答,其中 表示该生选择“错误”,1 表示该生选择“正确”,数字间以空格分隔。\n\n输出格式:\n按照输入的顺序输出每个学生的得分,每个分数占一行,输出小数点后 1 位。
时间: 2023-12-17 20:04:14 浏览: 30
这道题目涉及到数学计算和字符串处理,需要将输入的字符串转化为数字进行计算,同时输出结果时需要格式化输出保留小数点后一位。下面是一份 Python 的代码示例:
```python
# 读入正确答案
answers = input().split()
# 读入学生答案并计算得分
while True:
try:
line = input().split()
score = 0
for i in range(len(answers)):
if answers[i] == line[i]:
score += 1
print("{:.1f}".format(score / len(answers) * 100)) # 输出得分,保留一位小数
except:
break
```
其中,`input()` 用于读入用户输入的字符串,`split()` 方法用于将字符串按照空格分割成一个列表。在计算得分时,我们使用一个变量 `score` 来记录正确答案的个数,然后将其除以总题目数再乘以 100 即可得到百分比分数。在输出时,我们使用了 `format()` 方法来格式化输出字符串,保留一位小数。
相关问题
输入第一行给出一个正整数 n(≤ 100),随后 n 行,每行按照 编号-答案 的格式给出一道题的 4 个选项,t 表示正确选项,f 表示错误选项。选项间用空格分隔。
### 回答1:
题目描述:
输入一个正整数 n(≤ 100),然后输入 n 行,每行表示一道题目,格式为 编号-答案,其中 t 表示正确选项,f 表示错误选项,选项之间用空格分隔。
回复:
题目要求输入 n 行,每行表示一道题目,格式为 编号-答案,其中 t 表示正确选项,f 表示错误选项,选项之间用空格分隔。其中 n 是一个不大于 100 的正整数。
### 回答2:
这个题目需要我们读入多行不同格式的输入,然后对这些输入进行处理和输出。
首先,我们可以使用 scanf() 函数读取第一行的正整数 n。然后,我们可以使用一个循环,读入后续的 n 行输入。在每一行中,我们可以使用 scanf() 函数读取题目编号和答案选项(包括正确选项和错误选项)。读取时,我们可以利用“%d-%1s %*1s %*1s %*1s”这个格式字符串来分别读取题目编号和答案选项,并且忽略其它选项。
读入完成后,我们需要对输入进行处理和输出。我们可以使用一个数组或者 map 来保存每个问题的正确选项,然后逐一读取每个问题的答案选项,和正确选项进行比较,输出相应的结果。在输出时,我们可以使用 printf() 函数来输出题目编号和结果,具体格式为“编号 答案”。
最终程序大概可以如下所示:
```
#include <cstdio>
#include <map>
using namespace std;
int main() {
int n;
scanf("%d", &n);
map<int, char> correct; // 保存每个问题的正确选项
for (int i = 0; i < n; ++i) {
int id;
char ans;
scanf("%d-%1s %*1s %*1s %*1s", &id, &ans);
correct[id] = ans;
}
int m;
scanf("%d", &m);
for (int i = 0; i < m; ++i) {
char ans[5];
scanf("%d %s", &id, ans);
bool flag = true; // 标记是否回答正确
int len = strlen(ans) - 1;
printf("Case %d: ", i + 1); // 输出结果
if (correct[id] != ans[len]) {
flag = false;
}
if (flag) {
printf("Yes\n");
} else {
printf("No\n");
}
}
return 0;
}
```
需要注意的是,多行输入和多行输出都需要结合循环来完成,且在输出时还需注意格式的控制。
### 回答3:
这是一道关于编程的问题,题目要求输入一个正整数n和n道题目,并对每道题目的正确与否进行判断。根据题目描述,每道题目的格式为:“编号-答案”,其中答案有t和f两种选项,分别表示正确和错误。
那么,我们该如何解决这道问题呢?首先,我们需要用程序读入n个字符串,每个字符串都表示一道题目。对于每个字符串,我们需要解析出题目的编号和答案,并判断答案是否正确。可以使用字符串的split方法将字符串按照“-”进行切分,得到题目的编号和答案。接着,我们需要对答案进行判断:如果是正确答案,就累加一个计数器;否则,什么也不做。
最后,我们输出正确答案的数量,即为题目的正确数量。至此,我们完成了对题目的解析和正确数量的计数,完整的代码如下所示:
#include <iostream>
#include <string>
using namespace std;
int main() {
int n;
cin >> n;
int cnt = 0; // 计数器
for (int i = 0; i < n; i++) {
string s;
cin >> s;
string id = s.substr(0, s.find("-")); // 提取题目编号
string ans = s.substr(s.find("-")+1); // 提取答案
if (ans == "t") cnt++; // 判断答案是否正确
}
cout << cnt << endl; // 输出正确答案的数量
return 0;
}
输入在第一行给出两个不超过 100 的正整数 n 和 m,分别是学生人数和判断题数量。第二行给出 m 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 n 行,每行给出一个学生的解答。数字间均以空格分隔。
题目描述:
输入两个正整数n和m,分别表示学生人数和判断题数量。接下来一行输入m个正整数,表示每道题的满分值。再接下来一行输入m个数字,表示每道题的正确答案。最后n行输入每个学生的解答,每行m个数字,表示该学生对每道题的答案。
解题思路:
首先读入n和m,以及每道题的满分值和正确答案。然后循环n次,读入每个学生的答案,并计算该学生的总分。最后输出每个学生的总分。
参考代码:
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)