week2-[循环结构]找出正数 - 详解

week2-[循环结构]找出正数

题目描述

给定 NNN 个整数A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN。请求出这 NNN 个数中有多少个数是正数,并求出这些正数的平均值。如果 A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN 不存在正数,那么输出 “None”(输出时不需要输出引号)。

输入格式

读入包括 222 行。第一行只有 111 个整数 NNN,表示数的个数。第二行包括 NNN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN

输出格式

输出只有 111 行。如果 A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN 不存在正数,那么输出 “None”(输出时不需要输出引号)。如果A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN 存在至少一个正数,那么输出用恰好一个空格隔开的 222 个数,第一个数表示正数的个数,第二个数表示正数的平均值(正数的平均值四舍五入保留 333 位小数输出)。

样例 #1

样例输入 #1

5
-5 -3 0 -8 -100

样例输出 #1

None

样例 #2

样例输入 #2

6
5 -2 8 3 -4 1

样例输出 #2

4 4.250

样例 #3

样例输入 #3

5
1 2 3 4 5

样例输出 #3

5 3.000

提示

样例解释1

−5,−3,0,−8,−100-5,-3,0,-8,-1005,3,0,8,100 中不存在正数,根据题目要求输出 “None”。

样例解释2

5,−2,8,3,−4,15,-2,8,3,-4,15,2,8,3,4,1 中的正数为 5,8,3,15,8,3,15,8,3,1444 个数,因此输出正数的个数 444 与正数的平均值 5+8+3+14=4.250\dfrac{5+8+3+1}{4}=4.25045+8+3+1=4.250

样例解释3

1,2,3,4,51,2,3,4,51,2,3,4,5 中所有数都是正数,因此输出正数的个数 555 与正数的平均值 1+2+3+4+55=3.000\dfrac{1+2+3+4+5}{5}=3.00051+2+3+4+5=3.000

数据范围

对于所有数据,1≤N≤100,−10000≤A,B≤100001 \le N \le 100, -10000 \le A,B \le 100001N100,10000A,B10000

1. 阅读题目

  • 输入:
    • 第 1 行:整数 NNN(表示有多少个数)。
    • 第 2 行:NNN 个整数 A1,A2,…,ANA_1,A_2,\ldots,A_NA1,A2,,AN
  • 输出:
    • 如果没有正数 → 输出 "None"
    • 如果有正数 → 输出两个数:
      1. 正数的个数
      2. 正数的平均值(四舍五入保留 3 位小数)

2. 分析问题

  • 遍历所有 NNN 个数:
    • 统计正数的数量 cnt
    • 累加正数的和 sum
  • 判断:
    • 如果 cnt == 0 → 输出 "None"
    • 否则 → 输出 cnt平均值 = sum / cnt
  • 平均值需要 四舍五入保留 3 位小数
    • 在 C++ 中可以用 cout << fixed << setprecision(3) 来处理。
  • 时间复杂度 O(N)O(N)O(N),空间复杂度 O(1)O(1)O(1)

3. C++ 代码实现

#include
#include
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
int cnt = 0;       // 正数个数
long long sum = 0; // 正数和(防止溢出,虽然题目范围也不会溢出)
for (int i = 0; i > x;
if (x > 0) {
cnt++;
sum += x;
}
}
if (cnt == 0) {
cout << "None\n";
} else {
double avg = (double)sum / cnt;
cout << cnt << " " << fixed << setprecision(3) << avg << "\n";
}
return 0;
}

✅ 总结:

  • 用循环统计 → cntsum
  • 分支判断 → 有正数输出结果,没有输出 "None"
  • 平均值格式化 → fixed << setprecision(3) 保留 3 位小数。
posted @ 2025-08-19 13:50  wzzkaifa  阅读(17)  评论(0)    收藏  举报