第一行包含一个整数C,测试用例的数量。C数据集如下。每个数据集以整数N开始,N是班级的人数(1 <= N <= 1000)。后面跟着N个整数,用空格或换行符分隔,每个整数表示一个学生的最终成绩(0到100之间的整数)。 输出格式: 对于每种情况,你都要输出一条线,给出成绩高于平均水平的学生的百分比,四舍五入到小数点后三位。 输入样例: 5 5 50 50 70 80 100 7 100 95 90 80 70 60 50 3 70 90 80 3 70 90 81 9 100 99 98 97 96 95 94 93 91c语言
时间: 2024-02-18 16:06:02 浏览: 161
以下是Python版本的代码实现:
```python
T = int(input()) # 读入测试用例的数量
for _ in range(T):
N = int(input()) # 读入班级的人数
scores = list(map(int, input().split())) # 读入每个学生的成绩,并转换为整数列表
avg = sum(scores) / N # 计算平均分
cnt = sum(score > avg for score in scores) # 统计成绩高于平均分的学生人数
percent = cnt / N * 100 # 计算成绩高于平均分的学生所占百分比
print(f'{percent:.3f}%') # 输出结果,保留三位小数
```
具体思路如下:
1. 读入测试用例的数量T;
2. 用for循环处理每个测试用例:
1. 读入班级的人数N;
2. 读入每个学生的成绩,并转换为整数列表scores;
3. 计算平均分avg;
4. 统计成绩高于平均分的学生人数cnt;
5. 计算成绩高于平均分的学生所占百分比percent,并输出结果。
3. 结束。
相关问题
给定一个两位正整数n,求它的数位之和。 输入 第一行包含一个整数t(1≤t≤90)- 测试用例的数量。每个测试用例给出一个两位正整数n(10≤n≤99)。 输出 对于每个测试用例,输出一个整数﹣n的数位之和。
要计算一个两位正整数n的数位之和,可以通过以下步骤来实现:
1. 确认输入的整数n为两位数,即它的范围在10到99之间。
2. 对整数n进行拆分,将其分为个位数和十位数。
3. 将个位数和十位数相加,得到数位之和。
下面是一个简单的算法步骤,可以用于编程实现:
```pseudo
function calculateDigitSum(n):
if n < 10 or n > 99:
return "输入的数字不是两位数"
// 获取十位数和个位数
ten_digit = n // 10
one_digit = n % 10
// 计算数位之和
sum_of_digits = ten_digit + one_digit
return sum_of_digits
// 读取测试用例数量
t = readInteger()
// 对每个测试用例进行操作
for i from 1 to t:
n = readInteger()
print(calculateDigitSum(n))
```
这段伪代码定义了一个计算数位之和的函数`calculateDigitSum`,并且对于每个测试用例都调用了这个函数并输出结果。
给定一个长度为 n 的数组,从小到大输出任何至少出现三次的值,如果没有这样的值,则打印 -1。 输入格式 第一行包含整数 t (1 ≤ t ≤ 104)表示测试用例的数量。 每组测试用例的第一行包含一个整数 n (1 ≤ n ≤ 2⋅105)表示数组的长度。 每组测试用例的第二行包含 n 个整数 a1,a2,...,an (1 ≤ ai ≤ n)。 保证测试用例所有 n 的和不超过 2⋅105. 输出格式 对于每组测试用例,按从小到大输出至少出现三次的任何值,如果没有此类值,则打印 -1。C语言
好的,我了解了你的问题。这是一个简单的数组问题。你可以使用计数排序或哈希表来解决它。以下是使用哈希表的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 200005
int n;
int a[MAX_N];
int main() {
int t;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
int hash[MAX_N] = {0};
for (int i = 1; i <= n; i++) {
hash[a[i]]++;
}
int flag = 0;
for (int i = 1; i <= n; i++) {
if (hash[i] >= 3) {
printf("%d ", i);
flag = 1;
}
}
if (!flag) {
printf("-1");
}
printf("\n");
}
return 0;
}
```
在这个程序中,我们首先输入测试用例的数量 t。然后对于每个测试用例,我们输入数组的长度 n 和数组本身。接下来,我们使用哈希表来计算每个数字出现的次数。最后,我们扫描哈希表并输出至少出现三次的数字。如果没有这样的数字,则输出 -1。
希望这个代码示例可以帮助你解决问题。如果你还有其他问题,请随时问我。
阅读全文