题目描述 输入 n 个成绩,打印出所有低于平均分的分数。 输入格式 输入有 2 行。 第 1 行输入分数的个数 n (1≤n≤100)。 第 2 行输入 n 个整数(代表分数),用一个空格隔开。 输出格式 输出一行,按照输入顺序输出所有低于(<)平均分的分数,中间用一个空格隔开。 样例组输入#1 3 70 80 90 样例组输出#1 70 不能使用除了iostream的头文件
时间: 2025-03-29 18:06:38 浏览: 25
<<
要完成这个任务,我们可以先读取输入的成绩数量 `n` 和具体的成绩值,然后计算这些成绩的平均分,并筛选出所有低于该平均分的成绩进行输出。
下面是基于上述需求编写的 C++ 程序:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n; // 输入分数的数量
double sum = 0.0; // 存储总和
int score[n]; // 使用数组存储每个分数
for(int i = 0; i < n; ++i){
cin >> score[i];
sum += score[i]; // 计算总和
}
double average = sum / n; // 计算平均分
bool firstOutput = true; // 标记是否为第一个输出项
for(int i = 0; i < n; ++i){
if(score[i] < average){ // 判断是否小于平均分
if(!firstOutput) cout << " "; // 如果不是第一个输出,则加空格
cout << score[i];
firstOutput = false; // 输出后标记为非首个
}
}
cout << endl; // 换行结束程序输出
return 0;
}
```
### 解释
1. **变量声明与初始化**:
- 定义了一个整型变量 `n` 来存储用户输入的成绩总数。
- 使用了 `double sum=0.0` 来累计所有成绩之和以便于后续求平均数时保留小数精度。
- 创建一个大小为 `n` 的整型数组 `score[]` 来存放每次从标准输入中获取到的具体成绩数值。
2. **数据收集阶段**:
- 循环接收用户的每一个成绩并累加入 `sum` 变量之中同时将其存入相应的数组元素位置上。
3. **处理逻辑部分**:
- 计算了平均分 `average=sum/n`;
- 再次遍历整个数组寻找比平均分低的成绩,在找到符合要求的成绩时还要注意控制它们之间的空格正确显示(即只在非首次输出之间添加)。
4. **结果展示环节**:
- 最终将符合条件的成绩按指定规则打印出来并且保证最后一行换行符的存在使输出更加整洁美观。
此段代码满足不引入额外头文件的要求且能够准确无误地解决给定的问题。
阅读全文
相关推荐



















