写出PTA中6-2 统计专业人数题目答案
时间: 2024-03-14 11:45:46 浏览: 24
根据题目描述,我们需要统计指定专业的学生人数。具体来说,我们需要读入一个整数 N,表示学生的总人数,然后再读入 N 行数据,每行数据包含两个字符串 S 和 T,表示该学生的姓名和所在专业。我们需要统计指定专业的学生人数,并输出结果。
以下是参考代码(C++实现):
```c++
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
int n;
string s, t;
map<string, int> cnt; // 用map存储每个专业的人数
cin >> n;
while (n--) {
cin >> s >> t;
cnt[t]++; // 统计每个专业的人数
}
cin >> t; // 读入指定专业
cout << cnt[t] << endl; // 输出结果
return 0;
}
```
例如,输入数据如下:
```
5
Tom CS
Jerry EE
Mike EE
Mary CE
John CS
EE
```
则输出结果为:
```
2
```
表示 EE 专业的学生人数为 2。
相关问题
pta 7-8 成绩统计2
好的,这里给出 PTA 7-8 成绩统计2 的题目描述和 Python 3 代码实现。
## 题目描述
本题要求读入 N(1 <= N <= 1000)个成绩,统计其中的优秀(>=85)、良好([70, 85))、及格([60, 70))和不及格(<60)的人数,并输出统计结果。当某一类成绩的人数为0时,不输出该行。
## 输入格式
输入的第一行为正整数 N,表示输入成绩的个数。
接下来 N 行,每行为一个整数,表示一个成绩。
## 输出格式
统计结果,四行,每行输出一个整数,分别表示优秀、良好、及格和不及格的人数。
## 输入样例
```
10
60
75
90
55
70
82
100
67
74
80
```
## 输出样例
```
2
5
2
1
```
## 代码实现
```python
n = int(input()) # 输入成绩个数
# 初始化四个计数器,分别统计优秀、良好、及格和不及格的人数
excellent = 0
good = 0
passing = 0
failing = 0
# 循环读入 n 个成绩,并统计各个类别的人数
for i in range(n):
score = int(input()) # 读入一个成绩
if score >= 85:
excellent += 1
elif score >= 70:
good += 1
elif score >= 60:
passing += 1
else:
failing += 1
# 输出各个类别的人数(如果人数为 0,则不输出该行)
if excellent > 0:
print(excellent)
else:
print("N/A")
if good > 0:
print(good)
else:
print("N/A")
if passing > 0:
print(passing)
else:
print("N/A")
if failing > 0:
print(failing)
else:
print("N/A")
```
代码说明:
1. 首先输入成绩个数 n;
2. 然后初始化四个计数器 excellent、good、passing 和 failing,分别用于统计优秀、良好、及格和不及格的人数,初始值都为 0;
3. 接着使用 for 循环,循环 n 次,每次读入一个成绩 score,并使用 if 语句判断该成绩属于哪个类别,然后累加相应的计数器;
4. 循环结束后,使用 if 语句,判断各个类别的人数是否为 0,如果不为 0,则输出该类别的人数,否则输出 "N/A"。
5. 完成以上步骤,即可得到各个类别的人数统计结果。
希望能帮助到您!
pta6-2 二叉树的遍历用Java写出来
这里给出二叉树的先序遍历、中序遍历、后序遍历以及层序遍历的 Java 代码实现。
定义二叉树节点类:
```java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
```
先序遍历:
```java
public void preorderTraversal(TreeNode root) {
if (root == null) return;
System.out.print(root.val + " ");
preorderTraversal(root.left);
preorderTraversal(root.right);
}
```
中序遍历:
```java
public void inorderTraversal(TreeNode root) {
if (root == null) return;
inorderTraversal(root.left);
System.out.print(root.val + " ");
inorderTraversal(root.right);
}
```
后序遍历:
```java
public void postorderTraversal(TreeNode root) {
if (root == null) return;
postorderTraversal(root.left);
postorderTraversal(root.right);
System.out.print(root.val + " ");
}
```
层序遍历:
```java
public void levelOrderTraversal(TreeNode root) {
if (root == null) return;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
int size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
System.out.print(node.val + " ");
if (node.left != null) queue.offer(node.left);
if (node.right != null) queue.offer(node.right);
}
}
}
```
以上代码中,使用了队列来实现层序遍历,每次将队头节点出队,并将其左右子节点入队,直到队列为空。