本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。 输入格式: 输入在第1行中给出一个正整数n(1≤n≤10),第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。 输出格式: 输出在第1行给出平均值,保留2位小数。在第2行输出所有大于平均值的数,每个数的后面有一个空格;如果没有满足条件的数,则输出空行。 如果输入的n不在有效范围内,则在一行中输出"Invalid."。 输入样例1: 10 55 23 8 11 22 89 0 -1 78 186 输出样例1: 47.10 55 89 78 186 输入样例2: 0 输出样例2: Invalid. 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2024-03-19 09:43:34 浏览: 94
C语言程序 计算所输入的整数n的1到n总和和平均数
以下是一个 C++ 实现的代码,用于计算输入的 n 个整数的平均值,并输出所有大于平均值的数。
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n; // 读入 n
if (n < 1 || n > 10) { // n 不在有效范围内
cout << "Invalid." << endl;
return 0;
}
int a[n];
double sum = 0;
for (int i = 0; i < n; i++) {
cin >> a[i]; // 读入数组
sum += a[i]; // 累加和
}
double avg = sum / n; // 计算平均值
cout << fixed << setprecision(2) << avg << endl; // 输出平均值
bool flag = false; // 标记是否输出过大于平均值的数
for (int i = 0; i < n; i++) {
if (a[i] > avg) {
if (flag) {
cout << " "; // 输出空格
} else {
flag = true;
}
cout << a[i]; // 输出大于平均值的数
}
}
if (!flag) {
cout << endl; // 没有满足条件的数,输出空行
}
return 0;
}
```
该程序首先读入 n,如果 n 不在有效范围内,则输出 "Invalid." 并结束程序。否则,程序定义一个长度为 n 的整型数组 a,使用一个 for 循环读入 n 个整数,并累加它们的和。然后,程序计算平均值,输出到小数点后两位。接着,程序使用一个 bool 类型的变量 flag 来标记是否已经输出过大于平均值的数,如果已经输出过,则输出一个空格,否则将 flag 设为 true。最后,程序遍历整个数组,如果当前元素大于平均值,则输出它,并将 flag 设为 true。如果没有满足条件的数,则输出一个空行。
需要注意的是,程序在输出平均值时使用了 fixed 和 setprecision 函数,前者表示输出的浮点数采用固定的小数位数,后者表示小数点后保留的位数。另外,程序使用了一个 bool 类型的变量 flag 来标记是否已经输出过大于平均值的数,这种技巧在很多编程问题中都有应用。
阅读全文