题目描述:
从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值,结果保留一位小数,如果没有非负数,则平均值为0
本题有多组输入数据,输入到文件末尾,请使用while(cin>>)读入
数据范围小于1e6
输入描述:
输入任意个整数,每行输入一个。
输出描述:
输出负数个数以及所有非负数的平均值
示例:
输入:
-13
-4
-7
输出:
3
0.0
解题思路:
本题和之前的记负均正I题类似。将输入的数据分成负数和非负数,先输出负数数组的尺寸,再判断非负数数组是否尺寸为0,若为0直接输出0.0,否则它会输出nan,若不为0则用mean计算均值,再用setprecision控制小数点位数,完毕。
测试代码:
#include <iostream> #include <vector> #include <algorithm> #include <iomanip> using namespace std; double mean(vector <int>& data) { double ans = 0.0; for (int i = 0; i < data.size(); i++) { ans += data[i]; } ans = ans / data.size(); return ans; } int main() { int number; vector<int> pos; vector<int> neg; while(cin>>number) { if(number>=0) pos.push_back(number); else if(number<0) neg.push_back(number); } double result = mean(pos); cout<<neg.size()<<endl; if(pos.size()==0) { cout<<"0.0"<<endl; } else{ cout<<fixed<<setprecision(1)<<result<<endl; } return 0; }