输入n个整数,每个数应空格分开。输出最接近平均值的元素,有多个元素与平均值的距离相同的话,输出排序靠前的原始值.
时间: 2024-06-09 20:05:06 浏览: 38
以下是一个Python的实现:
```python
n = int(input())
nums = list(map(int, input().split()))
avg = sum(nums) / n
closest = nums[0]
for num in nums:
if abs(num - avg) < abs(closest - avg):
closest = num
elif abs(num - avg) == abs(closest - avg):
closest = min(closest, num)
print(closest)
```
首先读入输入的整数个数和每个整数的值,然后计算它们的平均值。接着,我们遍历所有整数,找到与平均值距离最近的整数,如果有多个整数与平均值的距离相同,我们就选择排序靠前的整数。最后输出最接近平均值的整数。
相关问题
在一行上输入若干整数,每个整数以一个空格分开,求这些整数的平均值。 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个字符串(仅包含数字字符和空格)。 输出格式: 对于每组测试,输出以空格分隔的所有整数的平均值,结果保留一位小数。
好的,这是一个简单的输入输出题目。我们可以使用 C++ 语言来解决这个问题。
以下是代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int t;
cin >> t; // 输入测试数据的组数
getchar(); // 处理换行符
while (t--)
{
int sum = 0, cnt = 0;
string str;
getline(cin, str); // 读取一行字符串
str += ' '; // 在字符串末尾添加一个空格,方便处理
for (int i = 0; i < str.size(); i++)
{
if (str[i] == ' ')
{
cnt++; // 统计整数的个数
}
}
int start = 0;
for (int i = 0; i < str.size(); i++)
{
if (str[i] == ' ')
{
int num = stoi(str.substr(start, i - start)); // 将字符串转化为整数
sum += num; // 统计整数的和
start = i + 1;
}
}
double avg = (double)sum / cnt; // 计算平均值
printf("%.1f\n", avg); // 输出平均值,保留一位小数
}
return 0;
}
```
代码思路如下:
首先输入测试数据的组数,然后进入循环。
在每一组测试数据中,我们先初始化两个变量 `sum` 和 `cnt`,分别用来记录整数的和和个数。
然后使用 `getline()` 函数读取一行字符串,并在字符串末尾添加一个空格,方便处理。
接下来,我们遍历字符串,统计其中整数的个数,同时使用 `substr()` 函数将字符串转化为整数,并累加到 `sum` 中。
最后,我们计算平均值,并输出结果,保留一位小数。
注意,由于输入的字符串中可能包含多个空格,我们需要使用 `getchar()` 函数处理换行符,避免对后续输入造成干扰。
希望这个解答能够帮助到你!
阅读全文